Struts2知识总结

Struts2的作用

struts2的功能类似于servlet,仍然是接受请求,调用DAO进行处理,返回视图.
它相比于servlet的优势

  1. 请求和返回视图的映射关系统一配置在struts.xml文件中,不用再耦合到java代码中了,查看和修改都一目了然.
  2. 根据请求的url地址就可以直接定位到具体Action的具体方法,而不用再在servlet代码中if-else判断调用哪个方法
  3. struts2提供了相比于servlet更强大的功能,包括ognl,各种拦截器实现了更丰富的功能.

Struts2的主要知识点

struts.xml配置文件

<package name="default" namespace="/" extends="struts-default">
    <action name="hello" class="com.test.HelloAction" >
        <result name="success" type="dispatcher">/index.jsp</result>
    </action>
</package>
  • package

name="default"是包名. java中定义包的概念是为了避免类名重复,与此类似,配置文件中定义包的概念是避免action的名字重复.

namespace="/"决定了action的访问路径,默认为”“,可以接受所有路径的action,如果没有找到相应的namespace时,则使用它.namespace可以写成/ /aa /aa/bb/cc等.但建议namespace也用模块来进行命名,和package保持一致

  • action

struts2的访问路径是host/namespacename/actionname

class不写则使用默认的ActionSupport,写上就会去找具体的Action类.

  • result

result的name值与Action类的方法中返回值相匹配,name属性不写默认是success.

result的type值决定了跳转方式(最常见的是客户端/服务端跳转,跳转到视图/action),缺省类型是dispatcher(服务器端跳转到视图)

Action

Action的三种创建方式

struts.xml中action对应的class,有以下三种

  1. 普通java文件,里面有execute()方法
  2. 实现Action接口
  3. 继承自ActionSupport类(这当然是推荐的啦,因为父类中实现了很多有用的方法)

Action的动态调用方法

  1. 通过配置文件中action的method属性指定
    这个涉及到action的通配符: 星号(*)表示所有, {数字} 表示第几个通配符
    <action name="note_*" class="com.test.NoteAction" method="{1}">
    <result>/note_{1}.jsp</result>
    </action>
    
    使用通配符,理解约定优于配置的思想
  2. 动态方法调用(DMI)
    在请求url中通过链接host/namespacename/actionname!methodname 来动态指定,但这种方法在最新版本的struts2中已经默认被禁用了,所以不推荐.

Action的三种传递并接受参数的方法

在Action中添加成员属性接受参数

通过DomainModel(域模型)方式接受参数 推荐

通过实现ModelDriven接口接受参数

简单数据校验

在Action中使用addFiledError()方法设置错误信息

    this.addFieldError("name", "name is invalid");

在jsp页面中使用 标签简单处理数据校验

    <s:fieldError fieldName="name" theme="simple"/>

Action中访问web元素

Result

OGNL&Tag

Interceptor

你可能感兴趣的:(Struts2知识总结)