02Struts2配置详解
Struts2配置参数

一、Struts2配置文件Struts2相关的配置文件有web.xml,struts.xml,struts.properties,struts-default.xml,velocity.properties,struts-default.vm。
其中web.xml,struts.xml是必须的,其它的配置文件可选择。
它们在web应用中的功能如下:web.xml:包含所有必须的框架组件的web部署描述符。
Struts.xml:配置包含result/view类型、action映射、拦截器等的Struts2的主要配置文件。
Struts.properties:配置struts2的框架属性。
Struts-default.xml:在文件在struts-action-x.x.jar中,该文件是应该被包含在struts.xml中的缺省配置。
Welocity.properties:重写了velocity的配置文件。
Struts-default.vm:相对于velocity的缺省配置。
二、Struts2配置元素Struts2核心的配置文件是缺省的struts.xml。
必要的时候,缺省的配置文件可以包含其它的配置文件;struts文件可以放入jar中,并自动插入应用程序,这样每个模块可以包含自己的配置文件并自动配置。
在Freemarker和V elocity 模块中,模板也能从classpath中加载,所以整个模块可以作为一个简单的jar文件被包含。
Struts.xml配置文件可以包含Interceptor、Action类和Results。
Struts.xml配置元素说明:1、PackagesPackages:packages把actions、results、results types、interceptors和interceptor-stacks组装到一个逻辑单元中,从概念上讲,packages就像一个对象,可以被其它子包从写,而且可以拥有自己独立的部分。
Struts2配置文件详解——s...

33.
34.<beantype="org.apache.struts2.dispatcher.multipart.MultiPartRequest"name="struts"class="org.apache.struts2.dispatcher.multipart.JakartaMultiPartRequest"scope="default"optional="true"/>
63.
64.<beantype="com.opensymphony.xwork2.TextProvider"name="struts"class="com.opensymphony.xwork2.TextProviderSupport"/>
65.
66.
67.<!-- Struts2中一些可以静态注入的bean,也就是不需要实例化的 -->
11.
12.<beantype="com.opensymphony.xwork2.ActionProxyFactory"name="xwork"class="com.opensymphony.xwork2.DefaultActionProxyFactory"/>
轻松学Java Web开发之Struts 2配置详解

9.1.3 struts-default.xml和 struts.properties文件
struts.properties文件是一个标准的属性文件,该文件 包含了大量的key-value对,每个key就是一个Struts 2 属性,该key对应的value就是Struts 2的一个属性值, 我们可以举一个例子如图9.7所示。
注意:Struts 2提供了两种设置Struts 2属性的方式:通过 struts.properties以key-value方式来设置Struts 2属性,也可 以在struts.xml文件中通过<constant>标签来设置Struts 2的 属性。
9.2 struts.xml文件配置详解
在Struts 2框架的配置文件struts.xml文件中,可以将 配置内容分为三大类,其中的每种元素可以包含不 同的配置内容,如图9.9所示。
Struts 2框架的主要配置文件如表9.1所示。
配置文件 web.xml struts.xml struts.properties struts-default.xml struts-plugin.xml 必选 是 否 否 否 否 位置(相对于webapp) /WEB-INF/ /WEB-INF/classes /WEB-INF/classes /WEB-INF/lib/struts2-core-x.x.x.jar /WEB-INF/lib/struts2-xxx-plugin.jar 说明 Web部署描述文件,包括所有的必需框架 组件 Struts 2主要配置文件 Struts 2框架的属性配置文件 Struts 2框架提供的默认配置 Struts 2框架的插件配置文件
该参数表示自定义的ConfigurationProvider类,用户可以提供一个或多个实现了 ConfigurationProvider接口的类,并将这些类名设置成configProviders属性值。多个类名间 用英文逗号分隔
Struts2环境配置及配置过程小问题的解决

Struts 的环境配置,及常见小问题解决方案该文档是我学习时候记得笔记,现在拿出来和大家分享.记得不好,希望大家批评指正首先我们学习一下开发环境的配置:该文档中的大部分内容均以图片展示.观看时可以酌情地放大观看.呵呵呵第一步:新建project →web Project →…;第二步:我们需要把项目tomcat使用的apache 的服务根目录设置一下:Window → preference → MyEclipse →Server→ TomCat选取路径;如图:选取apache路径:第三步:设置installed path ,注意这里要是用的是jdk;1.6.0_13;第四步:添加Struts2 路径解压从网站上下载的压缩包struts-2.3.4;解压开后是这样的:第五步:点开apps 的实例程序,解压开把struts放到所建项目的src 目录下边;第六步:添加扩展包:复制到第七步:更改web.xml 文件:下边的文档是apps中的web_inf 下边的web.xml的记事本打开图将选中的代码copy到项目中web.xml 中的相应位置;结果如图:注意:刚粘贴的文档选中的这行结尾词不是j2ee,把它改成j2ee 否则将报错.这可能是版本的原因导致的吧;<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAn dExecuteFilter</filter-class>这句话中的 ng..ng代表的new generation .的意思;第八步:打开src下边的struts 配置文件注释:<struts ></struts>标签之间的内容;将中间的<package></package>标签和内容copy到下边;更改结果如图:注意将web_inf 目录下边的index.jsp改名为hello.jsp;这样就可以访问了; 接下来基本上可以调试了:第一步:启动服务器:记住选中自己配置的tomcat 服务器; 打开浏览器:地址栏中输入:如图:先测试服务器:再测试自己的hello.jsp,测试文件;注意有一点儿关于dtd文件的配置:由于原来填写的内容是从网上获取的,多慢啊是吧;我们现在把它配置成本地开发模式的使用的;第一步:这样的话他就会把每次更改后的文件部署到服务器上,而不用每次更改都重启服务器; 第二步:注意:这里的dtd文件是从struts 文件的解压出来的,只需要引入路径即可;软件1002班 10 / 11 王圣玺注意Tomcat 的web 配置,以及JDK 配置一定要和installed jre 等一致:添加src 文件的扩展文件:黄河水院 struts2的环境配置 信息工程系 软件1002班 11 / 11 王圣玺QQ:820215725 Struts 的运行机制:请求与展现分开(struts2 的核心内容):好了,该文档目前就先写到这里,写得不好,请大家批评指正,如果有不懂或者想要共同学习提高的哥们,姐们,请联系我.O(∩_∩)O 哈哈哈~。
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是一个工作单元。
Struts 2 讲义(2)

Struts2(2) 工作原理一、Struts2框架结构Struts2框架按照模块来划分,可以分为Servlet Filters、Struts核心模块、拦截器和用户实现部分。
Struts2框架结构图如图4-1所示。
图4-1 Struts 2框架结构图一个请求在Struts2框架中的处理大概分为以下几个步骤。
①客户端提交一个(HttpServletRequest)请求,如上文在浏览器中输入http://localhost: 8080/bookcode/ch2/Reg.action就是提交一个(HttpServletRequest)请求。
②请求被提交到一系列(主要是3层)的过滤器(Filter),如(ActionContextCleanUp、其他过滤器(SiteMesh等)、FilterDispatcher)。
注意:这里是有顺序的,先ActionContext CleanUp,再其他过滤器(Othter Filters、SiteMesh等),最后到FilterDispatcher。
③FilterDispatcher是控制器的核心,就是MVC的Struts2实现中控制层(Controller)的核心。
④F ilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(HttpServlet Request)请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求的处理交给ActionProxy。
⑤ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类。
例如,用户注册示例将找到UserReg类。
⑥ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action。
但在调用之前,ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)。
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方法相同的格式。
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配置文件详解--精品版

7. struts.xml
struts.xml 文件中包含的是我们开发的 Action 的配置。如前面登录例子中的配置:
4. struts.properties 文件
这个文件提供了一种更改框架默认行为方式的机制。在一般情况下,如果不是打算让 调试更加方便的话,我们没有必要更改这个文件。哪么这些默认的属性在哪里存放呢? 在项目的 src 目录中可以自己编写一个名称为 struts.properties 文件, 编译以后就放 到了/WEB-INF/classes 中,Struts2 框架在启动的时候,会自动读取这个文件,但是在读 取这个文件之前,会先到 struts2-core-xxx.jar 包中加载名为 default.properties 文件, 这个文件中定义了默认的配置,所以我们可以在 strtus.properties 中定义一些配置覆盖 default.properties 中的配置,如果没有 struts.properties 文件,则采用默认配置。 打开 default.properties 文件我们会看到如下部分类容:
/
Copyright©2010 吴青版权所有
吴老师教学讲义
4
打开该文件, 可以看到一些全局的配置选项, 在这些选项中, 我们发现了有一些这样的配置, 其中 struts.action.extension 配置的就是 Struts 默认的请求后缀名。 关于更多的配置的含义, 后面用到了再讲解,现在暂时不必理会这些配置的含义.
### Used by the DefaultActionMapper ### You may provide a comma separated list, e.g. struts.action.extension=action,jnlp,do ### The blank extension allows you to match directory listings as well as pure action names ### without interfering with static resources. struts.action.extension=action,, ### This can be used to set your default locale and encoding scheme # struts.locale=en_US struts.i18n.encoding=UTF-8
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文件上传中整个请求内容允许的最大字节数 -->
2.Struts2配置文件

2.Struts2配置⽂件1.配置⽂件的加载顺序0. 需要掌握* 加载了哪些个配置⽂件(重点的)* 配置⽂件的名称是什么* 配置⽂件的位置* 配置⽂件的作⽤1. Struts2框架的核⼼是StrutsPrepareAndExecuteFilter过滤器,该过滤器有两个功能* Prepare -- 预处理,加载核⼼的配置⽂件* Execute -- 执⾏,让部分拦截器执⾏2. StrutsPrepareAndExecuteFilter过滤器会加载哪些配置⽂件呢?* 通过源代码可以看到具体加载的配置⽂件和加载配置⽂件的顺序* init_DefaultProperties(); -- 加载org/apache/struts2/default.properties* init_TraditionalXmlConfigurations(); -- 加载struts-default.xml,struts-plugin.xml,struts.xml* init_LegacyStrutsProperties(); -- 加载⾃定义的struts.properties.* init_CustomConfigurationProviders(); -- 加载⽤户⾃定义配置提供者* init_FilterInitParameters() ; -- 加载web.xml3. 重点了解的配置⽂件* default.properties -- 在org/apache/struts2/⽬录下,代表的是配置的是Struts2的常量的值* struts-default.xml -- 在Struts2的核⼼包下,代表的是Struts2核⼼功能的配置(Bean、拦截器、结果类型等)* struts.xml -- 重点中的重点配置,代表WEB应⽤的默认配置,在⼯作中,基本就配置它就可以了!!(可以配置常量)* web.xml -- 配置前端控制器(可以配置常量)* 注意:* 前3个配置⽂件是struts2框架的默认配置⽂件,基本不⽤修改。
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-02

在Action类中获取
• • • • public class LoginAction extends ActionSupport{ } String u = this.getText("username"); System.out.println("====="+u);
interceptor拦截器
资源国际化
• • • 如果开发者需要在项目应用中提供国际化功能,则需要指定 struts.custom.i18n.resources常量值 常量可以在配置文件struts.xml或者web.xml文件中定义 属性文件建议放到src目录下
struts.xml文件配置
• • • 在struts.xml文件中配置basename: I18N资源文件为globalMessages <constant name="struts.custom.i18n.resources" value="globalMessages" />
获取request对象
• • HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse();
使用IOC注入
局部异常声明
<action name="log*" class="com.sun.demo.LoginAction" method="{1}"> <result name="success" >/${rname}.jsp</result> <exception-mapping result="all" exception="ng.NullPointerException"> </exception-mapping> <result name="all">/exception.jsp</result> </action>
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配置及原理

个请求在Struts2框架中的处理大概分为以下几个步骤:1)客户端初始化一个指向Servlet容器(例如Tomcat)的请求。
2)这个请求经过一系列的过滤器(Filter)。
3)接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action。
4)如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy。
5) ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类。
6) ActionProxy创建一个ActionInvocation的实例。
7) ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
8)一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。
Struts2的核心就是拦截器。
Struts.xml中所有的package都要extends="struts-default"。
同理与所有的Java类都要extends自Object一样。
struts-default.xml里面就是要做以上事情。
1.2 运行机制1)客户端在浏览器中输入一个url地址。
2)这个url请求通过http协议发送给tomcat。
3)tomcat根据url找到对应项目里面的web.xml文件。
4)在web.xml里面会发现有struts2的配置。
5)然后会找到struts2对应的struts.xml配置文件。
6)根据url解析struts.xml配置文件就会找到对应的class。
7)调用完class返回一个字String,根据struts.xml返回到对应的jsp。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Struts 2 Action 2-2
/user!register.action /user!login.action
动态方法调用
作用:减少Action数量 public class UserAction implements Action { 调用UserAction的register()方法 调用UserAction的login()方法 … 使用:actionName!methodName.action public String login() { … 禁用:将属性strutsenableDynamicMethodInvocation设臵为 } false public String register() { … } <action name="user" class="erAction"> } <result name="login">/page/manage.jsp</result> <result name="register">/page/success.jsp</result> <result name="login_input">/page/login.jsp</result> <result name="register_input">/page/register.jsp</result> <result name="error">/page/error.jsp</result> </action> 演示示例:动态方法调用
第二章
Struts2配臵详解
回顾与作业点评
使用Struts 2 开发程序的基本步骤是什么?
Struts 2中如何获取Servlet的session对象? Struts 2 表单标签和普通HTML表单标签有什么 不同之处?
本章目标
掌握Struts 2的基本架构 掌握struts.xml中的各项内容 掌握action元素与result元素的配臵 掌握Struts 2中文乱码的解决
Struts 2 Action 2-3
public class UserAction implements Action { /register.action /login.action … method属性 public String login() { … 优点:避免动态方法调用的安全隐患 } 调用UserAction的register()方法 调用UserAction的login()方法 public String register() { 缺陷:导致大量的Action配臵 … <action name="login" } class="erAction" method="login"> } <result>/page/manage.jsp</result> <result name="input">/page/login.jsp</result> <result name="error">/page/error.jsp</result> </action> <action name="register" class="erAction" method="register"> <result>/page/success.jsp</result> <result name="input">/page/register.jsp</result> <result name="error">/page/error.jsp</result> </action> 演示示例:使用method属性
加载顺序
struts-default.xml—>struts-plugin.xml —>struts.xml
练习——中文乱码解决
需求说明:
解决中文乱码问题
提示:
<constant name="struts.i18n.encoding" value="UTF-8">完成时间:10分钟源自Struts 2配置文件2-2
struts.xml
constant元素
配臵常量,可以改变Struts 2框架的一些行为 name属性表示常量名称,value属性表示常量值
… <struts> <constant name="struts.i18n.encoding" value="UTF-8"/> <constant name="struts.ui.theme" value="simple"/> <package name="" namespace="" extends=""> <action name="" class=""> <result name=""></result> </action> </package> </struts>
Struts 2基本结构2-1
租房网登录程序运行流程图
login.jsp
核心控制器
Action
Result
manager.jsp
Struts 2基本结构2-2
核心控制器
需要在web.xml中进行配臵 对框架进行初始化,以及处理所有的请求
<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> Struts 2.0版本的核心控制器为 org.apache.struts2.dispatcher.FilterDispatcher
<struts> <package name="default" extends="struts- default“> <default-action-ref name="defaultAction"/ > <action name="defaultAction" class="erAction method="defaultMethod" > <result>/error.jsp</result> </action> </package> </struts> 如果请求的Action不存在, 将转发到error.jsp
… <struts> <constant name="" value=""/> <package name="default" namespace="/" extends="struts-default"> <action name="" class=""> <result name=""></result> </action> </package> </struts> 除非有令人信服原因,自定义的包应该总是扩展struts-default包
Struts 2基本结构2-4
Result
作用:调度视图以哪种形式体现给客户端(Action处理结 束后,系统下一步将要做什么) name属性表示result逻辑名,result元素的值指定对应 的实际资源位臵
… <struts> <package name="default" namespace="/" extends="struts-default"> <action name="login" class="cn.jbit.hrent.action.LoginAction"> <result name="success">/page/manage.jsp</result> <result name="input">/page/login.jsp</result> <result name="error">/page/error.jsp</result> </action> </package> </struts>
/loginUser.action