Struts旅程(六)Struts页面转发控制ActionForward和ActionMapping
来源:互联网 发布:公司网络维护外包 编辑:程序博客网 时间:2024/06/13 21:39
上篇讲述了struts控制器Action和DispatchAction以及DispatchAction,本篇主要说说struts中的页面
转发控制,struts提供了ActionForward和ActionMapping两个类来控制页面转发。
ActionForward
在使用struts框架开发web应用程序时,Action在完成用户逻辑处理后,需要把处理结果展示给用户,这个时候
就需要程序控制页面的转发,在struts中使用ActionForward对象控制程序转向。ActonForward对象是一种配置对
象,代表了一般的web资源,可以是jsp页面,servlet以及其他的Action,ActonForward对象映射的是struts配置文
件struts-config.xml中的<forward>元素,在这个元素中封装了目标页面的URI。ActionForward是struts中的核心
类,以下主要参数。
(1)Name属性:指定ActionForward名称,在其他类中也可以通过这个名字调用ActionForward。
(2)Path属性:指明了ActionForward对应的URI。
(3)redirect属性:属性设置为true时被设置为重定向,默认false。
在struts中ActionForward有全局转发ActionForward和局部转发ActionForward,全局ActionForward应用于
全部的Action和局部的转发仅仅对于当前的Action有效。
例如对用户登录的判断,提交表单后,把用户登录信息保存到session中,然后设置<forward>中redirect为
true,设置为重定向方式,然后再进行判断
<action path="/must_login" type="com.bjpowernode.struts.MustLoginAction"> <forward name="login" path="/login.jsp"redirect="true"/></action>
这样当用户已经登录的时候会给出提示已经登录。
如果有十个Action,每个都要验证是否登录,每个Action都要进行判断是否登录,如果没有登录或者超时登录
则转到Login.jsp上。<forward name=”login” path=”/login.jsp” redirect=”true”/>如果有100个Action都
要重复一百个上一行代码,因为这个forward只能被自己的这个Action使用,不能被其他的Action使用,所以我们称
为局部的Action。为了避免不必要的重复我们可以使用全局Action,代码如下所示。
<global-forwards> <forward name="login" path="/login.jsp"redirect="false"/></global-forwards>
虽然通过对session的判断和全局forward的设置,但是用户可以通过输入地址来访问jsp页面。我们可以把页面
放到WEB-INF下,WEB-INF下的页面是无法在客户端访问到的,我们把页面放到这个目录下,避免用户通过输入地
址访问到我们不想让用户访问的页面。
我们也可以自己手动转到想要转到的页面,不需要返回ActionForward对象。
//手动转向。Response.sendRedirect(request.getContextPath()+”/login.jsp”);//同时设置返回值为null。Return null;
ActionForward和动态ActionForward。
我们想要实现当用户输入1转到页面page1.jsp,输入2转到page2.jsp页面。代码如下所示。
packagecom.bjpowernode.struts; importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse; importorg.apache.struts.action.Action;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.ActionMapping; /** *动态的ActionForward * @author summer * */public classDynaActionForwardTestAction extends Action { @Override public ActionForwardexecute(ActionMapping mapping, ActionForm form, HttpServletRequestrequest, HttpServletResponse response) throwsException { intpage = Integer.parseInt(request.getParameter("page")); //自己new一个ActonForward。动态ActionForward ActionForwardaf = new ActionForward(); af.setPath("/page"+ page+".jsp"); //设置为重定向方式。 af.setRedirect(true); //如果输入时1则重定向到page1.jsp. if(page==1) { af= mapping.findForward("page1"); } //如果输入时2则重定向到page2.jsp. if(page==2) { af= mapping.findForward("page2"); } returnaf; } }
在这里采用动态ActionForward实现设置为重定向方式,而静态的ActionForw是不能动态的修改配置文件的。
ActionMapping
在struts-config.xml配置文件中,每个<action>元素都对应着一个ActionMapping,当用户请求被
ServletAction接受以后,ActionServlet会根据用户请求URL以及<action>元素设定的path属性确定对应的
ActionMapping对象,ActionMapping对象会告诉ActionServlet使用哪个Action对象处理用户请求。
ActionMapping描述了struts中用户请求路径和Action的映射关系,在struts中每个ActionMapping都是通过
path属性和一个特定的用户请求URL关联。它负责转发用户请求给具体的Action,同时还转发了其他的一些相关信
息,这种请求和处理动作之间的映射关系保存在struts-config.xml这个配置文件中,在web服务器初始化的时候,会
加载这个配置文件,struts给每个Action都创建一个ActionMapping对象,用来提供给Action使用,当
ActionServlet转发请求的时候,ActionMapping对象会被作为参数传递给Action的execute()方法。
struts的学习就总结到此,学习永远是在学习中,不是一蹴而就的,在后续的学习和项目中加深学习,加深认识。加油!
- Struts旅程(六)Struts页面转发控制ActionForward和ActionMapping
- Struts旅程(六)Struts页面转发控制ActionForward和ActionMapping
- Struts页面转发控制ActionForward和ActionMapping
- SSH旅程(六)Spring和struts结合(方案一)
- SSH旅程(六)Spring和struts结合(方案二)
- SSH旅程(六)Spring和struts结合(方案二)
- Struts旅程(一)Struts简介和原理
- Struts旅程(一)Struts简介和原理
- Struts旅程(一)Struts简介和原理
- struts的action中使用ActionForward来转发,redirect
- Struts--ActionMapping简介
- struts框架ActionMapping
- 10-struts-ActionMapping
- Struts--ActionMapping作用介绍
- 09-struts-ActionForward
- Struts 1.2笔记:ActionForward
- Struts——ActionForward
- struts旅程(二)Struts登录示例
- 通过VPNC访问CISCO的VPN服务过程记录
- MIT线性代数 矩阵与高斯消元
- ubuntu 14.04上安装opencv 2.4.13
- 制作java小程序读取数据库并替换生成新的文本
- 使用TextInputLayout时,error信息为空白
- Struts旅程(六)Struts页面转发控制ActionForward和ActionMapping
- Sirqul 的一些研究使用总结以及介绍。
- QT--base20161125 layout嵌套使用
- Android基础面试题
- 安卓定时
- 首个Adobe XD教程丨如何用Adobe Experience Design (XD)快速设计图标
- Java开发中的23种设计模式详解
- 解决eclipse+MAVEN提示One or more constraints have not been satisfied.的问题
- Javascript和Jquery之间转化