struts之XML配置文件归纳

Struts+Spring+mybatis框架整合归纳(附源码) 本文档记录基本的框架整合过程,依照本文档可以搭建出SSM框架,并实现基本的从数据库读取、存储数据,完成简单的登录、注册功能。开发工具:IDEA 从无到有的过程比较复杂,网上也没有一个较为完整的教程,使用的开发工具也不相同。不同时期有着不同版本的依赖文件,容易引发冲突。并且整合的配置方式不止一种,网上的教程五花八门,提高了整合难度。本文档将从各项配置的详细说明,搭建流程等介绍整个搭建过程。 阅读详情

1.首先是src目录下的总配置文件struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

	<!-- 二、总配置文件:引入其他所有配置文件 -->
	
	<include file="constant.xml"></include>
	<include file="cn/sp/a_config/struts.xml"></include>
	<include file="cn/sp/b_config2/config.xml"></include>
	<include file="cn/sp/c_data/data.xml"></include>
	<include file="cn/sp/d_type/type.xml"></include>
	<include file="cn/sp/e_fileupload/upload.xml"></include>
	
</struts>

这种一般是引入其他包里的配置文件。

2.然后是配置文件的通用模板

<span style="font-size:14px;"><struts>
 <package name="config2" namespace="/" extends="struts-default">
  <!-- 配置全局跳转视图 -->
  <global-results>
   <result name="success">/index.jsp</result>
  </global-results>
  <!-- 通配符: </span><a target=_blank href="http://locahost:8080/struts02/user_login"><span style="font-size:14px;">http://locahost:8080/struts02/user_login</span></a><span style="font-size:14px;"> -->
  <action name="user_*" class="cn.itcast.b_config2.UserAction" method="{1}">
   <result name="loginSuccess" >list.jsp</result>
  </action></span>
<span style="font-size:14px;">  <action name="test2">
    <result name="success" type="redirect">/WEB-INF/index.jsp</result>
   </action></span>
<span style="font-size:14px;"> </package> 
 
</struts></span>

type默认为dispatcher即转发,如要改为重定向需写出来,同时还可以重定向到Action,type="redirectAction".

3.接着是使用struts框架自带的一些功能时涉及到的一些配置文件。

3.1常量配置

<struts>

	<!-- 一、全局配置 -->
	<!-- 0. 请求数据编码 -->
	 <constant name="struts.i18n.encoding" value="UTF-8"/>
	<!-- 1. 修改Struts默认的访问后缀 -->
	<constant name="struts.action.extension" value="action,do,"></constant>
	<!-- 2. 修改xml自动重新加载 -->
	<constant name="struts.configuration.xml.reload" value="true"/>
	<!-- 3. 开启动态方法调用 (默认不开启)-->
	<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
	<!-- 4. 修改上传文件的最大大小为30M -->
	<constant name="struts.multipart.maxSize" value="31457280"/>
	<!-- 更改主题,使用标签时用到 -->
 	<constant name="struts.ui.theme" value="simple"></constant>
</struts>

<!-- 通过常量加载资源文件 -->
 <constant name="struts.custom.i18n.resources" value="cn.sp.config.msg"></constant>

这里是加载自己写的国际化配置文件,格式为msg_en_US.properties,en是英语的简写,US是美国简写,还有默认格式msg.properties.

3.2文件上传与下载


<span style="font-size:12px;color:#33ccff;background-color: rgb(51, 102, 255);"><struts>
	<!-- 0. 请求数据编码 -->
	 <constant name="struts.i18n.encoding" value="UTF-8"/>
	 <!-- 2. 修改xml自动重新加载 -->
	<constant name="struts.configuration.xml.reload" value="true"/>
	<!-- 3. 开启动态方法调用 (默认不开启)-->
	<constant name="struts.enable.DynamicMethodInvocation" value="true"/>
	
	<package name="upload_" extends="struts-default">
		<!-- 注意: action 的名称不能用关键字"fileUpload" -->
		<action name="fileUploadAction" class="cn.itcast.e_fileupload.FileUpload">
		
			<!-- 限制运行上传的文件的类型 -->
			<interceptor-ref name="defaultStack">
				
				<!-- 限制运行的文件的扩展名 -->
				<param name="fileUpload.allowedExtensions">txt,jpg,jar</param>
				
				<!-- 限制运行的类型   【与上面同时使用,取交集】
				<param name="fileUpload.allowedTypes">text/plain</param>
				-->
				
			</interceptor-ref>
			
			<result name="success">/e/success.jsp</result>
			
			<!-- 配置错误视图 -->
			<result name="input">/e/error.jsp</result>
		</action>
		
		<action name="down_*" class="cn.itcast.e_fileupload.DownAction" method="{1}">
			<!-- 列表展示 -->
			<result name="list">/e/list.jsp</result>
			<!-- 下载操作 -->
			<result name="download" type="stream">
			
				<!-- 运行下载的文件的类型:指定为所有的二进制文件类型 -->
			   <param name="contentType">application/octet-stream</param>
			   
			   <!-- 对应的是Action中属性: 返回流的属性【其实就是getAttrInputStream()】 -->
			   <param name="inputName">attrInputStream</param>
			   
			   <!-- 下载头,包括:浏览器显示的文件名 -->
			   <param name="contentDisposition">attachment;filename=${downFileName}</param>
			 
			 	<!-- 缓冲区大小设置 -->
			   <param name="bufferSize">1024</param>
			</result>
		</action>
	</package>	
</struts></span>



3.3拦截器


<struts>
	<package name="hello" extends="struts-default">
	
		<!-- 【拦截器配置】 -->
		<interceptors>
		
			<!-- 配置用户自定义的拦截器 -->
			<interceptor name="helloInterceptor" class="cn.itcast.a_interceptor.HelloInterceptor"></interceptor>
			
			<!-- 自定义一个栈: 要引用默认栈、自定义的拦截器 -->
			<interceptor-stack name="helloStack">
				<!-- 引用默认栈 (一定要放到第一行)-->
				<interceptor-ref name="defaultStack"></interceptor-ref>
				<!-- 引用自定义拦截器 -->
				<interceptor-ref name="helloInterceptor"></interceptor-ref>
			</interceptor-stack>
			
		</interceptors>
		
		<!-- 【执行拦截器】 -->
		<default-interceptor-ref name="helloStack"></default-interceptor-ref>
		
	
		<!-- Action配置 -->
		<action name="hello" class="cn.itcast.a_interceptor.HelloAction">
			<result name="success">/index.jsp</result>
		</action>
	
	
	</package>
</struts>
这里需要注意几点:
         1.默认栈一定要放在第一行,也就是所有自定义拦截器的前面
          2.执行拦截器时根据作用范围大小不同可以分为三种写法,具体依实际需求而定。
<package name="user" extends="struts-default">
	
		<!-- 【拦截器配置】 -->
		<interceptors>
			<interceptor name="loginCheck" class="cn.itcast.interceptor.UserCheckInterceptor"></interceptor>
			<interceptor-stack name="myStack">
				<interceptor-ref name="defaultStack"></interceptor-ref>
				<interceptor-ref name="loginCheck"></interceptor-ref>
			</interceptor-stack>
		</interceptors>
		<!-- 【执行拦截器:第一种写法: 当前包下所有的acntion都执行myStack栈】
		<default-interceptor-ref name="myStack"></default-interceptor-ref>
		 -->
	
		<!-- 全局配置 -->
		<global-results>
			<result name="error">/error.jsp</result>
		</global-results>
		
		<action name="user_*" class="cn.itcast.action.UserAction" method="{1}">
			
			<!--第二种写法: 只是在这一个Action中执行myStack栈 
			<interceptor-ref name="defaultStackt"></interceptor-ref>
			<interceptor-ref name="loginCheck"></interceptor-ref>
			-->
			
			<!-- 第三种写法:执行用户栈(与第二种写法一样, 只在当前aciton中执行自定义栈) -->
			<interceptor-ref name="myStack"></interceptor-ref>
			
			
			
			<!-- 1. 登陆失败 -->
			<result name="input">/login.jsp</result>
			
			<!-- 2. 登陆成功 -->
			<result name="loginSuccess" type="redirectAction">user_list</result>
			
			<!-- 3. 列表展示 -->
			<result name="list">/WEB-INF/list.jsp</result>
			
		</action>
	</package>

补上防止表单重复提交拦截器

	<!-- 防止表单重复提交,第二步: 配置" 防止表单重复提交拦截器" -->
			<interceptor-ref name="defaultStack"></interceptor-ref>
			<interceptor-ref name="token">
				<!-- 指定拦截哪些方法需要防止表单重复提交(save) -->
				<param name="includeMethods">save</param>
			</interceptor-ref>
		
			<!-- 防止表单重复提交,第三步: 如果用户重复提交了跳转到指定的错误页面  -->
			<result name="invalid.token" type="redirectAction">emp_list</result>

第一步就是在对应的jsp页面写入<s:token></s:token>


3.4数据校验

UserAction-user_register-validation.xml这种取名方式是对特定的action中的特定方法进行数据效验,

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
 		"-//Apache Struts//XWork Validator 1.0.3//EN"
 		"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

<validators>
	
	<!-- 验证的每一个字段用field表示 -->
	<field name="user.userName">
		<!-- 指定使用的验证器 -->
		<field-validator type="requiredstring">
			<!-- 验证失败的错误提示信息 -->
			<message>用户名不能为空!</message>
		</field-validator>
	</field>
	
	<!-- 验证pwd -->
	<field name="user.pwd">
		
		<!-- 非空 -->
		<field-validator type="requiredstring">
			<message>密码不能为空!</message>
		</field-validator>
		
		<!-- 长度 -->
		<field-validator type="stringlength">
			<param name="minLength">6</param>
			<param name="maxLength">8</param>
			<message>密码必须为6-8位!</message>
		</field-validator>
	</field>
	
	<!-- 验证日期 -->
	<field name="user.birth">
		<field-validator type="date">
			<message>日期格式不对!</message>
		</field-validator>
	</field>
	
	<!-- 验证Email -->
	<field name="user.email">
		<field-validator type="email">
			<message>邮箱格式错误!</message>
		</field-validator>
	</field>
	
</validators> 		
 		


命名方式ActionClassName-validation.xml 放置在同Action的包下,默认Action中的所有方法进行校验,当然还有代码校验此处省略。




NI-HIL学习开篇 自我介绍下,四年零部件厂工作经验,一年(至今)主机厂工作经验,负责BMS/VCU方向软硬件测试。 学习目的:把握新能源汽车的测试发展趋势,顺应历史的洪流。 学习目标:1.掌握HIL开发测试流程中的IO配置、开环验证、闭环模型开发及调试、自动化测试 2.掌握第三方模型的搭建及simulink关联仿真(2019.05.21新增:需巩固练习matlab基础——2... 阅读详情

相关推荐

三大主流交易接口实战指南:XTP、CTP与数字货币API的实盘接入解析

本文深入解析了量化交易系统实现实盘交易的关键环节,聚焦于三大主流交易接口的实战接入。详细介绍了证券领域的XTP、期货领域的CTP以及数字货币交易所API的核心特性、代码封装要点与风控实践,并提供了多市场接口整合的统一架构方案,为开发者打通量化交易的“最后一公里”提供了一份接地气的实战指南。

win55的博客 1374

04.struts动作类(Action)

1.创建动作类(三种方式) 1.使用普通方式javaBean作为Action动作类,不需要继承任何父类,也不需要实现接口。 方法一定是public公用的, 返回值是字符串用来决定跳转到哪个视图 不需要参数 方法名自定义,如果不自定义的话,有个默认的方法名execute public class HelloAction { public String hello(){ Sys...

zhangyan的博客 242

基于SSM的足浴管理系统(源码+开题)

研究内容: 本研究的内容主要包括以下几个方面:首先,我们需要对现有的足浴管理系统进行深入的研究和分析,了解其优缺点;最后,我们需要对新设计的系统进行评估和优化,以满足用户的需求和提升系统的使用体验。因此,开发一种基于SSM的足浴管理系统,能够有效地解决这些问题,提高足浴服务的质量和效率。研究目的: 本研究的主要目的是设计和实现一个功能完善、操作简便、用户体验良好的基于SSM的足浴管理系统。通过对系统的研究和设计,我们希望能够为足浴服务行业提供一个高效、便捷的工具,从而推动足浴服务行业的发展。

林科程序设计 1684

Struts2第二篇【开发步骤、执行流程、struts.xml讲解、defalut-struts讲解】

前言 我们现在学习的是Struts2,其实Struts1和Struts2在技术上是没有很大的关联的。Struts2其实基于Web Work框架的,只不过它的推广没有Struts1好,因此就拿着Struts这个名气推出了Struts2框架。 因此,学习Struts2的时候,不了解Struts1是没有任何关系的。 在开山篇的时候,已经说明了为什么要引入Struts框架,其实就是为了提高开发效率...

3y 379

比Synergy更轻量!Barrier鼠标共享工具实测:5分钟实现Win/Mac/Linux三设备无缝切换

本文实测了开源免费的Barrier鼠标共享工具,详细指导用户如何在5分钟内于Windows、macOS和Linux三台设备间实现一套键鼠的无缝切换。文章对比了其与Synergy的优势,提供了分平台安装、核心服务端-客户端配置、防火墙设置等完整教程,并分享了解决连接问题的关键技巧,是提升多设备办公效率的实用指南。

weixin_29304021的博客 595

【OpenClaw企业级智能体实战】第13篇:1+N架构实战!OpenClaw多Agent数字员工军团搭建指南(含完整配置+路由策略+代码落地)

单Agent因“记忆负担重、Token消耗高、响应不精准”已难以满足复杂场景需求,而多Agent团队通过“1个编排者+N个执行者”的分工协作模式,能让效率提升300%以上。本文基于OpenClaw 2026稳定版,结合阿里云开发者社区实战案例,从核心认知、准备工作、实操流程、协作机制、安全配置五大维度,完整拆解多Agent团队搭建全流程。文中包含可直接复制执行的代码、详细配置模板、路由策略设置及常见问题排查,新手可在1-2小时内落地属于自己的“数字员工”军团,覆盖内容创作、技术支持、多平台运营等多场景。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 745

struts配置的 <package name="tutorial" extends="struts-default">

&lt;package name="tutorial" extends="struts-default"&gt;的name属性是什么     当提交一个Html的Form给Struts2框架时,数据不再是提交给服务器端的某一个JSP页面,而是提交给一个Action类。而框架根据配置文件把与该Action类对应的页面(这个页面可以是JSP页面,也可以是PDF、Excel或Applet)返回给客户端...

张 作强 BLOG 456

YOLOv12改进策略【Neck】| arXiv 2024 MAFPN:多分支辅助特征金字塔网络 | 通过双向辅助融合与异构卷积机制,解决传统PAFPN多尺度特征融合不充分与小目标检测不足问题

本文记录的是利用MAFPN颈部结构改进YOLOv12的目标检测网络模型。通过引入双向辅助融合机制优化特征处理流程,在自底向上路径利用 SAF 模块融合主干浅层特征与颈部输出,并保留浅层空间信息,为小目标检测提供更丰富细节;自顶向下路径通过 AAF 模块建立密集连接,聚合浅层高 / 低分辨率层、同级层及前层特征,均衡各层通道数后实现多向梯度信息交互,增强中 / 大目标特征表达。将其应用到中,解决传统特征金字塔在多尺度信息整合中的不足,提升多尺度目标检测的精度与特征表达的丰富性。Multi-Branch Aux

Limiiiing的博客 1254

Struts2之配置文件详解

一、常用配置 &lt;!--struts-contants.xml--&gt; &lt;struts&gt; &lt;!-- 所有匹配*.action的请求都由struts2处理 --&gt; &lt;constant name="struts.action.extension" value="action" /&gt; &lt;!-- 是否启用开发模式 --&

绣花针 1万+

全能媒体工具深度测评(下篇一):AI图文生成+全能解压+图片去文字,一键搞定素材精修

解压50多种格式,文生图,图生图

cs821984831的博客 40

Flink Web UI 如何使用和调试保姆级教程(持续更新)

Running Jobs(运行中的作业):显示正在运行的所有 Flink 作业的列表。每个作业都有一个独特的 Job ID,可以点击进入查看作业的详细信息。Completed Jobs(已完成的作业):显示已经完成或取消的作业列表。:显示当前集群中所有 TaskManager 的健康状态,包括 CPU 使用率、内存使用情况、Slot 数量等。Job Manager Configuration(JobManager 配置):显示 JobManager 的一些配置参数,帮助调试和优化 Flink 集群。

大模型大数据攻城狮的专栏 3989

手动编写struts2框架核心内容

手动编写struts2框架核心内容 首先我们要做的第一件事就是替换servlet实现能够使用普通Java类实现servlet的功能,而替换servlet我们首先要考虑到的是servlet的职能 那么servlet能做些什么? 在之前的博客中我提到了Servlet 是运行在 Web 服务器中的小型 Java 程序。Servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请...

蔡茂的博客 770

Unity Hololens2开发|(一)环境配置

开发过程中预览和调试应用:可以在电脑上的 Unity 编辑器中以播放模式本地运行应用,并将体验流式传输到 HoloLens2。将来自 HoloLens2 的输入(视线、手势、语音和空间映射)发送到电脑,在其中内容以虚拟沉浸式视图渲染。在HoloLens2设备中,打开Settings面板,依次选择Update & Security > For Developers,打开“Developer Mode”。在开发计算机中打开控制面板,依次选择“更新和安全> 开发者选项”,打开“开发人员模式”;

游戏开发小Y的博客 14万+

struts2上传文件总结归纳

这俩天由于项目需要,学习了上传文件框架,有dwr的异步上传文件,对于异步传输确实方便,但不适合form中含有文件上传的需求。也学了apache最原本的文件上传,可以满足form中含有文件上传的需求,还有struts2,个人感觉最方便了,代码简单,而且可以在struts.xml直接对上传文件的格式,大小直接进行配置,官方文档写得很好,现在根据官方文档学习的东西总结如下: 需要的依赖包:

打不死的小强 4324

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

初识Struts2

  今天来总结一下Struts2的知识点,学习编程我的思路一般是这样的:     ① why ?为什么要学这个技术(有什么优秀的地方,可以解决哪些问题?)。     ②what ? 这个技术是什么玩意?有什么牛逼的地方值得我们学习,这个技术的核心是什么。     ③How? 怎么学?基本技术都是自己自学的,我的学习思路就是,看视频,拿例子来学习知识,在敲代码的过程中理解问题。在此期间如果...

weixin_30337157的博客 171

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Struts2 Learner01

struts2的核心文件web.xml 只要是mvc都有 Servlet才会被应用加载对于struts2 需要加载StrutsPrepareAndExecuterFilter//啊哈 这些都是servlet?只要外围Web应用负责加载StrutsPrepareAndExecuterFilter,StrutsPrepareAndExecuterFilter将会加载struts2这个框架 遇...

167

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

XML配置归纳大法

Servlet配置     &lt;?xml version="1.0" encoding="UTF-8"?&gt;     &lt;web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xmlns="http://java.sun.com/xml/ns/javaee"         xsi:schemaLoc...

qq_33171210的博客 310

Struts2四种跳转方式

struts2是一个开源的框架,很久没有用了,现在做一个归纳总结。 先看一下结构组成: action: /** * 服务器传到页面 * @return */ public String ft(){ a="可以传值哦!";   System.out.println("name:"+name); System.out.println("sex:"+sex); System.o...

jhhuang4836的专栏 392

Struts+Spring+JDBC 简单配置

     项目需要,在原来Struts的基础上,配了Spring,数据库访问也用JDBC代替,由于Spring出色的控制反转,JDBC连接的工作基本上不需要考虑,只要专注于数据抽取就可以了,下边把代码贴一下,顺便说说一些小细节。Spirng和Struts结合,主要有三种方式:1,使用ActionSupport类2,覆盖RequestProcessor3,将Action委托给Spring文章中,对这

The Sky 8694

struts基本使用方法总结

一、使用struts必须先配置web.xml文件      web.xml包含一切映射联系,包含着Servlet映射、过滤器映射等,处理表单提交的一切信息。而struts也是基于Servlet的。可以出从以下配置文件看出来。 <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/X

我的博客 787

Action 1 理解Struts

        在摸索中渐渐找到了属于自己的学习方式 learn ** in action 而且喜欢上了in action 系列的书         我的记性实在不是很好 但是我知道自己擅长的是归纳和总结 加上我是完美主义者 所以到现在很多问题我都从根源上理解和解决了 所以in action 的学习方法是最适合我的          Struts的核心是MVC的控制层 它将模式和视图连接起

Vincent的造轮子经验 1769

Java EE开发四大常用框架之Struts

我们对Java EE 的框架有过很多介绍,本文将对Java EE 中常用的四个框架做一下系统的归纳,希望大家喜欢。 Struts Struts 是一个基于Sun Java EE 平台的MVC 框架,主要是采用S...

congdangjie5859的博客 224

Freemarker学习归纳(一)

转自http://www.javabc.com/Html/javakyjs/javaky_fv/2007-1/412885210.html           Freemarker                (一)一.Freemarker简介二.环境搭建与配置三.常用语法四.与Struts结合五.生成Html页面---------------------------

smile6688的专栏 1064

Spring, Hibernate与Struts集成思路

首先看一下Struts与Spring的集成。 首先看一下在struts-config.xml中需要做的改动,最开始是加入插件声明:<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> className="org.springf

liuzhongxf的专栏 402

Spring, Hibernate与Struts集成的大概思路

 这篇文章是笔者在再次读了夏昕的《Spring Guide》后的一些总结。由于本人最熟悉的是Struts,而对Spring、Hibernate还没有很多的实践经验,所以虽然这篇文章讲的是三者的集成,但主要还是以Struts为中心。首先看一下Struts与Spring的集成。首先看一下在struts-config.xml中需要做的改动,最开始是加入插件声明:struts-conf

Closed 2428

Struts2学习笔记 - HelloWorld总结

相信网上已经有很多关于struts2的HelloWorld可参考,我这里就不重复了,没个学struts2的人都会做过很多个HelloWorld,而我这里就总结一下一个简单的HelloWorld 我在一本书里面看到一个不错的结构图,我在这里引用一下《轻松掌握Struts2》 在这里我就以我自己的理解,重新归纳一次 1.由客户端(客户端可以是很多种,可以是浏览器,可以一些电脑应用,或者是手持...

weixin_30709929的博客 129
上一篇: log4j日志组件
下一篇: hibernate之关联映射
2YSP
博客等级 码龄10年 12粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值