JavaWeb——Struts2的Action

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>
      &nbsp;&nbsp;
      <a href="studentAction!update">更新学生信息</a>
      </body>
    </html>
    
  • 效果如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 示例所需要的依赖库,可以去我的 GitHub 上下载:
    StrutsProject

上一篇
下一篇

发布了146 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42896653/article/details/103616885