struts2中struts.xml和web.xml文件解析及工作原理

Struts2中struts_xml的Action配置详解 立即下载

转自:https://www.cnblogs.com/printN/p/6434526.html

web.xml

1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app id="WebApp_9" version="2.4" xmlns="http://Java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 3 
 4     <display-name>Struts Blank</display-name>
 5 
 6     <filter>
 7         <filter-name>struts2</filter-name>
 8         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
 9     </filter>
10 
11     <filter-mapping>
12         <filter-name>struts2</filter-name>
13         <url-pattern>/*</url-pattern>
14     </filter-mapping>
15 
16     <welcome-file-list>
17         <welcome-file>index.html</welcome-file>
18     </welcome-file-list>
19 
20 </web-app>
复制代码

struts.xml

1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4 "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 
 6 <struts>
 7 
 8 <!-- consant 常量,struts.devMode表示开发者模式,当为true时如果改变了其中的一些代码,可以不用重新启动tomcat-->
 9 <constant name="struts.devMode" value="true" />
10 
11 <!--package可以有多个解决重名的情况, namespace 可以不写,默认是如何路径都可以,也可以写成/xx/yy ,必须是/开头-->
12     <package name="default" namespace="/" extends="struts-default">
13 
14        <default-action-ref name="index" />
15 
16        <global-results>
17            <result name="error">/error.jsp</result>
18        </global-results>
19 
20        <global-exception-mappings>
21            <exception-mapping exception="java.lang.Exception" result="error"/>
22        </global-exception-mappings>
23 
24 <!-- action里面那个name属性值得是URL输入的路径名 ,如“http://localhost:8080/Struts2Demo/hello”,则会根据result反馈Hello.jsp-->
25        <action name="hello" class="com.styspace.struts2.action.action2">
26            <result>  /Hello.jsp</result>
27        </action>
28 
29 <!-- action里面class属性值,会有对应的这个类,执行该类里面的execute()方法-->
30 
31        <action name="action" class="com.styspace.struts2.action.action2">
32            <result name="success">/Action.jsp</result>
33        </action>
34 
35 <!-- action里面method属性值,会有对应class这个类中的add方法,然后执行该方法-->
36 
37 <action name="userAdd" class="com.bjsxt.struts2.user.action.UserAction" method="add">
38             <result>/user_add_success.jsp</result>
39         </action>
40 
41 <!-- 一般action里面不用method属性值,而是用DMI(动态方法调用)可以通过http://localhost:8080/Struts2Demo/user!addURL调用,其中user指的是action中的name值-->
42         
43         <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
44             <result>/user_add_success.jsp</result>
45         </action>
46 
47 <!-- 更简单的方法,通配符,name=“student*”会匹配URL中所有Studentxx,而method=“{1}”指的是name中第一个“*”匹配的值 同理,result中{1}也是一样的-->
48 
49 
50         <action name="Student*" class="com.bjsxt.struts2.action.StudentAction" method="{1}">
51 
52             <result>/Student{1}_success.jsp</result>
53         </action>
54 <!-- 甚至可以有多个通配符,class属性中也可以用{1}来匹配,最简化-->
55         <action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}">
56             <result>/{1}_{2}_success.jsp</result>
57             <!-- {0}_success.jsp -->
58         </action>
59 
60 
61     </package>
62     <!-- Add packages here -->
63 
64 </struts>
65 
66  

工作原理

1、在浏览器中输入http://localhost:8080/Struts2Demo/hello,就会向服务器端(tomcat)发送一个请求
 
2、tomcat会解析URL,从中找到一个webApplication(可理解为即项目名)为Struts2Demo,然后就会在这个项目里面找到web.xml文件
 
3、在web.xml中找到filter标签,然后在filter中定义的filter-class处理URL中的hello(这其中其实还包含一个步骤,就是web.xml中<url-pattern>/*</url-pattern>会过滤掉所有地址,这样地址才会被filter-class中定义的类接收到)
 
4、StrutsPrepareAndExecuteFilter接收到地址之后,首先查询namespace(在struts.xml中的package标签中的namespace中得到它的值),然后将URL中namespace值(这里是/)后面的路径读取到(这里是hello)
 
5、继续在struts的action标签中查找是否有hello这个值的,如果有且发现action中有class属性,则会new一个class中声明的类,执行里面的一个execute()方法,该方法返回一个String字符串,返回该字符串之后才能得到result中的值,如果action中没有class属性,则默认有一个ActionSupport类,该类中也有一个execute方法,返回一个String值
 
6、上一步中讲到execute()方法,但是不一定非要执行execute()方法,当action标签中有method属性时,就会执行该属性定义的方法名称,然后同样会返回一个String字符串
 
7、根据返回的String字符串(success),在result中找到name属性值为返回的String字符串的标签(这里就是Action.jsp),如果没有找到,则会返回error页面;如果action中没有class则直接找到该action下面的result中的值(这里是/Hello.jsp),然后将请求forword到Action.jsp/Hello.jsp
 
8、最后jsp反馈到客户端。

FC7300 SPI MCAL配置引导 Example - QMI8A01z外设:Example - QMI8A01z外设: 阅读详情

相关推荐

一篇教你杰理63系列蓝牙双设备主从连接传输数据过程及配置

首先打开632sdk的app_config.h文件,将宏CONFIG_APP_SPP_LE写0,将宏CONFIG_APP_MULTI写1,对应的CONFIG_BT_GATT_CLIENT_NUM写1代表我只连接一个主机设备。属性都可以修改为自己想要的属性,然后关掉文件,双击gatt_inc_generator.exe文件运行,就会自动弹出生成/更新后的gatt_profile_cfg.h文件,然后里面就是我们代码里面所需要的配置,都是十六进制表示,找到我们刚刚添加的服务属性配置,复制到代码里面去。

xiaolizaixian的博客 1378

1238求数列的和

题目描述 数列的定义如下: 数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。 输入 输入数据有多组,每组占一行,由两个整数n(n 输出 对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。 示例输入 81 4 2 2 示例输出 94.73 3.41 提示#include #include

u013087645的专栏 1367

【影像组学】用3Dslicer或Python提取影像组学特征

用3Dslicer或Python提取影像组学特征

abdslfwoeugp 1万+

数列的第一项为item,以后各项为前一项的平方根,求数列的前n项的和。

#include&lt;stdio.h&gt;#include&lt;math.h&gt; int main() {  double item,sum=0,a[1000];  int n,i;  scanf("%lf%d",&amp;item,&amp;n);  for(i=1;i&lt;=n;i++)  {   sum+=item;   item=sqrt(item);  }  printf("...

qq_42387291的博客 5161

WRF后处理避坑指南:从namelist配置到降水计算的全流程解析

本文提供了一份详尽的WRF模式后处理避坑指南,涵盖从理解wrfout文件结构、核心变量解析到累计降水计算与专业气象图绘制的全流程。重点解析了RAINC与RAINNC的正确处理方法,并分享了使用wrf-python库高效绘制位势高度叠加风场图、累计降水图等专业图表的实战技巧与代码,旨在帮助用户规避常见错误,提升后处理效率与图表质量。

weixin_29200485的博客 353

【STC8A8K64S4A12开发板】—学习PWM脉冲宽度调制

版权声明:本文为博主原创文章,转载请附上原文出处链接。 文章目录前言一、硬件设计1.PWM脉冲宽度调制介绍2.STC8A8K64S4A12系列单片机PWM介绍3.PWM配置步骤二、软件设计1.PWM寄存器汇集2.寄存器解析2.1.PWM配置寄存器PWMCFG2.2.PWM控制寄存器PWMCR2.3.PWM中断标志寄存器2.4.PWM外部异常控制寄存器2.5.PWM时钟选择寄存器2.6.PWM触发ADC计数器寄存器2.7.PWM2翻转寄存器2.8.PWMn控制寄存器2.9.PWMn电平保持控制寄存器3.PW

qq_36139768的博客 5218

zzuli OJ 1051: 平方根的和

Description 数列的定义如下:  数列的第一项为item,以后各项为前一项的平方根,求数列的前n项的和。  Input 由两个整数item(item Output  输出该数列的和,占一行,要求精度保留2位小数。 Sample Input 84 4 Sample Output 97.93 HINT  ... S

强强强子的博客 1万+

【测绘程序设计】——潮汐调和分析

最小二乘潮汐调和分析源码、使用示例及数据

C_xxy's blog 2653

[Struts2] 配置文件struts.xml和web.xml详解

配置文件struts.xml和web.xml。 其实要s

gopain 3万+

向华为学习——解读华为战略规划SP与业务计划BP流程【附全文阅读】

该方案针对大中型企业高管及战略团队,系统拆解华为SP(4-9月中长期规划)与BP(10-12月年度执行)双轨体系,形成"战略制定-业务设计-资源配置-绩效解码"闭环。SP侧重市场趋势分析、业务优先级与资源分配,BP细化KPI、预算及行动计划。通过价值树、战略解码等工具实现战略到部门/个人的目标分解,强化跨部门协同与过程管控。配套17份华为实战资料(包括战略管理、流程优化、销售组织建设等核心方法论),助力企业建立规范的战略执行体系,实现资源优化与绩效落地。

cdfunlove的博客 770

功能安全实战系列12-英飞凌TC3xx锁步核及其自检开发

本文介绍了英飞凌Tricore系列芯片的锁步核(Lockstep Core)功能及其故障注入自检机制。锁步核通过主核和检查核同步执行指令,并比较输出结果来检测硬件故障。文章详细阐述了锁步核的工作原理、使能配置方法以及故障注入自检的实现过程。故障注入测试通过专用寄存器LCLTEST触发,系统会定期自动测试比较器节点,验证锁步核的故障检测能力。当检测到异常时,会触发SMU模块的警报机制。该技术为汽车电子系统提供了重要的功能安全保障。

initiallizer的博客 922

Struts2的工作原理及文件结构(一)

==核心文件== web.xml 任何MVC框架都需要与Web应用整合,这就不得不借助于web.xml文件,只有配置在web.xml文件中servlet才会被应用价值。 通常,所有的MVC框架都需要Web应用价值一个核心控制器,对于Struts2框架而言,需要加载StrutsPrepareAndExecuteFilter,只要Web应用负责加载StrutsPrepareAndExecut...

飞鸟的轨迹 1140

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

修改Struts2的struts.xml配置文件位置

默认情况下,Struts2的配置文件名称为struts.xml,且该文件放在src根目录下。如下图所示: 如果需要修改struts.xml的位置,例如把struts.xml放到struts2文件夹下,结构如下图所示,该怎么办呢? Struts2在web.xml中的一般配置如下: struts2 org.apache.struts2.

海涛的博客 2万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Struts 2.5.17 web.xml和struts.xml默认配置

&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/

xiaoziabc的博客 346

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Struts2应用的配置文件

<br /><br />Struts2默认的配置文件为struts.xml<br /><?xml version="1.0" encoding="UTF-8"?><br /><!DOCTYPE struts PUBLIC<br />    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"<br />    "http://struts.apache.org/dtds/struts-2.0.dtd"><br /><struts>

侯上校的专栏 428

Struts2源码浅析-初始化(转载)

本文参考自:http://blog.csdn.net/java2000_wl/article/details/7572828 如果有侵犯您知识产权的地方,烦请通知本人,本人将即刻停止侵权行为 --------begin 在web.xml中配置的StrutsPrepareAndExecuteFilter类是struts2的入口类,它实现了Filter接口 ,它的init 方法为初始化入...

weixin_30835933的博客 192
上一篇: Java实现方法中基本类型参数按地址传递
下一篇: css浮动通俗讲解
有理唔理
博客等级 码龄10年 636粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值