知识大全 JBuilder2005 Struts深度体验之改造

Posted 控制器

篇首语:游手好闲地学习,并不比学习游手好闲好。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JBuilder2005 Struts深度体验之改造相关的知识,希望对你有一定的参考价值。

JBuilder2005 Struts深度体验之改造  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   用ActionForm截获登录表单数据    原登录模块用bookstore User描述login jsp登录页面表单的数据 在switch jsp程序中通过<jsp:useBean>标签获取login jsp表单的数据 其实User类相当于Struts框架中的模型 我们将通过一个ActionForm更好地实现这个功能     ActionForm和Bean一样以属性名匹配的映射机制从HTTP请求中填充对象数据 但ActionForm比一般的Bean提供了更多的功能 Struts允许ActionForm通过validate()方法进行自校验 当数据不合法时自动转向到输出界面 此外还可以通过reset()方法 在数据填充前复位属性值     下面我们就来创建UserActionForm 替换User的功能 建立起Struts框架中的 数据模型      .指定ActionForm的Web模块及类信息    File >New >Web >在Web页中双击ActionForm图标 弹出如图 所示的对话框      图 创建UserActionForm    ·Struts config 我们前面有提到Struts 支持多个配置文件 所以你在这儿可以选择使用哪个Struts配置文件 因为我们现在还没有定义多个Struts配置文件 所以只得使用struts config xml 在开发新增图书的功能时 我们将定义另一个配置文件     ·ActionForm ActionForm的类名 这里我们填入UserActionForm     按Next到下一步      .定义ActionForm属性     图 定义ActionForm属性    通过Add 按钮为UserActionForm增加 个属性 如图 所示 特别的 如果这个ActionForm所对应的入口页面已经创建 你也可以直接通过Add from JSP 按钮 选择一个JSP页面 JBuilder会分析这个页面的表单 并将表单的数据组件名抽取为ActionForm的属性     按Next到下一步      .一些附加功能的定义     图 附加功能定义    在FormBeanName中为UserActionForm指定一个名字 一般接受JBuilder所提供的默认名即可 这个名字将在struts config xml文件用来命名UserActionForm     ActionForm比一般JavaBean强大的地方在于它可以进行数据检验 还可以进行数据复位 如果这个ActionForm最终要放到session中的 那么最好实现reset()方法 以复位ActionForm的数据 否则属性可能不会反映最新的值 这里 UserActionForm无需进行数据有效性校验 但由于UserActionForm最终需要放到session中 所以我们需要实现reset()方法 故此我们勾选Create/replace reset() method body选项     直接按Finish创建UserActionForm 再将User类的代码拷贝过来 整改后的最终代码如下所示     代码清单 以ActionForm实现的User类     package bookstore;      import java sql *;   import java text *;   import java util Date;   import javax servlet *;   import apache struts action *;      public class UserActionForm   extends ActionForm       private String userId;    private String password;    private String userName;    private String loginDatetime;    public String getPassword()      return password;           …    //复位所有属性值    public void reset(ActionMapping actionMapping HttpServletRequest servletRequest)      this userId = null;     this userName = null;     this password = null;     this loginDatetime = null;       此外 JBuilder自动在struts conf xml文件中通过<form bean>描述ActionForm UserActionForm必须和一个Action相关联 因为HTTP请求通过Struts总控制器转发给Action Struts控制器一旦发现Action有一个对应的ActionForm时 就用HTTP请求的数据填充这个ActionForm     用Action代替switch jsp的控制转换功能    我们在前面已经数落用switch jsp实现请求转换控制的缺点 Struts框架的Action是实现请求转换控制的最适合替代者     在这节里 我们就来创建一个名为LoginAction的Action 让其完美的接替switch jsp的工作     File >New >Web >在Web页中双击Action图标 启动创建Action的向导      .指定Action名字及Web模块     图 指定Web模块及Action名字    在Action中键入LoginAction作为Action的类名 其中Base class的下拉框中有许多Action基类可供选择 它们用于不同的场合 这些选项是     · apache struts action Action 标准的Action     · apache struts actions ForwardAction 相当于JSP的<jsp:forward> 方便Struts控制器进行预处理 此外 从学究的角度上来说 在JSP页面直接通过<jsp:forward>违反了MVC的分层原则 控制器无法干预     · apache struts actions IncludeAction 出于ForwardAction相似的原因 Struts推荐用IncludeAction代替JSP的<jsp:include>     · apache struts actions LookupDispatchAction 如果一个表单有多个提交按钮 不同的提交按钮执行不同的业务操作 用DispatchAction最为合适     · apache struts actions SwitchAction 用SwitchAction可在不同的Struts模块间转换     由于我们的Action需要完成用户密码验证的业务 并根据结果转换到不同的页面中 所以这个LoginAction是一个普通的Action 故我们选择 apache struts action Action     按Next到下一步      .设置Action的配置信息     图 设置LoginAction的配置信息    ·Action path 访问这个Action的URI 接受默认的/loginAction 这样我们将通过类似这样的URL 来访问这个Action     ·FormBean name 下拉框中列出Web模块中所有的ActionForm 我们选择前一小节中所创建的userActionForm 这样客户端的HTTP请求访问LoginAction时 HTTP请求所带的数据就会被Struts总控制器自动填充到userActionForm中了     ·Scope Action有两个选择 request和session 表示ActionForm在填充后将放在request对象中还是session对象中 由于我们需要在通过密码验证后 才使用户登录系统 这样就不能使userActionForm在数据填充时就放入session中 而应该在通过密码验证后 手工将其绑定到session中(UserActionForm一旦绑定到session中 其valueBound()方法就会被调用 记录用户登录日志) 故此 我们选择request     ·input JSP 输入的JSP页面 在ActionForm需要进行数据有效性自校验的情况下 如果校验失败 Struts框架总控制器将请求返回到这个输入页面上 因为UserActionForm无需进行有效性校验(在 的第 步我们没有为UserActionForm实现自校验功能) 所以无需指定输入的JSP     按Finish按钮直接创建LoginAction JBuilder自动打开Struts Config Editor 生动形象地展现用户登录模块Struts框架下的处理流程 如图 所示      图 Struts Config Editor    位于中心的/loginAction是访问LoginAction的URI 它是登录业务的控制器 Struts总控制器创建一个UserActionForm实例 并用HTTP请求的数据填充UserActionForm实例 然后将其传给LoginAction的execute()方法      .定义访问入口    现在我们需要调整login jsp表单的提交地址 使用LoginAction来处理用户登录的请求 调整后的代码如所示     代码清单 login jsp 使用LoginAction处理用户登录     <%@page contentType= text/; charset=GBK import= bookstore UserList %>   …   <form name= form method= post action= /webModule/loginAction do >用户名     <select name= userId >     <option value= selected> 登录用户 </option>      <%=UserList getUserListHTML()%>    </select>    密 码     <input name= password type= password >      <input type= submit name= Submit value= 登录 >   </form>   </body>   </>    如第 行所示 将原来action= switch jsp 改为 /webModule/loginAction do 由于我们需要将整个应用部署于/webModule的URI下 所以需要在Action访问的地址前加上/webModule 如果通过Struts的<:form>标签来指定表单提交的地址 则无需添加/webModule 标签将自动进行转换 你将在本专题后续内容中学习到这种方法     注意     Struts框架总控制器Servlet通过路径匹配的方式截获HTTP请求 其匹配串是* do 表示URL以 do结束的HTTP请求才会被Struts框架处理 否则Struts忽略之 所以在写链接地址时千万不要忘了调用地址后加一个 do的后缀 cha138/Article/program/Java/ky/201311/28947

相关参考

知识大全 JBuilder2005单元测试体验之测试配置

JBuilder2005单元测试体验之测试配置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在

知识大全 JBuilder 2005代码审查功能体验(1)

JBuilder2005代码审查功能体验(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  代

知识大全 JBuilder 2005代码审查功能体验(2)

JBuilder2005代码审查功能体验(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  命

知识大全 JBuilder2005单元测试之JUnit框架

JBuilder2005单元测试之JUnit框架  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 JBuilder2005单元测试之创建测试固件

JBuilder2005单元测试之创建测试固件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在

知识大全 用JBuilder 2005实现重构之认识重构

用JBuilder2005实现重构之认识重构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  为什

知识大全 JBuilder2005创建开发文档之编写注释

JBuilder2005创建开发文档之编写注释  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  可

知识大全 JBuilder2005实现重构之分布式重构

JBuilder2005实现重构之分布式重构  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  由于

知识大全 JBuilder2005单元测试之捆绑多个用例

JBuilder2005单元测试之捆绑多个用例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  目

知识大全 JBuilder2005实现重构之重构前的侦察

JBuilder2005实现重构之重构前的侦察  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  有