关于struts 2框架的个人笔记

一、Struts 2应用的开发步骤

1、定义核心Filter拦截用户请求

    由于Web应用是基于请求/响应架构的应用,所以不管哪个MVC Web框架,都需要在web.xml中配置该框架的核心Servlet 或 Filter,这样才可以让该框架介入Web应用中。

2、如果需要以POST方式提交请求 ,则定义包含表单数据的JSP页面。如果仅仅只是以GET方式发送请求,则无须经过这一步

3、定义处理用户请求的Action类

    这一步也是所有MVC框架中必不可少的,因为这个Action就是MVC中的C,也就是控制器,该控制器负责调用Model里的方法来处理请求。
    这里需要重点备注一下:MVC框架的底层机制是:核心Servlet 或 Filter接收到用户请求后,通常会对用户请求进行简单预处理,例如解析、封装参数等,然后通过反射来创建Action实例,并调用Action的指定方法来处理用户请求。当Servlet 或 Filter拦截用户请求后,可以利用下面两种解决方案来知道创建哪个Action的实例:
1)利用配置文件:例如配置login.action对应使用LoginAction类。这就可以让MVC框架知道创建哪个Action的实例了。如下图,该配置片段指定如果用户请求URL为main,则使用com.crm.web.IndexAction来处理
这里写图片描述
2)利用约定:这种用法有可能受到Rails框架的启发,例如约定xxx.action总是对应XxxAction类。如果核心控制器收到regist.action请求后,将会调用RegistAction类来处理用户请求

4、配置Action

这个在3里面有讲到了,配置Action就是指定哪个请求对应用哪个Action进行处理,从而让核心控制器根据该配置来创建合适的Action实例,并调用该Action的业务控制方法。

5、配置处理结果和物理视图资源之间的对应关系

物理视图资源也就是视图页面。当Action处理用户请求结束后,通常会返回一个处理结果(通常使用简单的字符串就可以了,如:“success”),可以认为认为该名称就是逻辑视图名,这个逻辑视图名需要和指定物理视图资源关联才有价值。所以还需要配置处理结果之间的对应关系。
这里写图片描述
    比如上图中,如果返回的结果是success,则我们重定义Action(redirectAction)到namespace为”/index”的action名为main的mainAction上

6、编写视图资源

这里实际就是编写视图页面

二、Struts 2 中Action 访问Servlet API

    Struts 2的Action没有与任何Servlet API 耦合,这是Struts 2的一个改良之处,由于Action类不再与Servlet API耦合,从而能更轻松的测试该Action。
    但对于Web应用的控制器而言,不访问Servlet API几乎是不可能的。struts 2 框架提供了一种更轻松的方式访问Servlet API。Web应用中通常需要访问的Servlet API就是HttpServletRequest、HttpSession和ServletContext,这三个接口分别代表JSP内置对象中的request、session和appliaction。
    Struts 2 提供了一个ActionContext 类,Struts 2 的 Action可以通过该类来访问Servlet API。下面是ActionContext类中包含的几个常用方法。

1)Object get(Object key):该方法类似于调用 HttpServletRequest 的 getAttribute(String name)方法。

2)Map getApplication():返回一个Map对象,该对象模拟了该应用的ServletContext实例。

3)static ActionContext getContext():静态方法,获取系统的ActionContext实例。

4)Map getParameters():获取所有的请求参数。类似于调用HttpServletRequest对象的getParameterMap()方法。

5)Map getSession():返回一个Map对象,该Map对象模拟了HttpSession实例。

6)void setApplication(Map application):直接传入一个Map实例,将该Map实例里的key-value对转换成application的属性名、属性值。

7)void SetSession(Map session):直接传入一个Map实例,将该Map实例里的key-value对转换成session的属性名、属性值。

未完待续…………

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值