JavaWeb——Struts2
二、Action 对象
- Action 是一个接口对象,位于 com.opensymphony.xwork2 包中,是 Struts2 中的重要对象,任何 Struts2 的 Action 对象都要直接或间接实现此对象。
1、Action 的静态变量
- Action 对象中有 5 个静态成员变量,代表各种业务处理的结果,如下表:
静态变量 含义 SUCCESS 表示 Action 执行成功的返回值,并返回到成功页面 NONE 代表 Action 执行成功的返回值,但不需要返回到成功页面 ERROR 代表 Action 执行失败的返回值 INPUT 代表需要返回到某个输入信息的页面的返回值 LOGIN 代表需要用户登录的返回值
2、参数注入原理
- Struts2 中表单提交的数据会自动注入与 Action 对象中指定的属性,示例:
public class stuAction extends ActionSupport{ private String stu; public void setStu(String stu){ this.stu = stu; } public String getStu(){ return stu; } public String excecute(){ return SUCCESS; } }
3、Action 基本流程
- Action 的基本流程可以描述如下:
- 首先客户端浏览器向服务器发出请求,服务器将请求转送到相应的 Web 容器。Web 容器又将请求传送到 Struts2 过滤器进行请求筛选和过滤,对符合权限的请求 Struts2 过滤器将请求发送给相应的 Action,Action 执行业务逻辑,当 Action 执行成功则根据设置进行是否要转到成功页面;对不符合权限的请求直接拦截。
4、Action 示例
- 示例代码如下:
- 首先新建一个 Java 类,命名为 StudentAction。其代码如下:
package com.myCode.actionCode; import com.opensymphony.xwork2.ActionSupport; public class StudentAction extends ActionSupport{ private static final long serialVersionUID = 1L; private String student; public void setStudent(String student) { this.student = student; } public String getStudent() { return student; } public String add() throws Exception{ student="添加学生信息"; return "add"; } public String update() throws Exception{ student="更新学生信息"; return "update"; } }
- 新建两个 JSP,分别命名为 stu_add.jsp 和 stu_update.jsp,代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>添加学生信息</title> </head> <body> <center> <h1> <s:property value="student"/> </h1> </center> </body> </html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>更新学生信息</title> </head> <body> <center> <h1> <s:property value="student"/> </h1> </center> </body> </html>
- 在 web.xml 添加如下代码:
<filter> <!-- 过滤器名称 --> <filter-name>struts2</filter-name> <!-- 过滤器类 --> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <!-- Struts2过滤器映射 --> <filter-mapping> <!-- 过滤器名称 --> <filter-name>struts2</filter-name> <!-- 过滤器映射 --> <url-pattern>/*</url-pattern> </filter-mapping>
- 在 src 目录下新建一个 struts.xml,代码如下:
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <!-- <constant name="struts.enable.DynamicMethodInvocation" value="true" />--> <package name="myPackage" extends="struts-default"> <action name="first"> <!-- 定义处理成功后的映射页面 --> <result>/StrutsJSP/first.jsp</result> </action> <action name="studentAction" class="com.myCode.actionCode.StudentAction"> <result name="add">/StrutsJSP/stu_add.jsp</result> <result name="update">/StrutsJSP/stu_update.jsp</result> </action> </package> </struts>
- 在 index.jsp 页面添加如下语句:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>页面1</title> <style type="text/css"> body{ background: #9ce9dd; text-align: center; align-items: center; } </style> </head> <body> 文字 <br> <a href="first.action">请求Struts2</a> <br> <a href="studentAction!add">添加学生信息</a> <a href="studentAction!update">更新学生信息</a> </body> </html>
- 效果如下:
- 示例所需要的依赖库,可以去我的 GitHub 上下载:
StrutsProject