struts2中struts.xml配置文件的详解
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>。
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。
Struts2中 struts.xml的Action配置详解
Struts2中struts.xml的Action配置详解使用package可以将逻辑上相关的一组Action,Result,Interceptor等组件分为一组,Package 有些像对象,可以继承其他的Package,也可以被其他package继承,甚至可以定义抽象的Package。
由于struts.xml文件是自上而下解析的,所以被继承的package要放在继承package的前边。
Namespace将action分成逻辑上的不同模块,每一个模块有自己独立的前缀。
使用name space可以有效的避免action重名的冲突,例如每一个package都可以有自己独立的Men u和Help action,但是事项方式各有不同。
Struts2标签带有namespace选项,可以根据namespace的不同向服务器提交不同的package的action的请求。
“/”表示根namespace,所有直接在应用程序上下文环境下的请求(Context)都在这个pa ckage中查找。
“”表示默认namespace,当所有的namespace中都找不到的时候就在这个namespace中寻找。
例如,有如下配置:CODE:<package name="default"><action name="foo" class="mypackage.simpleAction><result name="success" type="dispatcher">greeting.jsp</result></action><action name="bar" class="mypackage.simpleAction"><result name="success" type="dispatcher">bar1.jsp</result></action></package><package name="mypackage1" namespace="/"><action name="moo" class="mypackage.simpleAction"><result name="success" type="dispatcher">moo.jsp</result></action></package><package name="mypackage2" namespace="/barspace"><action name="bar" class="mypackage.simpleAction"><result name="success" type="dispatcher">bar2.jsp</result></action></package>1 如果请求为/barspace/bar.action查找namespace:/barspace,如果找到bar则执行对应的action,否则将会查找默认的n amespace,在上面的例子中,在barspace中存在名字为bar的action,所以这个action 将会被执行,如果返回结果为success,则画面将定为到bar2.jsp2 如果请求为/moo.action根namespace('/')被查找,如果moo action存在则执行,否则查询默认的namespace,上面的例子中,根namespace中存在moo action,所以该action被调用,返回success 的情况下画面将定位到moo.jsp、Action配置在struts2框架中每一个Action是一个工作单元。
Struts2配置详解2 配置Action
配置ActionStruts2的核心功能是action,对于开发人员来说,使用Struts2主要就是编写action,action类通常都要实现com.opensymphony.xwork2.Action接口,并实现该接口中的execute()方法。
该方法如下:public String execute() throws ExceptionStruts2并不是要求所有编写的action类都要实现Action接口,也可以直接编写一个普通的Java类作为action,只要实现一个返回类型为String的无参的public方法即可:public String xxx()在实际开发中,action类很少直接实现Action接口,通常都是从com.opensymphony.xwork2.ActionSupport类继承,ActionSupport实现了Action接口和其他一些可选的接口,提供了输入验证,错误信息存取,以及国际化的支持,选择从ActionSupport继承,可以简化action的定义。
开发好action之后,好需要对action进行配置,以告诉Struts2框架,针对某个URL的请求应该交由哪个action进行处理。
1.Action映射:action映射是Struts2框架中的基本”工作单元”,action映射就是将一个请求URL(即action的名字)映射到一个action类,当一个请求匹配某个action的名字时,框架就使用这个映射来确定如何处理请求。
action元素的完整属性表例如:<action name="user" class="erAction"><result name="success">/user.jsp</result></action>2. 使用method属性在配置action时,我们可以通过action元素的method属性来指定action调用的方法,所指定的方法,必须遵循与execute方法相同的格式。
struts.xml配置详解
struts.xml是我们在开发中利用率最高的文件,也是Struts2中最重要的配置文件。
分别介绍一下几个struts.xml中常用到的标签1、<include>利用include标签,可以将一个struts.xml配置文件分割成多个配置文件,然后在struts.xml 中使用<include>标签引入其他配置文件。
比如一个网上购物程序,可以把用户配置、商品配置、订单配置分别放在3个配置文件user.xml、goods.xml和order.xml中,然后在struts.xml中将这3个配置文件引入:struts.xml:01<?xml version="1.0"encoding="UTF-8"?>02<!DOCTYPE struts PUBLIC03"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 04"/dtds/struts-2.0.dtd">0506<struts >07<include file="user.xml"/> 08<include file="goods.xml"/> 09<include file="order.xml"/>10</struts >user.xml:01<?xml version="1.0"encoding="UTF-8"?>02<!DOCTYPE struts PUBLIC03"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 04"/dtds/struts-2.0.dtd">0506<struts >07<package name="wwfy"extends="struts-default">08<action name="login"class="er.LoginAction"> 09<!--省略Action其他配置-->10</action>11<action name="logout"class="er.LogoutAction"> 12<!--省略Action其他配置-->13</action>14</package>15</struts >2、<constant>在之前提到struts.properties配置文件的介绍中,我们曾经提到所有在struts.properties文件中定义的属性,都可以配置在struts.xml文件中。
struts2中struts.xml文件详解
<result-types>
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>
</action>
</package>
</struts>
上面代码的两个动作的class属性都指向同一个类,name为这个类起了两个动作别名:test和my。在动作my中,使用了method属性指定要要运行的方法名为my。
在MyAction类中必须要有my方法,代码如下:
<struts>
<package name="demo" extends="struts-default"
>
<action name="test" class="action.MyAction">
</action>
<action name="my" class="action. MyAction" method="my">
<?xml version="1.0" encoding="UTF-8" ?>
struts2入门教程一(环境搭建,基本案例实现)CSDN
Struts2入门初步需掌握1.struts2概述2.struts2环境搭建(第一个struts2的应用程序)3.struts.xml文件配置详解4.struts2请求的URL的搜索路径的顺序概述5.struts2工作原理概述6.struts2指定多个配置文件7.struts2动态方法调用8.使用通配符定义action一:简介Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。
其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。
虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。
二:环境搭建搭建Struts2环境时,我们一般需要做以下几个步骤的工作:1.找到开发Struts2应用需要使用到的jar文件.下载官网:/download.cgi#struts221解压后:开始学习使用依赖的最基本的jar 包2:编写Struts2的配置文件解压其中一个案例在此目录下找到struts.xml 文件先拷贝到项目的src 下。
再对起进行修改。
删除剩余如下代码:[html]01.<?xml version ="1.0"encoding ="UTF-8" ?> 02.<!DOCTYPE struts PUBLIC 03."-//Apache Software Foundation//DTD StrutsConfiguration 2.3//EN" 04."/dtds/struts-2.3.dtd"> 05.06.<struts> 07.08. </struts>无法加载插件。
struts2配置文件
struts.xml
命名空间
在web中如果有需要多个同名的action,可以通过 <package>元素的namespace属性指定命名空间来管 理action。
<package name="test" extends="struts-default"> ,如果未指 定命名空间,则命名空间默认为 “ namespace="" ”。
<package name="get" extends="struts-default" namespace="/apple">
<action name="getUsers" class="org.GetUsersAction"> http://localhost:8080/web应用名/apple/getUsers.action
struts.xml
<action>标签
<action name=""> <result>.</result> </action> 该action定义可以列出web应用根路径下的所有 页面
9
struts.xml
<result>标签
name---指定需要映射的逻辑视图名
默认为success 默认为dispatcher,转发,用于与jsp整合的结果类 型
配置struts.properties
Struts2的配置文件详解
1.3.包含配置:
在Struts2中可以将一个配置文件分解成多个配置文件,那么我们必须在struts.xml中包含其他配置文件。
<struts>
<includefile="struts-default.xml"/>
<includefile="struts-user.xml"/>
erName= userName;
}
/**
*@returnthepassword
*/
publicString getPassword() {
returnpassword;
}
/**
*@parampasswordthepasswordtoset
*/
publicvoidsetPassword(String password) {
</action>
</package>
</struts>
如上示例的配置,配置了一个名为default的包,该包下定义了一个Action。
1.2.命名空间配置:
考虑到同一个Web应用中需要同名的Action,Struts2以命名空间的方式来管理Action,同一个命名空间不能有同名的Action。
Struts2通过为包指定namespace属性来为包下面的所有Action指定共同的命名空间。
l public Map getSession():返回一个Map对象,该Map对象模拟了HttpSession实例。
l public void setSession(Map session):直接传入一个Map实例,将该Map实例里的key-value对转换成session的属性名-属性值对。
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来实现的。
struts2配置文件详解
<struts>
<!-- 指定Web应用的默认编码集,相当于调用HttpServletRequest的setCharacterEncoding方法 -->
<constant name="struts.i18n.encoding" value="UTF-8" />
<!-- 标准的UI主题,默认的UI主题为xhtml,可以为simple,xhtml或ajax -->
<cosntant name="struts.ui.theme" value="xhtml" />
<!-- spring 托管 -->
<constant name="struts.objectFactory" value="spring" />
<!--
指定加载struts2配置文件管理器,默认为org.apache.struts2.config.DefaultConfiguration
<!-- 设置默认的locale和字符编码 -->
<constant name="struts.locale" value="zh_CN" />
<constant name="struts.i18n.encoding" value="GBK" />
<!-- 该属性指定Struts 2文件上传中整个请求内容允许的最大字节数 -->
struts2
加载struts2
要使用struts2,必须在web.xml中进行配置
以过滤器的形式加载 struts2
过滤器所在包: org.apache.struts2. dispatcher.FilterDi spatcher
加载struts2
以过滤器的形式加载struts2
struts2以过滤器的形式加载到工程中,在web.xml中配置: <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
struts2中的命名空间起到模块化的作用。这个包下 的所有Action(请求的处理类),都应该以: /[命名空间名]/[Action名]来访问 命名空间的名字都应该以“/”开头,如果不配置命名 空间,则默认的就是namespace=“/”。 一个包下不能存在名字相同的Action
struts2常用配置-Action配置
name属性配置Action的名字
class属性配置Action类的完整类路径,说明 用哪个类处理提交的请求。
struts2常用配置-Action配置
LoginAction.java public class LoginAction extends ActionSupport { private String userName; private String password; public void setUserName(String userName) { erName = userName; } public void setPassword(String password) { this.password = password; } public String execute() throws Exception { return SUCCESS; } } 每个请求处理类必须继 承ActionSupport 对应页面表单元素名 对应的表单元素名必须 给出set方法 处理请求的方法。方法 名默认为execute struts2中,所提交的请求 应以.action结尾
Struts2框架配置文件详解大全
一、web.xml配置文件任何MVC框架都需要与Web应用整合,这就不得不借助于web.xml文件,只有配置在web.xml文件中Servlet才会被应用加载。
所有的MVC框架都需要web应用加载一个核心控制器,对于Struts2框架而言,需要加载FilterDispatche r,只要Web应用负责加载FilterDispatc her,FilterDispatc her将会加载饮用的Str uts2框架。
配置FilterDispatc her的代码片段如下:-------------------------------------web.xm l------------------------------------------------------------------- <?xml version="1.0"encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xmlns:web="/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID"version="2.5"><!-- 配置Struts2框架的核心Filter --><filter><!-- 配置Struts2核心Filter的名字 --><filter-name>struts2</filter-name><!-- 配置Struts2核心Filter的实现类 --><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</f ilter-class></filter><!-- 配置Filter拦截的URL --><filter-mapping><!-- 配置Struts2核心FilterDispatcher拦截所有用户请求 --><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>-------------------------------------------------------------------------------------------------------------------- 二、struts.properties配置文件Struts2框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射,以及该Action包含的Result定义等。
struts2 multipartrequest用法
struts2 multipartrequest用法Struts2 MultipartRequest 使用方法:Struts2 是一个用于构建 Java Web 应用的开源框架,它提供了许多功能和工具来简化开发过程。
其中之一就是 MultipartRequest,它是用于处理涉及文件上传的请求的。
要使用 Struts2 的 MultipartRequest,首先需要在 Struts2 的配置文件中进行相应的配置。
1. 配置 web.xml 文件:在 web.xml 文件中,将 Struts2 的过滤器配置为请求的第一个过滤器。
```xml<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>```2. 配置 struts.xml 文件:在 struts.xml 文件中,添加对文件上传的支持。
示例如下:```xml<interceptors><!-- 其他拦截器配置 --><interceptor name="fileUpload"class="org.apache.struts2.interceptor.FileUploadInterceptor" /></interceptors><action name="uploadAction" class="com.example.UploadAction"><interceptor-ref name="fileUpload" /><interceptor-ref name="defaultStack" /><result>/success.jsp</result></action>```在上述示例中,我们定义了一个名为 "uploadAction" 的 action,使用了fileUpload 拦截器和 defaultStack 拦截器栈。
Struts2的结果处理方式(请求转发、重定向)
Struts2的结果处理⽅式(请求转发、重定向)1、配置流程(1)web.xml⽂件(在web⽬录下的WEB-INF⽬录⾥⾯):对过滤器进⾏配置(这⾥是统⼀的)<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_4_0.xsd"version="4.0"><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></web-app>(2)页⾯部分:⽤于测试是否能访问到⽬标页⾯<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>hello</title></head><body><h3>hello word!</h3></body></html>(3)struts.xml:在src⽬录下(4)书写Action类:这⾥统⼀采⽤继承ActionSupport类的⽅式创建Action类2、请求转发(默认⽅式)(1)struts.xml⽂件配置:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="hello"namespace="/hello" extends="struts-default"><action name="HelloAction"class="pers.zhb.hello.HelloAction" method="execute"><result name="success" type="dispatcher">/hello.jsp</result></action></package></struts>result标签内部的属性被定义为请求转发的⽅式,请求转发为默认的访问⽅式,即使不配置该属性依旧以请求转发的⽅式访问hello.jsp(2)Action类public class HelloAction extends ActionSupport {public String execute() {return"success";}}(3)测试结果3、重定向(1)struts.xml配置⽂件<struts><package name="hello"namespace="/hello" extends="struts-default"><action name="HelloAction"class="pers.zhb.hello.HelloAction" method="execute"><result name="success" type="redirect">/hello.jsp</result></action></package></struts>(2)测试结果:4、从⼀个Action请求转发到另外⼀个Action(1)struts.xml配置⽂件:<struts><package name="hello"namespace="/hello" extends="struts-default"><action name="HelloAction1"class="pers.zhb.hello.HelloAction1" method="execute"><result name="success" type="redirect">/hello.jsp</result></action><action name="HelloAction2"class="pers.zhb.hello.HelloAction2" method="execute"><result name="success" type="chain"><param name="actionName">HelloAction1</param><param name="namespace">/hello</param></result></action></package></struts>其中package和param中的namespace属性的指定的值要保持⼀致,第⼀个param中的值为要请求转发到的Action的名称。
Struts2知识点总结
1.struts2 步骤1.创建web项目2.添加struts2的必须jar包3.添加支持(配置web.xml文件)4.创建界面和相应的action5.配置struts.xml文件6.部署运行项目2.struts2的工作流程1. 浏览器发送一个请求。
2. 核心控制器FilterDispatcher根据请求决定调用合适的Action。
3. 拦截器(Intercepter)自动对请求应用通用功能,如验证等。
4. 回调Action的execute方法,该execute方法根据请求的参数来执行一定的操作。
5. Action的execute方法处理结果信息将被输出到浏览器中,支持多种形式的视图。
3.struts2的配置文件1.web.xml2.struts.xml(核心管理Action映射) 自己配置的3.struts-default.xml是struts2框架默认加载的配置文件。
它定义struts2一些核心的bean和拦截器。
这些拦截器是以key-value对的形式配置在struts-default.xml中,其中name是拦截器名字,就是后面使用该拦截器的引用点,value则指定拦截器的实现类。
4.struts.properties(核心管理属性) 自己配置的5.default.properties(核心管理属性)4.<struts>标签下的子标签配置1.<bean type="com.opensymphony.xwork2.ObjectFactory" name="struts"class="org.apache.struts2.impl.StrutsObjectFactory" />2.<include file="struts1.xml"></include>3.<constant name=“key” value=“value” />4.<package></package>5.package标签下的配置1.<action name="loginAction" class="com.action.loginAction"><result name="success">/welcome.jsp</result><result name="error">/index.jsp</result></action>2.<global-results><result></result></global-results>3.<global-exception-mappings><exception-mapping result="error"exception="java.long.Exception"></exception-mapping></global-exception-mappings>……………………………………6.action类实现Action接口和继承ActionSupport7.通过ActionContext类获得context(request),再通过context获得session和application context.put("key","value");session.put("key","value");session.put("key","value");public class ServletActionContext (org.apache.struts2)public static PageContext getPageContext()public static HttpServletRequest getRequest()public static HttpServletResponse getResponse()public static ServletContext getServletContext()8.在action中直接使用一个对象,两种方式:1.在提交表单时name属性为:对象.xxxx2.实现ModelDriven<类类型>接口和其方法。
struts2配置及项目启动
1,Struts2的配置:1.1项目的配置:第一步:导包:将D:\software\tool\struts2\struts-2.3.16.1\apps\struts2-blank\WEB-INF\lib中的jar 包全部导入项目的lib文件夹中,其中jar包有:xw o rk-co re-2.3.16.1.j ar asm-3.3.j ar asm-co m m o ns-3.3.j ar asm-t ree-3.3.j ar co m m o ns-f i l eup l o ad-1.3.1.j ar co m m o ns-i o-2.2.j ar co m m o ns-l ang3-3.1.j ar co m m o ns-l o g g i ng-1.1.3.j ar f reem arker-2.3.19.j ar j avassi st-3.11.0.G A.j arl o g4j-1.2.17.j ar o g nl-3.0.6.j ar st rut s2-co re-2.3.16.1.j ar第二步:导入struts.xml文件文件中package可以自己定义。
第三步:编写web.xml文件其内容为struts2的核心拦截器,其他拦截去如果需要,必须写到struts2拦截器上面,否则,不起作用。
第四步:开发antion在后面详细描述;1.2开发action方式一:继承ActionSupport如果用struts2数据校验,必须继承此类。
方式二:实现Action 接口方式三:不继承任何类,不识闲任何接口1.3访问通配符通配符:在struts 中配置信息中,可以用*于{1}优化配置<package name="config" namespace="/" extends="struts-default"> 1.4 struts 中路径匹配原则1,访问路径=命名空间+action 的name 属性:public class UserAction extends ActionSupport{<!--<action name="login" class="cn.itcast.a_erAction2" method="login"> <result name="success">/index.jsp</result> </action> <action name="register" class="cn.itcast.a_erAction2" method="register"> <result name="success">/index.jsp</result> </action> --> <action name="user_*" class="cn.itcast.a_erAction2" method="{1}"> <result name="{1}">/{1}.jsp</result> </action></package><package name="config" namespace="/user" extends="struts-default"><action name="user_*" class="cn.itcast.a_erAction2" method="{1}"><result name="{1}">/{1}.jsp</result></action></package>访问的路径为:http://localhost:8080/user/user_login,其中login可以改为别的action 的name属性。
struts2的Action参数详细说明
Struts2 Action参数详细说明1,Action的配置格式基本为:<package name="包名字" extends="继承的包" namespace="空间名" > <action name="访问的名称" class="处理请求的类"><result name="处理类返回的结果名称">该结果名称所对应的JSP页面</result> </action></package>如:<package name="aa" extends="struts-default" ><action name="myaa" class="com.test.MyAction"><result name="success">/test/msg.jsp</result></action></package>访问时:<a href="myaa.action" >访问myaaAction</a>2,method属性,该属性可以把一个类的多个方法映射为多个Action,如:类文件public class MethodAction extends ActionSupport{public String add(){return SUCCESS;}public String delete(){return SUCCESS;}public String modify(){return SUCCESS;}public String query(){return SUCCESS;}}struts.xml配置文件:<action name="访问的方法名" class="处理的类" method="处理的方法名"> <result name="结果页名">结果页面</result></action><action name="add" class="com.struts2.chen.MethodAction" method="add"> <result name="success">/method/addRes.jsp</result></action><action name="delete" class="com.struts2.chen.MethodAction" method="delete"> <result name="success">/method/deleteRes.jsp</result></action><action name="modify" class="com.struts2.chen.MethodAction" method="modify"> <result name="success">/method/modifyRes.jsp</result></action><action name="query" class="com.struts2.chen.MethodAction" method="query"> <result name="success">/method/queryRes.jsp</result></action>页面:<a href="add.action">增加</a><br /><a href="delete.action">删除</a><br /><a href="modify.action">修改</a><br /><a href="query.action">查询</a><br />3。
struts2的配置文件
<!-- 定义默认的拦截器 每个Action都会自动引用,如果Action中引用了其它的拦截器,默认的拦截器将无效 -->
<default-interceptor-ref name="mystack"></default-interceptor-ref>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
当前路径为web-inf/classes
struts2的配置文件
类型
struts2共有4类配置文件,
struts.properties:定义框架自身的全局变量。
struts-default.xml:定义框架自身使用的action映射及result定义。
struts-plugin.xml:struts插件使用的配置文件,比如当使用struts和spring结合时就需要在web.xml中引用该配置文件。
-->
<package name="com.kay.struts2" extends="struts-default" namespace="/test">
<interceptors>
<!-- 定义拦截器-->
<interceptor name="timer" class="com.kay.timer"></interceptor>
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "/dtds/struts-2.0.dtd" >
<struts>
<!-- include节点是struts2中组件化的方式可以将每个功能模块独立到一个xml配置文件中然后用include节点引用-->
<include file="struts-default.xml"></include>
<!-- package提供了将多个Action组织为一个模块的方式
package的名字必须是唯一的package可以扩展当一个package扩展自
另一个package时该package会在本身配置的基础上加入扩展的package
的配置父package必须在子package前配置
name:package名称
extends:继承的父package名称
abstract:设置package的属性为抽象的抽象的package不能定义action 值true:false namespace:定义package命名空间该命名空间影响到url的地址,例如此命名空间为/test那么访问是的地址为http://localhost:8080/struts2/test/XX.action
-->
<package name="com.kay.struts2" extends="struts-default" namespace="/test">
<interceptors>
<!-- 定义拦截器
name:拦截器名称
class:拦截器类路径
-->
<interceptor name="timer" class="com.kay.timer"></interceptor>
<interceptor name="logger" class="com.kay.logger"></interceptor>
<!-- 定义拦截器栈-->
<interceptor-stack name="mystack">
<interceptor-ref name="timer"></interceptor-ref>
<interceptor-ref name="logger"></interceptor-ref>
</interceptor-stack>
</interceptors>
<!-- 定义默认的拦截器每个Action都会自动引用
如果Action中引用了其它的拦截器默认的拦截器将无效-->
<default-interceptor-ref name="mystack"></default-interceptor-ref>
<!-- 全局results配置-->
<global-results>
<result name="input">/error.jsp</result>
</global-results>
<!-- Action配置一个Action可以被多次映射(只要action配置中的name不同) name:action名称
class: 对应的类的路径
method: 调用Action中的方法名
-->
<action name="hello" class="com.kay.struts2.Action.LoginAction">
<!-- 引用拦截器
name:拦截器名称或拦截器栈名称
-->
<interceptor-ref name="timer"></interceptor-ref>
<!-- 节点配置
name : result名称和Action中返回的值相同
type : result类型不写则选用superpackage的type struts-default.xml中的默认为dispatcher
-->
<result name="success" type="dispatcher">/talk.jsp</result>
<!-- 参数设置
name:对应Action中的get/set方法
-->
<param name="url"></param>
</action>
</package>
</struts>。