Struts2执行配置的流程 - 极悦
首页 课程 师资 教程 报名

Struts2执行配置的流程

  • 2022-12-20 11:11:10
  • 618次 极悦

struts 2的执行流程图

整个实现过程分为两部分:

1.服务器启动->初始化过滤器->加载struts.xml

2.浏览器发送请求->过滤->struts.xml中查找动作类名->实例化动作类

每次发送请求都会实例化action类,所以发现struts的action类是多个的。(所以spring集成struts 2后,还需要配置action类为多个example。)

实现一个简单的struts 2案例

1.在web.xml中配置filter,过滤所有路径

<!-- 配置 struts 前端控制器 --> 
< filter > 
    < filter-name > struts </ filter-name > 
    < filter-class > org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </ filter- class > 
</ filter > 
< filter-mapping > 
    < filter-name > struts </ filter-name > 
    < url-pattern > /* </ url-pattern > 
</ filter-mapping >

2.准备Struts.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts 配置 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
< struts > 
    < package  name = " 22p1 "  extends = " struts-default " > 
        < action  name = " hello "  class = " cn.itcast.action.HelloAction "  method = " hello " > 
            < result  name = " success " 类型= “调度员” > /success.jsp </结果> 
        </动作> 
    </包> 
</ struts >

3.编写HelloAction

公共 类 HelloAction  { 
    /**
     * 被请求到一个类后要执行的方法:action方法
     * @返回
     */ 
    public String hello ( ) { 
        System . 出来。println ( "你好,方法执行了……" ) ; 
        返回 “成功” ;
    } 
}

4.索引.jsp

< html > 
  < head > 
    < title > $Title$ </ title > 
  </ head > 
  < body >
     <!-- struts2默认*.action的核心过滤器有无后缀url请求-->
     < a  href = " ${pageContext.request.contextPath }/hello.action " >访问 hello.action </ a > < br > 
    < a  href = " ${pageContext.request.contextPath }/hello ">访问你好</a>
   < /
 body > < / html >

5.成功.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
 < html > 
  < head > 
    < title > $Title$ </ title > 
  </ head > 
  < body > 
  < h1 >执行成功!</ h1 > 
  </ body > 
</ html >

如何从struts获取request、response、session和ServletContext

包cn . 投射。动作;
进口组织。阿帕奇。支柱2 。拦截器。ServletRequestAware ; 
进口组织。阿帕奇。支柱2 。拦截器。Servlet响应意识;
进口组织。阿帕奇。支柱2 。拦截器。会话感知;
进口组织。阿帕奇。支柱2 。效用。Servlet上下文感知;
导入javax 。小服务程序。服务小程序上下文;
导入javax 。小服务程序。网址。HttpServletRequest ; 
导入javax 。小服务程序。网址。HttpServlet 响应;
导入javax 。小服务程序。网址。HTTPSession ; 
进口爪哇。效用。地图;
公共 类 HelloAction 实现 ServletRequestAware 、 ServletResponseAware 、 SessionAware 、 ServletContextAware { 
    private HttpServletRequest httpServletRequest ; 
    私人HttpServletResponse httpServletResponse ; 
    私人地图<字符串,对象>会话;
    私有ServletContext servletContext ;    
    公共字符串你好(){
        系统。出来。println ( "你好,方法执行了……" ) ; 
        返回 “成功” ;
    }
    @Override 
    public  void  setServletRequest ( HttpServletRequest httpServletRequest )  {
        这个。httpServletRequest = httpServletRequest ; 
    }
    @Override 
    public  void  setServletResponse ( HttpServletResponse httpServletResponse )  {
        这个。httpServletResponse = httpServletResponse ; 
    }
    @Override 
    public  void  setSession ( Map < String , Object > map )  {
        这个。会话=地图;
    }
    @Override 
    public  void  setServletContext ( ServletContext servletContext )  {
        这个。servletContext = servletContext ; 
    } 
}

Struts2配置文件详解

struts 2的六个配置文件

Struts2的核心配置文件有两类,一共六个。按照加载顺序分别描述如下:

I类:内置配置文件,不可修改。

(1)default.properties

位置:struts 2-core-2.3.24.jar\ org.apache.struts2 目录

功能:定义一些常量(键值对)。一些功能开关。

(2)struts-default.xml

位置:struts 2-core-2.3.24.jar目录末尾

功能:定义Bean元素、结果集类型、拦截器等。

(3)struts-plugin.xml

位置:插件包根目录

功能:用于扩展的一些配置。

第二类:用户自定义配置文件,可修改

(1)struts.xml

位置:用户项目src下。

功能:用于用户开发的配置,如action、result等。

(2)struts.properties

位置:一般在用户项目的src下。

作用:只能用来配置一些常量(覆盖内置的default.properties中的常量配置)

也不是很好用。可以在struts.xml中直接配置常量

(3)web.xml

位置:WEB-INF目录下作用可以配置struts 2的核心filter和struts 2的一些常量(一般不用来配置常量)

注:这里的加载顺序是指常量的加载顺序struts 2配置的,不是整个web.xml文件,web.xml会在tomcat启动的时候加载。

所有配置文件的读取顺序为:1 default.properties —2、struts-default.xml —3、struts-plugin.xml —4、struts.xml —5、struts.properties —6、web.xml中的常量配置

当然,常量的配置并不是在struts.properties和web.xml中配置,在struts.xml中配置即可。

这些加载顺序都体现在struts 2的核心控制器中,源码如下:

在init方法中,调用init的initDispatcher方法加载配置文件,进入代码:

我们会发现这个方法调用调度员的 init 方法再次。进入init方法:

这一系列代码用于加载struts 2的配置文件。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交