Struts2的开发过程

总述

Struts2的开发流程为:

  1. 在web.xml文件中定义核心Filter拦截用户请求;

  2. 定义处理用户请求的Action类,并对其进行配置;

  3. 配置处理结果和物理资源视图之间的对应关系;

  4. 编写视图资源。

Struts2版本为2.5.14.1

定义Filter过滤器

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>struts2</filter-name>
    <!-- 拦截所有请求 -->
    <url-pattern>/*</url-pattern>
</filter-mapping>

filter-name应保持一致,

定义Action类并进行配置

定义

com.action包下定义,例子:

//学生Action类
public class StudentsAction extends ActionSupport {
    //默认的调用方法
    public String execute(){
        ...
        return SUCCESS;
    }

    //查询所有学生的动作
    public String query(){
        ...
        return "query_success";
    }

    //删除学生动作
    public String delete(){
        ...
        return "delete_success";
    }

    //添加学生动作
    public String add(){
        ...
        return "add_success";
    }

    //修改学生资料动作
    public String modify(){
        ...
        return "modify_success";
    }

    //修改学生资料保存动作
    public String save(){
        ...
        return "save_success";
    }
}

其中Action类必须继承ActionSupport父类,querydelete等为用户自定义的方法。

配置

具体配置过程见 Struts2 | 配置Action

struts.xml应位于src目录下,如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>

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

    <package name="Users" namespace="/users" extends="struts-default">
        <action name="*_*" class="com.action.{1}Action" method="{2}">
            <result name="login_success">/users/Users_login_success.jsp</result>
            <result name="login_failure">/users/Users_login.jsp</result>
            <result name="logout_success">/users/Users_login.jsp</result>
            <allowed-methods>login,logout</allowed-methods>
            <!--<allowed-methods>logout</allowed-methods>-->
        </action>
    </package>

    <package name="Students" namespace="/students" extends="struts-default">
        <action name="*_*" class="com.action.{1}Action" method="{2}">
            <result name="Students_query_success">/students/Students_query_success.jsp</result>
            <result name="delete_success" type="chain">Students_query</result>
            <result name="add_success">/students/Students_add_success.jsp</result>
            <result name="modify_success">/students/Students_modify.jsp</result>
            <result name="save_success">/students/Students_modify_success.jsp</result>
            <allowed-methods>query,delete,add,modify,save</allowed-methods>
        </action>
    </package>

</struts>

所有package必须直接或间接继承struts-deafault

重要:自定义动态方法,必须加上allowed-methods属性!

action中,class为定义的Action类;method为自定义的调用方法,不写则默认为execute

配置对应关系

见上图中的result

result中,name为自定义调用方法中所返回的String字符串,不写则默认为SUCCESS;type属性指定结果类型,默认为dispatcher类型,表示指定JSP作为视图的结果类型;当type=chain时,是Action链式处理的结果类型,表示调用Action类。还有plainTextredirectredirectAction等类型,暂不考虑。

JSP页面中,如下:

<form name="addForm" action="/students/Students_add.action" method="post">
<table>
  ...
</table>
</form>

其中action对应struts.xmlactionname属性。

编写视图资源

嗯,如题。

猜你喜欢

转载自blog.csdn.net/Hello_Peter_Chan/article/details/81582562