Struts2配置介绍

1、web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--配置Struts2的前端控制器
        struts2框架开始工作的入口
        接管请求
    -->
    <filter>
        <!--名称自定义-->
        <filter-name>struts2</filter-name>
        <!--Struts2提供的控制器类-->
        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

2、Struts2.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">

<!--suppress ALL -->
<struts>
    <!--
        package分模块管理
            name 可自定义但不能重复,在一个项目中唯一
            namespace:命名空间,与url请求路径直接相关
            如:/ 请求为/hello.action   /user 请求为/user/hello.action
            extends: 继承 必须直接或者间接继承struts-default
     -->
    <package name="default" namespace="/" extends="struts-default">
        <!--配置action
        配置url和处理类的方法进行映射
        name 为请求名称,不加后缀
        class 处理类的完全限定名称  包名+类名(如果不配置,则由默认类来处理)com.opensymphony.xwork2.ActionSupport
        method 指定处理请求方法 默认为execute方法
        -->
        <action name="hello" class="cn.ht.action.HelloAction">
            <!--
             result 结果集配置
             name 结果集名称和处理方法的返回值,默认为success,可以自定义
             Struts2提供5个返回结果:
                Action.SUCCESS 执行成功,跳转到下一个视图
                Action.NONE 执行成功,不需要视图显示
                Action.ERROR 执行失败,显示失败页面
                Action.INPUT 要执行该Action 需要更多的输入条件
                Action.LOGIN 需要登录后才能执行

             type指定响应结果类型:
                dispatcher 转发 默认
                redirect  重定向

             -->
            <result name="success" type="redirect">hello.jsp</result>
        </action>
    </package>


</struts>

3、Struts2案例:

  • 新建项目
  • 将lib移到WEB-INF目录下(手动导入必要且正确的jar包,否则会报Exception starting filter struts2)
  • 配置 web.xml--配置 struts2 的核心过滤器
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <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>*.action</url-pattern>
    </filter-mapping>
</web-app>
  •  配置 struts.xml
<?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>
    <package name="default" namespace="/" extends="struts-default">
        <!-- class 处理类的完全限定名称  包名+类名 -->
        <action name="login" class="cn.ht.action.LoginAction">
            <result name="success">/success.jsp</result>
            <result name="failed">/login.jsp</result>
        </action>
    </package>
</struts>
  • 在web目录下创建login.jsp

    注:action 的提交地址.action 是扩展名,默认为.action;action 的扩展名和 web.xml 中配
    置的 struts2 的核心过滤器相匹配;也就是如果表单中提交的地址以.action 结尾,那么在配
    置 filter 的 url-pattern 时一定是: <url-pattern>*.action</url-pattern>; 

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2019-8-13
  Time: 10:01
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>STRUTS2</title>
</head>
<body>
<form action="login.action" method="post">
    用户名:<input type="text" name="name"/><br>
    密码:<input type="password" name="pwd"/><br>
    <input type="submit" value=" 登录 "/>
</form>
</body>
</html>
  • 在src下创建LoginAction 类 (注:LoginAction 中的属性名和表单中表单元素的名称要一致)
package cn.ht.action;

/**
 * @Classname LoginAction
 * @Description TODO
 * @Date 2019-8-13 10:04
 * @Created by Administrator
 */
public class LoginAction {
    private String name;
    private String pwd;
    //处理方法
    public String execute(){
        if("zhang".equals(name)&&"1234".equals(pwd)){
            return "success";
        }else{
            return "failed";
        }
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
}
  • 创建success.jsp
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2019-8-13
  Time: 12:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>登录成功!!!</h1>
</body>
</html>
  • 访问测试:

  •  输入信息-登录

整体目录结构如下:

原文地址:https://www.cnblogs.com/Anemia-BOY/p/11341772.html