Web.xml中配置Struts
struts使用技巧

struts使用技巧Struts是一种Java Web应用程序框架,被广泛用于开发MVC (模型-视图-控制器)架构的Web应用程序。
它提供了在Web应用程序中使用的一组工具、类和方法,以简化开发过程。
下面是一些使用Struts的技巧:1. 使用Struts的配置文件:Struts使用一个XML配置文件来定义Web应用程序的行为和流程控制。
配置文件中定义了应用程序中的所有操作、控制器和视图之间的关系。
了解如何正确配置Struts的配置文件可以帮助开发人员更好地组织和管理应用程序。
2. 使用合适的Action类和方法:在Struts中,Action类是控制器的一部分,负责处理请求并将数据传递给视图。
了解不同类型的Action类和方法,以及它们的作用和用法,可以更好地设计和编写应用程序的控制器部分。
3. 使用合适的验证和校验:Struts提供了一组验证和校验的工具和类,可以用于验证用户输入的数据。
了解如何正确使用这些工具和类可以帮助开发人员有效地验证表单数据,并及时地反馈给用户。
4. 使用合适的模型:在Struts中,模型是应用程序的数据和业务逻辑部分。
了解如何正确使用模型可以帮助开发人员更好地组织和管理应用程序的数据和业务逻辑。
5. 使用合适的视图:在Struts中,视图负责展示数据给用户。
了解如何正确使用视图可以帮助开发人员设计和编写用户友好的界面。
6. 使用合适的标签库和EL表达式:Struts提供了一组标签库和EL表达式,可以用于更方便地处理和展示数据。
了解如何正确使用这些标签库和EL表达式可以帮助开发人员更好地展示和处理数据。
7. 使用合适的异常处理机制:在Struts中,异常处理是一个重要的部分,负责处理应用程序中可能出现的异常情况。
了解如何正确使用异常处理机制可以帮助开发人员更好地处理异常,提高应用程序的稳定性。
总之,以上是一些使用Struts的技巧。
熟练掌握这些技巧可以帮助开发人员更好地开发和管理Struts应用程序。
struts2下载(使用配置文件)

struts2下载(使用配置文件)1.第一步web.xml2.<?xml version="1.0" encoding="UTF-8"?>3.<web-app version="2.4"4.xmlns="/xml/ns/j2ee"5.xmlns:xsi="/2001/XMLSchema-instance"6.xsi:schemaLocation="/xml/ns/j2ee7./xml/ns/j2ee/web-app_2_4.xsd">8.<welcome-file-list>9.<welcome-file>index.jsp</welcome-file>10.</welcome-file-list>11.12.<filter>13.<filter-name>struts2</filter-name>14.<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>15.</filter>16.<filter-mapping>17.<filter-name>struts2</filter-name>18.<url-pattern>/*</url-pattern>19.</filter-mapping>20.21.</web-app>第二步:struts.xml1.<!DOCTYPE struts PUBLIC2."-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"3."/dtds/struts-2.0.dtd">4.<struts>5.<package name="default" extends="struts-default">6.<action name="download" class="action.DownloadAction">7.<result type="stream">8.<param name="contentType">application/octet-stream</param>9.<param name="inputName">inputStream</param>10.<param name="contentDisposition">attachment;filename="${fileName}"</param>11.<param name="bufferSize">4096</param>12.</result>13.</action>14.</package>15.</struts>当result为stream类型时,struts2会自动根据你配置好的参数下载文件。
Struts2文件配置介绍

Struts2⽂件配置介绍Struts2⽂件配置介绍struts2structs.xml⽂件配置标签package标签<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><!-- 配置post请求以及repsone的编码格式 --><constant name="struts.i18n.encoding"value="UTF-8"></constant><!-- 配置请求路径的扩展名 --><constant name="struts.action.extension"value="action,,"></constant><!-- 开启热部署 --><constant name="struts.devMode"value="true"></constant><package name="index"namespace="/"extends="struts-default"><action name=""class="erAction"method="toLogin"><result name="toLogin">/WEB-INF/view/login.jsp</result></action></package><include file="com/forward/test/web/action/struts.xml"></include></struts>配置web应⽤的不同模块,⼀般在⼀个功能模块下配置⼀个package,在当前的package下配置这个模块的多个action name属性给不同的模块起不同的名字,随便写,不重复即可namespace属性给不同的模块设置访问的根路径,可以配置成/extends属性表⽰继承, struts-default 是struts2给我们提供的⼀个packageaction标签action 标签表⽰配置⼀个请求name 属性表⽰请求路径的后缀,⼀般表⽰功能模块中的具体请求,name的名字就代表访问路径的名称class 属性表⽰当有请求过来的时候调⽤的是哪个类中的⽅法,配置全类名method 表⽰class 请求调⽤的是class 中的哪个⽅法,指的是具体的⽅法名result标签result 结果配置,⽤于设置不同的⽅法返回值,可以配置不同的返回值对应不同的视图name 属性表⽰结果处理名称,与action中的返回值对应type 属性表⽰指定哪个result 类来处理显⽰的页⾯,默认是内部转发,可以在struts-default 的⽂件中进⾏查看标签体表⽰相对路径,相对于web应⽤开始常量配置默认的常量配置在structs核⼼包中修改常量配置⽅式及加载顺序对于常量的配置, 默认加载的是structs核⼼包中的default.properties,如果通过以下3种进⾏配置,就会按照默认–>1–>2–>3 的顺序加载,后⾯设置的常量会覆盖之前设置的常量1. 在structs.xml⽂件中,在structs的根标签下,书写constant 标签进⾏配置,在项⽬中主要使⽤这种⽅式2. 在src下创建structs.properties⽂件,将内容复制到此⽂件进⾏修改3. 在web.xml⽂件中,配置context-param 第⼀种⽅式第⼆种⽅式第三种⽅式常⽤常量设置struts.i18n.encoding=UTF-8 ⽤于配置接收参数和向外输出中⽂的编码格式⼀般设置为UTF-8struts.action.extension=action, 指定访问action的路径的后缀名,使⽤, 表⽰可以有两个后缀名,可以是action也可以是没有后缀名struts.devMode = false 指定structs是否是以开发模式运⾏,能够⽀持修改配置⽂件后进⾏热部署,所以我们可以将其设置为true动态⽅法调⽤如果⼀个业务模块有多个⽅法,我们可以使⽤动态⽅法调⽤省略action的配置,设置动态⽅法调⽤有两种⽅法⽅法⼀开启动态⽅法调⽤<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>配置action的时候不写method在访问的时候输⼊⽹址http://localhost:8080/webapp/namespace/name!method ⽅法⼆ 通配符⽅式关闭动态⽅法调⽤对于⽅法名可以使⽤⼀个* 通配符,在后⾯的class和method可以使⽤{索引} 来读取前⾯的内容访问路径localhost:8080/webapp/namespace/class_methodstructs2中的默认配置<constant name ="struts.enable.DynamicMethodInvocation" value ="true"></constant><package name ="helloWorld" namespace ="/User" extends ="struts-default"><action name ="d_" class ="com.zhiyou100.struts.web.action.demo3.Demo3Action" ><result name ="success">/hello World.jsp </result></action> </package><package name ="demo3" namespace ="/User" extends ="struts-default"><action name ="*_*" class ="com.zhiyou100.struts.web.action.demo3.{1}" method ="{2}"><result name ="success">/helloWorld.jsp </result></action></package>method的默认值executeresult的默认值是successresult的type的默认值是dispatcherclass的默认值是ActionSupport 其中有execute ⽅法返回值是success配置package下的默认的action,当访问当前包下,如果找不到指定action,就会⾃动寻找默认的action <package name="default"namespace="/user"extends="struts-default"><default-action-ref name="demoAction"></default-action-ref><action name="demoAction"class="erAction"><result>/WEB-INF/view/404.jsp</result></action></package>结果跳转的⽅式结果的跳转⽅式可以通过result的type属性进⾏设置转发转发到指定页⾯对于type属性,默认是dispatcher ,就是转发到响应界⾯,可以不⽤进⾏配置转发到指定action对于type属性需要设置为chain ,并在其下⽅配置<param> 标签<result name="error"type="chain"><param name="namespace">/</param><param name="actionName"></param></result>重定向重定向到指定界⾯对于type属性,设置为redirect ,就是重定向到界⾯,如果需要进⾏重定向就必须进⾏此处的设置<result name="error"type="redirectAction"><param name="namespace">/</param><param name="actionName"></param></result>。
Jakarta Struts应用的七个经验

Jakarta Struts应用的七个经验编者按:本文叙述了作者在运用Struts过程中来之不易的若干经验和心得。
如果你是jsp和servlet开发Web应用的Java程序员,并且也正在考虑采用基于Struts的构建方法的话,那么你会在这里发现很多颇有见地同时也很有价值的信息。
1. 只在必要的时候才考虑扩展Struts框架一个好的framework有很多优点,首先,它必须能够满足用户的可预见的需求。
为此Struts为Web 应用提供了一个通用的架构,这样开发人员可以把精力集中在如何解决实际业务问题上。
其次,一个好的framework还必须能够在适当的地方提供扩展接口,以便应用程序能扩展该框架来更好的适应使用者的实际需要。
如果Struts framework在任何场合,任何项目中都能很好的满足需求,那真是太棒了。
但是实际上,没有一个框架声称能做到这一点。
一定会有一些特定的应用需求是框架的开发者们无法预见到的。
因此,最好的办法就是提供足够的扩展接口,使得开发工程师能够调整struts来更好的符合他们的特殊要求。
在Struts framework中有很多地方可供扩展和定制。
几乎所有的配置类都能被替换为某个用户定制的版本,这只要简单的修改一下Struts的配置文件就可以做到。
其他组件如ActionServlet和RequestProcessor 也能用自定义的版本代替. 甚至连Struts 1.1里才有的新特性也是按照扩展的原则来设计的。
例如,在异常处理机制中就允许用户定制异常处理的句柄,以便更好的对应用系统发生的错误做出响应。
作为框架的这种可调整特性在它更适合你的应用的同时也在很大的程度上影响了项目开发的效果。
首先,由于您的应用是基于一个现有的成熟的、稳定的framework如Struts,测试过程中发现的错误数量将会大大减少,同时也能缩短开发时间和减少资源的投入。
因为你不再需要投入开发力量用于编写基础框架的代码了。
02-Struts2的工作流程及配置文件

Struts2的工作流程及配置文件--- ---Struts2.0的流程图从图中看到Struts2的工作流程如下:1.服务器接收到的请求首先经过一组过滤器链(实际中的其他过滤器可能还包括诸如Spring 的字符过滤器CharactorEncodingFilter、V elocity的过滤器等,一般FilterDispatcher位于过滤器的最后一个执行),过滤器链按照你在web.xml中的配置顺序在接收客户请求时顺序执行,在向客户发送响应时反序执行,Struts2的核心FilterDispatcher在web.xml中的配置如下:<filter><filter-name>setCharactor</filter-name><!-- 配置字符过滤--><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param></filter><filter><filter-name>struts2</filter-name><!-- 配置Struts2过滤器--><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter><filter-mapping><filter-name>setCharactor</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>注意:如果你使用的是W ebLogic6.1作为应用服务器,需要使用FilterDispatcherCompatW eblogic61替代FilterDispatcher。
struts的过滤器

配置web.xml,配置Struts2的过滤器配置web.xml,配置Struts2的过滤器,例如:<include…/>是<struts>标签的一个子标签,它可以把其他配置文件导入进来,从而实现Struts2的模块化。
它的“file”属性定义了要导入的文件的名称——该文件要和“struts.xml”一样有着相同的结构。
在大型项目开发中,可以将项目分解为多个小模块,每个模块独立开发和管理。
我们可以为每个模块提供一个配置文件,然后对其进行配置,然后在struts.xml中使用include元素包<include file="struts-chat.xml"/><include file="struts-hangman.xml"/><include file="struts-continuations.xml"/><include file="struts-tags.xml"/><include file="struts-validation.xml"/>含这些配置文件。
例如:当我们导入文件时,一定要注意导入的顺序。
因为从文件被导入的那个点开始,该文件中的信息才能被访问到,也就是说,如果要使用另外一个文件中所定义的标签,那么该文件就必须要在被引用之前就配置好。
Bean的两种配置方法1)框架的IoC容器创建bean的实例,然后将该实例注入到框架的内部对象中。
第一种做法可以称为对象注入,它通常要用到bean的type属性,告诉容器这个对象实现了哪个接口,如果自己创建了ObjectFactory,则可以在struts-default.xml中作如下配置:。
struts2限制请求体集合大小的参数

struts2限制请求体集合大小的参数在Struts2 中,如果你想要限制请求体(通常是HTTP POST 请求的内容)的大小,你可以通过配置Struts2 的struts.xml文件或使用Struts2 的过滤器来实现。
1.在struts.xml中配置:你可以在Struts2 的struts.xml配置文件中设置struts.multipart.maxSize参数来限制上传文件的大小。
这个参数也间接地限制了请求体的大小,因为它主要用于文件上传。
xml<constant name="struts.multipart.maxSize"value="your_size_in_bytes" />这里your_size_in_bytes是你想要设置的最大请求体大小(以字节为单位)。
2. 在Web.xml 中配置:如果你使用的是Struts2 的struts2-filter,你也可以在web.xml文件中设置filter-init-param来限制请求体大小。
xml<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class><init-param><param-name>struts.multipart.maxSize</param-name><param-value>your_size_in_bytes</param-value></init-param></filter>1.注意:2.1.struts.multipart.maxSize主要用于限制文件上传的大小。
Struts2的web.xml配置

Struts2讲义(1):web.xml配置在现在开发的Web项目中,大家都是使用web.xml来实现MVC框架的应用。
既然Struts2也属于MVC 框架,因此在web.xml中必定要配置Struts2用以实现应用。
技术要点本节代码说明Struts2基本配置。
1、如何加载FilterDispatcher过滤器。
2、如何使用FilterDispatcher过滤器拦截URL。
演示代码Java 代码1.<!--------------------------------------- 文件名: web.xml-------------------------------->2.<?xml version="1.0" encoding="GB2312"?>3.<web-app xmlns=/xml/ns/j2ee4. xmlns:xsi=/2001/XMLSchema-instance5. version="2.4"6.xsi:schemaLocation="/xml/ns/j2ee7./xml/ns/j2ee/web-app_2_4.xsd">8. <filter>9. <!-- 过滤器名字 -->10. <filter-name>struts2</filter-name>11. <!-- 过滤器支持的struts2类 -->12. <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>13. </filter>14.15. <filter-mapping>16. <!-- 过滤器拦截名字 -->17. <filter-name>struts2</filter-name>18. <!-- 过滤器拦截文件路径名字 -->19. <url-pattern>/*</url-pattern>20. </filter-mapping>21. <welcome-file-list>22. <welcome-file>index.jsp</welcome-file>23. </welcome-file-list>24.</web-app>代码解释(1)在Struts1中web.xml中对它的加载都是加载一个Servlet,但是在Struts2中,因为设计者为了实现AOP(面向方面编程)概念,因此是用filter来实现的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Web.xml中配置Struts1:1.配置Struts的ActionServlet<servlet>元素来声明ActionServlet<servlet-name>元素:用来定义Servlet的名称<servlet-class>元素:用来指定Servlet的完整类名Eg:<servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class></servlet>还要配置<servlet-mapping>元素,它用来指定ActionServlet可以处理哪些URL<servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>注意:(1)<servlet-mapping>和<servlet>中的<servlet-name>?</servlet-name>的要填写一致,它就是一根线,把<servlet-mapping>和<servlet>联接在一起的。
(2)在Struts框架中只能有一个Servlet,因为Servlet支持多线程。
而<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>中的ActionServlet是在Struts.jar包中的.在导入Struts包时会导入。
(3)在显示层所有以*.do为扩展名提交的URL,都会交由这个Servlet来处理。
*.do可以改写成你想要的任何形式,例如:/do/* ,此时该Servlet会处理所有以"/do"为前缀的URL,如http://localhost:8080/helloapp/do/helloWord,扩展(1)我们可以继承org.apache.struts.action.ActionServlet 得到我们可以扩展的子类,在子类中重写一个方法init()。
这时<servlet-class>?</servlet-class>中的?是我们新建的类的路径,同样只能存在一个。
2. 声明ActionServlet的初始化参数初始化参数用来对Servlet的运行时环境进行初始配置。
<servlet>的<init-param>子元素用于配置Servlet初始化参数。
config :以相对路径的方式指明Struts应用程序的配置文件位置,如不设置,则默认值为/WEB-INF/struts-config.xmldebug : 设置Servlet的debug级别,控制日志记录的详细程度。
默认为0,记录相对最少的日志信息。
detail : 设置Digester的debug级别,Digester是Struts框架所使用的用来解析xml配置文件的一个框架,通过此设置,可以查看不同详细等级的解析日志。
默认为0,记录相对最少的日志信息。
<load-on-startup>?</load-on-startup>中?号的值是此ActionServlet在服务器开启时加载的次序,数值越低,越先加载。
eg:<servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class><init-param><param-name>config</param-name><param-value>/WEB-INF/struts-config.xml</param-value></init-param><init-param><param-name>debug</param-name><param-value>3</param-value></init-param><init-param><param-name>detail</param-name><param-value>3</param-value></init-param><load-on-startup>0</load-on-startup></servlet>扩展:(1)当服务器启动后,加载ActionServlet,而ActionServlet会调用相关的方法去,会根据它下面的参数的初始值,对这个ActionServlet中的参数时行初始化(2)当多人协作开发项目时可以对Strutst的配置文件进行适当的扩充,但必须为config 开头。
如<init-param><param-name>config/XXXXXXXXX</param-name><param-value>/WEB-INF/XXXXX.xml</param-value></init-param>3.配置错误处理Struts框架中不能处理所有的错误或异常。
当Struts框架发生不能处理所有的错误或异常时,就把错误抛给Web容器。
在默认情况下,Web容器会向用户浏览器直接返回原始的错误,为了避免可以使用<error-page>。
<erro-page><error-code>4040</error-code><location>/commmon/404.jsp</location></error-page><erro-page><error-code>4040</error-code><location>/commmon/404.jsp</location></error-page>Weg容器捕获的Java异常配置<error-page>,这时需要设置<exception-type>子元素,它用于指定Java异常类。
Web容器可能捕获如下的异常:RuntimeException 或ErrorServletException 或它的子类IOException或它的子类Eg:<error-page><exception-type>javax.servlet.ServletException</exception-type><location>/system_error.jsp</location></error-page><error-page><exception-type>java.io.IOException</exception-type><location>/system_ioerror.jsp</location></error-page>4.配置Struts标签库Struts框架提供了一些实用的客户化标签标签库,如果在应用中使用可以在web.xml中配置<taglib><taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri><taglib-location>/WEB-INF/struts-bean.tld</taglib-location></taglib><taglib>元素有两个子元素:<taglib-uri>和<taglib-location>.<taglib-uri>元素指定标签库的相对或绝对URI地址,WEB应用将根据这一URI来访问标签库;<taglib-location>元素指定标签库描述文件在文件资源系统中的物理位置。
此外,也可以以上方式在web.xml文件中配置用户自定义的客户化标签库,eg:<taglib><taglib-uri>/WEB-INF/mytaglib.tld</taglib-uri><taglib-location>/WEB-INF/mytaglib.tld</taglib-location></taglib>Struts2 核心文件Web.xml的配置:所有的MVC框架都需要Web应用加载一个核心控制器,对于Struts 2框架而言,需要加载FilterDispatcher,只要Web应用负责加载FilterDispatcher,FilterDispatcher将会加载应用的Struts 2框架。
因为Struts 2将核心控制器设计成Filter,而不是一个普通Servlet。
故为了让Web应用加载FilterDispacher,只需要在Struts2 web.xml文件中配置FilterDispatcher即可。
配置的代码片段如下:<filter><!-- filter的名字 --><filter-name>struts2</filter-name><!-- filter的实现类 --><filter-class>org.apache.Struts2.dispatcher.FilterDispatcher</filter-class></filter><!-- 处理所有的web请求 --><filter-mapping><filter-name>Struts2</filter-name> <url-pattern>/*</url-pattern></filter-mapping>。