您的位置:首页 > 编程语言 > Java开发

深入Struts2

2016-06-22 09:38 417 查看
一、访问Servlet API

     servlet API指HttpServletRequest、HttpServletResponse、ServletContext。具体对应就是request,session,application。

     struts2提供了三种访问方式

1、ActionContext

方法中创建ActionContext对象

                 ActionContext act = ActionContext.getContext();

                act.getSession().get("name");

2、通过实现ServletRequestAware、ServletResponseAware来实现

 获得request、response对象

3、通过ServletActionContext

它是一个工具类,提供了以下静态方法。

statci PageContext getPageContext();

static HttpServletRequest  getRequest();

static HttpServletResponse getResponse();

static ServletContext  getServletContext();

二、Action的搜索顺序

1、判断package对应的namespace是否存在,若存在namespace下查找Action,若没找到报错.

2、若对应的namespace不存在,则逐层往上查找,直到找到,若没找到报错。

三、动态方法调用,三种

动态调用方法用来解决一个Action对应多个方法的问题。

三种解决方法:

1、method方法

通过在<action>标签中method属性,指定调用action的哪个方法。

2、感叹号方式 (不推荐)

要启用这种方式,需要配置参数

<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>

       3、通配符方式

<action name="helloworld_*" method="{1}">   一个*对应{1}的一个参数。

四、指定多个配置文件

struts2为了方便配置管理,可以将配置内容放到多个配置文件中,最终在struts.xml通过<include file="login.xml"></include>方式引入就可以了。

为了统一编码,最好每个配置文件中都加上,<constant name="struts.i18n.encoding" value="UTF-8"></constant>

五、默认Action

struts2为了用户友好体验,可以指定默认的action

<default-action-ref name="index"></defalut-action-ref>

其中index为对应action的名字

六、struts后缀

可以在struts.xml通过

<constant name="struts.action.extension" value="action"></constant>这种方式设置

      还可以在web.xml的过滤器配置中通过配置初始化参数的方式配置

七、接收参数

struts2可以通过以下几种方式接收参数

1、使用action属性接收参数

这种方式是在Action中定义接收参数名的属性,并定义该属性的get和set方法。

2、通过domain model方式

这种方式需要新建一个类,将接收参数以属性的方式定义在该类中,并提供相应的get和set方法

在action中让该类作为action的一个属性,并提供该属性的get和set方法。

在Jsp页面传递的参数,必须是一下方式:例如:user.username,其中User类 username是其属性,Action中有User user 属性.

   3、通过实现ModelDriven<类>接口

Action实现ModleDriven<类>接口

Action中定义 类的属性,并且进行实例化   , 不能在Action定义该属性的get、set方法。

该方法也可以接受复杂类型参数。

例如:定义   List<String> bookList   属性

JSP页面   <input type="text" name="bookList[0]"/>

例如 :定义 List<User> userList 属性

JSP页面  <input type="text" name="userList[0].username">

八、处理结果类型

struts2继承ActionSupport,有一下五种返回结果:

SUCCESS:正确执行,返回相应视图

NONE:正确执行,但不返回任何视图

ERROR:错误,跳转到错误页面

LOGIN:用户没登录,跳转到登录页

INPUT:从前端视图获取参数,在后端验证,若验证参数不通过,将自动返回该前端视图。

INPUT的实现:

要实现自动跳转,一定要实现validate()方法,并将要做的验证放到validate()方法中

当发生验证错误时,通过this.addFiledError("username","用户名不能为空")这种方式添加错误信息。

JSP页面接收错误信息:<s:fielderror name="username"></s:filederror>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts struts2.0