struts1.0 dispatchAction、全局跳转、动态表单
2016-04-18 15:43
579 查看
Part 1 dispatchAction-分派action
1)在使用Struts动作时,每一个Action都需要编写一个类,并且要在struts-config.xml进行配置。这对于一个拥有很多Action的Web程序来说,工作量是非常大的。为此,Struts提供了DispatchAction类,这个类允许将一个Action作为一个方法来调用。在Web浏览器中通过请求参数来指定要调用的动作。
2)虽然DispatchAction类是一个抽象类,但其中却没有一个抽象方法。因此,DisplatchAction的子类不用实现任何DisplatchAction类中的方法。但是,使用分派action,往往需要自己重新命名函数
struts-config.xml中,parameter的属性值是用来区分用户的不同的请求。
映射关系图:
Part 2 全局跳转
可直接在struts-config.xml自动选中,参数设为goErr,连接到err.jsp,则所有的对应为goErr的action都跳转到err.jsp
Part 3 动态表单
在某些不确定表单的个数和类型的情况下,使用动态表单(Dynamic Form)来解决问题。
动态表单类与普通表单类的区别:
1、普通表单actionForm是首先你需要定义这样一个类,然后配置到struts-config.xml中
2、动态表单完全依赖发射机制创建,所以不要去定义表单类,直接在struts-config.xml中配置即可
1)在使用Struts动作时,每一个Action都需要编写一个类,并且要在struts-config.xml进行配置。这对于一个拥有很多Action的Web程序来说,工作量是非常大的。为此,Struts提供了DispatchAction类,这个类允许将一个Action作为一个方法来调用。在Web浏览器中通过请求参数来指定要调用的动作。
2)虽然DispatchAction类是一个抽象类,但其中却没有一个抽象方法。因此,DisplatchAction的子类不用实现任何DisplatchAction类中的方法。但是,使用分派action,往往需要自己重新命名函数
/*DispatchAction的Action方法除了方法名和execute方法不一样外,其他的都和execute方法完全一样,
Action方法名必须和用于指定动作的请求参数值一致*/ public class LoginAndLogoutAction extends DispatchAction { //该函数用于响应登录请求 public ActionForward userLogin(ActionMapping mapping,ActionForm form,HttpServletRequest request,
HttpServletResponse response) { UserForm userForm=(UserForm) form; if("123".equals.(userForm.getPassword())){ return mapping.findForward("loginok"); }else{ return mapping.findForward("gologin"); } } //该函数用于响应注销请求 public ActionForward userLogout(ActionMapping mapping,ActionForm form,HttpServletRequest request,
HttpServletResponse response) { //把用户的Session清空 request.getSession().invalidate(); return mapping.findForward("gologin"); }
struts-config.xml中,parameter的属性值是用来区分用户的不同的请求。
//这个在struts-config.xml设计模式里new Action自动配好DispatchAction自动生成 <action-mappings> <action attribute="userForm" input="/WEB-INF/ok.jsp" name="userForm" parameter="flag" path="/loginAndLogout" scope="request" type="com.cy.struts.action.LoginAndLogoutAction" validate="false" /> <forward name="loginok" path="/WEB-INF/ok.jsp"/> <forward name="gologin" path="/WEB-INF/login.jsp"/> </action> </action-mappings>
映射关系图:
Part 2 全局跳转
可直接在struts-config.xml自动选中,参数设为goErr,连接到err.jsp,则所有的对应为goErr的action都跳转到err.jsp
<global-results> <result name=”ok”>/ok.jsp</result> </global-results>
Part 3 动态表单
在某些不确定表单的个数和类型的情况下,使用动态表单(Dynamic Form)来解决问题。
动态表单类与普通表单类的区别:
1、普通表单actionForm是首先你需要定义这样一个类,然后配置到struts-config.xml中
2、动态表单完全依赖发射机制创建,所以不要去定义表单类,直接在struts-config.xml中配置即可
//如何在struts-config.xml配置动态表单 <form-beans> <form-bean name="userForm" type="org.apache.struts.action.DynaActionForm"> <!--该表单的属性是配置出来的--> <form-property name="name" type="java.lang.String"/> <form-property name="password" type="java.lang.String"/> <form-property name="email" type="java.lang.String"/> </form-bean> </form-beans>
//在action中从动态表单中取数据 public ActionForward register(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) { DynaActionForm userForm=(DynaActionForm) form; String name=userForm.get("name").toString(); String password=userForm.get("password").toString(); String email=userForm.getString("name") return mapping.findForward("registerok"); }
相关文章推荐
- java并发之CountDownLatch
- spring中xml配置与annotation注解混合
- myeclipse设置以及快捷键
- javacsv读写csv
- Add Java Exception BreakPoint
- java中的匿名内部类
- dom4j读写xml
- (13)处理静态资源(默认资源映射)【从零开始学Spring Boot】
- Eclipse保存时自动格式化代码
- Java Debug 调试
- spring InitializingBean接口与使用init-method对比
- ava.lang.OutOfMemoryError: Java heap space 的快速解决办法
- java多线程之批量操作
- 启动eclipse报错 jvm.dll问题
- struts1的运行原理(用户登录验证时序图)
- Eclipse/Myeclipse修改Java web项目名称
- 面试问到的Spring
- Java实现敏感词过滤
- java导出excel工具类
- java导出excel工具类