当前位置: 首页 > news >正文

【Struts2学习笔记(5)】Struts2的处理流程及工作原理


(1)Struts2的处理流程示意图


(2)处理功能

1.StrutsPrepareAndExecuteFilter是Struts 2框架的核心控制器(在Struts 2.1.3以后 ,使用org.apache.struts2.dispatcher.FilterDispatcher已经标记为过时),它负责拦截由<url-pattern>/*</url-pattern>指定的所有用户请求,

2.当用户请求到达时,该Filter会过滤用户的请求。默认情况下,如果用户请求的路径不带后缀或者后缀以.action结尾,这时请求将被转入Struts 2框架处理,

否则Struts 2框架将略过该请求的处理。当请求转入Struts 2框架处理时会先经过一系列的拦截器,然后再到Action。与Struts1不同,

Struts2对用户的每一次请求都会创建一个Action,所以Struts2中的Action是线程安全的。

(3)Struts2的web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<display-name></display-name>

	<!-- 是在struts2-core-2.1.8jar包下的 org.apache.struts2.dispatcher.ng.filter下边的 
		StrutsPrepareAndExecuteFilter类 -->
	<!-- 在Struts 2.1.3以后 使用org.apache.struts2.dispatcher.FilterDispatcher已经标记为过时 -->

	<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>

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


(4)为应用指定多个struts配置文件

在大部分应用里,随着应用规模的增加,系统中Action的数量也会大量增加,导致struts.xml配置文件变得非常臃肿。为了避免struts.xml文件过于庞大、臃肿,提高struts.xml文件的可读性,我们可以将一个struts.xml配置文件分解成多个配置文件,然后在struts.xml文件中包含其他配置文件。下面的struts.xml通过<include>元素指定多个配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<include file="struts-user.xml"/>
	<include file="struts-order.xml"/>
</struts>

通过这种方式,我们就可以将Struts 2的Action按模块添加在多个配置文件中。


相关文章:

  • 【Struts2学习笔记(6)】Action动态方法调用
  • 【LINUX】主进程、父进程、子进程、守护进程的概念
  • 【Struts2学习笔记(7)】类型转换器的两种方法
  • Swift - 使用MapKit显示地图,并在地图上做标记
  • 【Struts2学习笔记(8)】访问或添加request/session/application属性获取HttpServletRequest / HttpSession / ServletContex
  • ehcache.xml详解
  • 【Struts2学习笔记(9)】单文件上传和多文件上传
  • 如何更改Java默认的花括号对齐方式
  • GET和POST区别和用法
  • 【Struts2学习笔记(10)】自定义拦截器管理权限访问
  • 大型网站提速方案
  • 【Struts2学习笔记(11)】对action的输入校验和XML配置方式实现对action的所有方法进行输入校验
  • 分享一百多套开发视频教程的下载地址
  • java中Object类 源代码详解
  • 史上最全Java学习视频下载地址分享
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • 4个实用的微服务测试策略
  • android图片蒙层
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • Apache的基本使用
  • Asm.js的简单介绍
  • Java面向对象及其三大特征
  • leetcode388. Longest Absolute File Path
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • React-Native - 收藏集 - 掘金
  • socket.io+express实现聊天室的思考(三)
  • Spring Cloud Feign的两种使用姿势
  • tweak 支持第三方库
  • Vue--数据传输
  • 半理解系列--Promise的进化史
  • 关于Java中分层中遇到的一些问题
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 如何学习JavaEE,项目又该如何做?
  • 三栏布局总结
  • 通过git安装npm私有模块
  • HanLP分词命名实体提取详解
  • Spring Batch JSON 支持
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (1) caustics\
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (Note)C++中的继承方式
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (生成器)yield与(迭代器)generator
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (一)Thymeleaf用法——Thymeleaf简介
  • (原+转)Ubuntu16.04软件中心闪退及wifi消失
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET 指南:抽象化实现的基类
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .Net下的签名与混淆
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • /boot 内存空间不够