Home StrutsMVCDemo - Struts2配置步骤(2.2.3)
Post
Cancel

StrutsMVCDemo - Struts2配置步骤(2.2.3)

步骤

  1. 导入jar包,核心包struts2-core.xxx.jar、xwork-core.xxx.jar。
  2. 在Web项目上,支持Struts2特性:在web.xml中定义一个filter。这个filter就是FilterDispatcher类的具体实现类:StrutsPrepareAndExecuteFilter

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
     <filter>
         <filter-name>struts2</filter-name>
         <filter-class>
             org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
         </filter-class>
     </filter>
     <filter-mapping>
         <filter-name>struts2</filter-name>
         <url-pattern>/*</url-pattern>
     </filter-mapping>
    
  3. 创建视图层,我们使用JSP技术,创建了三个不同的页面。
  4. 创建Action模型类,PersonAction类。
  5. 创建配置文件struts.xml文件,名字默认“struts.xml”。
  6. 过滤器会读取“struts.xml”。
  7. struts.xml文件中,继承struts-default。

    1
    
     <package name="person" namespace="/person" extends="struts-default">
    

    相当于我们有了Struts2提供的默认的拦截器或拦截器栈配置。例如:

    • 处理乱码
    • 封装请求数据
    • 国际化
    • ServletContext
    • ServletConfig
    • Session
    • Request
  8. 配置action,对应url和action类;以及返回的result视图。
  9. 启动Tomcat。

目录结构

web.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns="http://java.sun.com/xml/ns/javaee" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
                    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
         id="WebApp_ID" version="2.5">
    <display-name>Struts2MVCDemo</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

struts.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
    <!-- 不需要默认Spring容器管理Struts -->
    <constant name="struts.objectFactory" 
              value="com.opensymphony.xwork2.ObjectFactory"></constant>
    
    <!-- hello1请求       
        必须要指定name属性;      
        namespace命名空间     
        package就是要区分请求包名
    -->
    <package name="person" namespace="/person" extends="struts-default">
            <action name="hello1" class="com.bbs.action.PersonAction">
                    <result name="success">/WEB-INF/success.jsp</result>
            </action>
    </package>
</struts>

PersonAction.java

1
2
3
4
5
6
7
8
9
10
11
12
package com.bbs.action;
 
// struts2 Action层
public class PersonAction {
      
       // 默认执行
       public String execute() {
              // 返回result结果,视图名字
              return "success";
       }
      
}

index.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Index页面</title>
</head>
<body>
index
    <a href="http://localhost:8080/Struts2MVCDemo/person/hello1">
        请求链接-------PersonAction中的方法
    </a>
</body>
</html>

success.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Success页面</title>
    </head>
    <body>
        success
    </body>
</html>

error.jsp

1
2
3
4
5
6
7
8
9
10
11
12
13
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Error页面</title>
    </head>
    <body>
        success
    </body>
</html>

异常

由于我们使用的是独立的Struts2的jar包,所以关闭使用Spring的管理即可解决以上异常。正常的项目中是不需要关闭的。

1
2
3
<!-- 不需要默认Spring容器管理struts -->
<constant name="struts.objectFactory" 
          value="com.opensymphony.xwork2.ObjectFactory"></constant>
This post is licensed under CC BY 4.0 by the author.