STRUTS2零配置

合集下载

Struts2配置参数

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就像一个对象,可以被其它子包从写,而且可以拥有自己独立的部分。

轻松学Java Web开发之Struts 2配置详解

轻松学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中使用注解配置Action方法详解

struts2中使用注解配置Action方法详解

struts2中使⽤注解配置Action⽅法详解使⽤注解来配置Action可以实现零配置,零配置将从基于纯XML的配置转化为基于注解的配置。

使⽤注解,可以在⼤多数情况下避免使⽤struts.xml⽂件来进⾏配置。

struts2框架提供了四个与Action相关的注解类型,分别为ParentPackage、Namespace、Result和Action。

ParentPackage:ParentPackage注解⽤于指定Action所在的包要继承的⽗包。

该注解只有⼀个value参数。

⽤于指定要继承的⽗包。

⽰例:使⽤ParentPackage注解,其value值为mypackage,表⽰所在的Action需要继承mypackage包,@ParentPackage(value="mypackage")public class UserAction extends ActionSupport{}如果注解中只有⼀个value参数值,或者其他参数值都使⽤默认值时,则可以对value参数设置进⾏简写,⽐如上述的代码:@ParentPackage("mypackage")public class UserAction extends ActionSupport{}把struts2-convention-pligin-2.x.x.jar包导⼊到web应⽤中,才能在Action类中使⽤注解。

Namespace:Namespace注解⽤于指定Action所在的包的命名空间。

该注解只有⼀个value参数,⽤于指定ACtion所属于的命名空间。

当使⽤Namespace注解时,在为命名空间取名需要使⽤斜杠(/)开头。

使⽤Namespace注解,指定其Action所在的包的命名空间为/user:@Namespace("/user")public class UserAction extends ActionSupport{}Result:Result注解⽤于定义⼀个Result映射,该注解包含四个参数,1)name:可选参数,⽤于指定Result的逻辑名,默认值为success2)location:必选参数,⽤于指定Result对应资源的URL3)type:可选参数,⽤于指定Result的类型,默认值为NullResult.class4)params:可选参数,⽤于为Result指定要传递的参数,格式为:{key1,value1,key2,value2,...}如果type参数的值为NullResult.class,那么struts2框架在解析Result配置时,会使⽤默认的结果类型(即ServletDispatcherResult)来替换NullResult。

02Struts2配置详解

02Struts2配置详解

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.0快速入门实战文档-1

struts2.0快速入门实战文档-1

o1,新建一个web项目,方法好象是file—new –project—myeclipse—j2ee---web project建好后如下我们把struts2.0的包copy到lib下注意,只copy 5个jar文件就可以了,多了出问题的如下commons-logging-1.0.4.jarfreemarker-2.3.8.jarognl-2.6.11.jarstruts2-core-2.0.8.jarxwork-2.0.3.jar然后打开webroot/web-inf/web.xml内容改成如下<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "/dtd/web-app_2_3.dtd"><web-app><display-name>Struts 2.0 test xp1204</display-name><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><welcome-file-list><welcome-file>index.html</welcome-file></welcome-file-list></web-app>如下图如下然后finish改下他的内容<?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><include file="struts-default.xml"/></struts>如下图到这里新建一个jsp文件测试下,看看我们的web可以运行不结果如下我们发布项目测试下,发布在前面环境测试就说过了的,这里不重复了就两步一是发布,二是启动.然后在ie中看看…结果出来了在上面的项目中,我们已经引入了struts2.0,但是没有使用,现在我们开始使用1,首先建个包,我建的是com.xp1204.struts202,在包上右键新建一个类HelloChina,这类就是个action如下图Name中输入HelloChina和superclasee中输入com.opensymphony.xwork2.ActionSupport 然后点finish改行修改下刚才建的这个类package com.xp1204.struts20;import com.opensymphony.xwork2.ActionSupport;public class HelloChina extends ActionSupport { private String name;public String getName() {return name;}public void setName(String name) { = name;}public String execute() {name = "Hello China, " + name + "!";return SUCCESS;}}如下图然后我们在配置文件struts.xml中来配置(映射)下这个action,改后如下<?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><include file="struts-default.xml"/><package name="com.xp1204.struts20" extends="struts-default"> <action name="HelloChina"class="com.xp1204.struts20.HelloChina"><result>HelloChina.jsp</result></action></package></struts>然后我们修改我们开始的index.jsp文件然后修改内容为<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>HelloChina</title></head><body><h3>HelloChina : </h3><s:form action="HelloChina">Name: <s:textfield name="name" /><s:submit /></s:form></body></html>如下图然后新建HelloChina.jsp文件,就和建index.jsp一样的建,然后修改内容为<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>HelloChina</title></head><body><h3><s:property value="name" /></h3></body></html>如下图到这里就基本完了,从新启动我们的项目Ie打开index.jsp文件输入东西,然后submit看看效果哈哈,到这里,最简单的struts2.0就学会了,大家体会下因为我没做个2.0的项目,所以现在只能给大家这点指引了.以后我了解更多,会更新的。

convention插件

convention插件

STRUTS2 Convention零配置Convention:n. 大会;[法] 惯例;[计] 约定;[法] 协定;习俗从struts2.1开始,struts2不再推荐使用Codebehind作为零配置插件,而是改为使用Convention插件来支持零配置,无需在struts.xml文件中对Action进行配置,通过注解来进行对Action 进行配置,甚至不需要使用Annotation进行配置,根据struts2约定自动配置。

开发步骤:1)将struts-Convention-plugin-***.jar文件复制到WEB-INF/lib 路径下2)对于Convention插件而言,它会自动搜索位于action,actions,struts,struts2包下的所有java类,Convention插件会把如下两种java类当成Action处理:1)所有实现了com.opensymphony.xwork2.Action的java类2)所有类名以Action结尾的java类3)Convention插件的三个常量:1)struts.Convention.exclude.packges:指定不扫描哪些包下的java类2)struts.convention.package.locators :指定搜索Action的根包比如: com.accp.action.test.LoginAction 那么按照约定,访问的路径应该为 /test/login.action如果将根包常量的值设置为 test ,那么直接访问/login.action3)struts.convention.result.path 定位视图资源的根路径,默认为:/WEB-INF/content/默认情况下。

Convention插件会到WEB应用的WEB-INF/content 路径下定位物理资源,定位资源的约定是:actionRUL+resultCODE+suffix。

Struts 2 配置

Struts 2 配置

Struts 2 + Spring配置步骤一般为三步:导入开发Struts2应用需要使用到的jar文件、编写Struts2的配置文件和在web.xml中加入Struts2 MVC 框架启动配置、编写Action类。

Struts 2所需Jar包:struts2-core-2.xx.jar、xwork-core-2.xx.jar 、commons-logging-1.xx.jar 、commons-fileupload-xx.jar、freemarker-xx.jar、ognl-x.jar、struts2-spring-plugin-x.jar、commons-io.xx.jar、javassist-xx.jar配置部分主要为:web.xml及Struts配置文件Struts.xml一.web.xml在web.xml中加入以下代码(Struts的Filter会读取Struts.xml文件等完成一系列初始化操作, 并以javabean形式存放在内存中,以供struts2用户的每次请求从用内存中读取数据)<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>注:如果Action的Scope设定为request的话,需要在Web.xml中加入以下监听注:若struts.xml放在非src目录下,需要在web.xml中进行从新配置(因struts2加载配置文件是从jar包和\WEB-INF\classes 两个默认位置加载),如web-inf/conf目录下<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class><init-param><param-name>config</param-name><param-value>struts-default.xml,struts-plugin.xml,../conf/struts.xml(具体路径)</param-value></init-param></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>二.Struts.xmlStruts 2配置以package形式定义action来避免action重名问题,主要格式为<package name="package名" extends="struts-default" namespace="命名空间名"> <action name="action名称" class="action的类路径"><result name="返回值名称" type="跳转类型">页面的具体路径如/index.jsp</result> </action></package>name="package名":因需要以此区分各个action,故每个package名不能重复,类似java类中的packageextends="struts-default":Struts-default是struts2定义的配置,其中定义struts2一些核心的bean和拦截器,一般情况下可提出一个统一个package来继承Struts-default并想全局的内容放在此package中,其他模块action定义继承此packagenamespace="命名空间名":用于页面访问action的目录,格式为“/name”也可只用“/”“/user/userAction!add.action”或” /userAction!add.action”.action name="action名称":action名,页面通过此名访问具体actionAction class=”action类路径”:与该action对应的类路径,在与spring继承后换成spring配置文件中实例的actionbean的名称(在spring配置文件中需要定义scope,可取值为prototype或request,在脱离web容器对scope = request测试时会报错,推荐设为prototype)result name="返回值名称":此名对应action类中return的String值,用于在执行完代码后导航到相应页面result type="跳转类型":定义跳转到其他页面或action的类型;一般取值有: dispatcher、ridirect、chain、redirectAction;如果不设定,默认为dispatcher;通过chain或redirectAction跳转action时不用写.action后缀dispatcher:只能是页面,属于forward跳转,资源可传递;ridirect:可以是页面或action,重定向跳转,资源不能传递;chain:用于action间跳转,资源可传递();redirectAction:用于action间跳转,资源不能传递chain跳转实例:1)同一package下action跳转2)不同package下action跳转<package name="packageOne" extends="default" namespace="/packageOne"> <action name="demoAction" class="demoAction"><result name="chainOtherAction" type="chain"><param name="namespace">/packageTwo</param><param name="actionName">otherAction</param><param name="method">input</param></result></action></package><package name="packageTwo" extends="default" namespace="/packageTwo"> <action name="otherAction" class="otherAction"><result name="success" type="redirect">/success.jsp</result> </action></package>actionName - 被调用的action的名字namespace - 被调用的action的名称空间. 如果名称空间为空,这默认为当前名称空间method - 用于指定目标action的另一个方法被调用. 如果空,默认为excute方法include file:通过include标签可引入其他struts配置文件,可提高开发灵活性还可以在文件中配置如Exception,全局result等Action调用:Struts2 Action的动态方法调用(DMI)格式为”actionName!methodName.action?parameterKey=value&……”Action类编写Struts2的action类可以为普通的pojo类,也可以继承ActionSupport来使用扩展的功能, Struts2和Spring都提供了ActionSupport,两者区别在于Struts2扩展了如验证、获取国际化资源信息功能,Spring则扩展了如获取spring web 应用环境信息等1.变量赋值Struts2变量的赋值是通过set方法注入,只要为私有变量提供set方法前台表单即可通过变量名的方式赋值例如变量private String id 前台可用 <input type="text" name="id" />赋值变量也可以使复杂类型如private User user ,复杂类型变量的赋值通过变量名.属性名方式例如 <input type="text" name="user.id" />注:复杂类型对象中的对应属性(如id)也要提供set方法才可正方赋值2.方法定义Struts2的action方法必须是public String methodName() {………………return"resultName";}返回值类型必须是String的,return的字符串对应的是struts.xml中action节点内<result name="">定义的name名相同(根据跳转页面返回相应name)public class actionName{private String 变量名;public String 方法() {return"resultName";}public void set变量名(String 变量名) {this. 变量名 = 变量名;}}3.action类访问web元素Struts2提供了四种访问方法,常用的为实现RequestAware、 SessionAware、ApplicationAware接口通过map获取方法public class demoAction extends ActionSupport implements RequestAware, SessionAware, ApplicationAware{private Map<String,Object> request;private Map<String,Object> session;private Map<String,Object> application;public String test() {request.put("key", "value");session.put("key", "value");application.put("key", "value");return"SUCCESS";}public void setRequest(Map<String, Object> request) {this.request = request;}public void setSession(Map<String, Object> session) {this.session = session;}public void setApplication(Map<String, Object> application) {this.application = application;}}另RequestAware接口可以获得一个struts2提供的OgnlValueStack类,通过它可以方便获取response、request及其他的一些信息public class demoAction implements RequestAware {private Map<String,Object> request;private HttpServletRequest httpRequest;private HttpServletResponse httpResponse;public String test() {OgnlValueStack stack = (OgnlValueStack)request.get("struts.valueStack");httpRequest = (HttpServletRequest)stack.getContext().get(StrutsStatics.HTTP_REQUEST);httpResponse= (HttpServletResponse)stack.getContext().get(StrutsStatics.HTTP_RESPONSE);}public void setRequest(Map<String, Object> request) {this.request = request;}}与Flex集成与Flex集成需要添加json-lib-x.x-jdk15.jar和struts2的struts2-json-plugin-x.jar。

struts2_01(入门与配置)

struts2_01(入门与配置)

开发环境:MyEclipse6.5+Tomcat6.0+JDK1.5一、下载struts-2.0.11-all二、新建一个Web Project,命名为struts2,新建login.jsp和result.jspLogin.jsp主要内容如下result.jsp(也可以用username:<%= request.getParameter("username") %>)在Tomcat6.0的conf 下的server.xml下增加一句话三、将需要的包复制到项目struts2下的lib中(暂时只需5个)四、修改struts2下的web.xml,增加过滤器五、新建一个包,命名为com.test.action,再新建一个名为LoginAction 的类,类中内容如下六、在struts2下的src下新建一个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="struts2" extends="struts-default"><action name="login" class="com.test.action.LoginAction" method="execute"><result name="success">/result.jsp</result></action></package></struts>七、开启tomcat,在浏览器中浏览注:我并没有更改编码,所以测试数据用英文,否则会乱码八、使用struts2的标签库,并增加对用户的验证新建一个login2.jsp注意:form的action属性内容改为login,这是标签库的简化效果,Label表示文本框前面是提示修改类LoginAction(注意增加的内容)注意:this.addFieldError("username","username required") "username" 针对表单中文本框的名称"username required" 是提示的错误信息在调用这个类时,会先调用validate方法验证用户名和密码是否为空,然后再运行execute方法。

struts2的配置参数汇总.

struts2的配置参数汇总.

#该属性默认值为struts-default.xml,struts-plugin.xml,struts.xmlstruts.configuration.files=struts.xml#指Web应用的默认编码集。

是指该属性相当于在过滤器中调用HttpServletRequest.setCharacterEncoding("GBK")方法struts.i18n.encoding=utf-8#如果用户需要指定多个请求后缀,则多个后缀之间以英文逗号隔开。

例如:struts.action.extension=action,jnlp,dostruts.action.extension=action#当struts.xml文件改变时系统是否自动重新加载该文件。

默认值为false。

struts.configuration.xml.reload=true#该属性设置struts2应用是否使用开发模式。

如果为true,则可以在应用出错是显示更多更友好的提示。

默认值为false。

struts.devMode = true#每次HTTP请求到达时,系统是否从新加载资源文件。

默认值为false。

struts.i18n.reload=true#该属性指定视图标签默认的视图主题,默认值是xhtmlstruts.ui.theme=simple#该属性指定在使用Struts2标签时是否可以使用表达是语法。

默认值为true。

struts.tag.altSyntax=true#指定加载Struts2配置文件的配置文件管理器。

该属性的默认只是org.apache.struts2.config.DefaultConfiguration。

#如果我们需要实现自己的配置管理器,则可以实现Configuration接口。

#然后将此属性的值改为自定义的配置管理器类。

#struts.configuration=org.apache.struts2.config.DefaultConfiguration#Struts2默认的对象工厂(IOC容器)为spring#struts.objectFactory = spring#指定Spring框架的自动装配模式,该属性默认值是name。

Struts2的使用注解配置Action(零配置)

Struts2的使用注解配置Action(零配置)

Struts2的使⽤注解配置Action(零配置)1.⾸先引⼊struts2注解的jar包:struts2-convention-plugin.jar------------------------------第⼀种⽅式-------------------------------------2.struts的配置<?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><package name="lxyPackage" extends="json-default" namespace="/"><!-- S QLQ 增加的培训类别管理 --><global-results><result name="success" type="json"><param name="root">response</param></result></global-results></struts>3.TestAnnotationAction.java(测试JSON,跳转,重定向三种⽅式)package cn.xm.exam.action.trainContent;import java.util.HashMap;import java.util.Map;import org.apache.struts2.convention.annotation.Action;import space;import org.apache.struts2.convention.annotation.ParentPackage;import org.apache.struts2.convention.annotation.Result;import org.apache.struts2.convention.annotation.Results;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Controller;import com.opensymphony.xwork2.ActionSupport;@Controller@Scope("prototype") // 多例@Namespace("/")@Results({ @Result(name = "tiaozhuan", location = "/view/testPerson/outEmployeeAllot.jsp"),@Result(name = "redirect", type = "redirect", location = "/view/testPerson/outEmployeeAllot.jsp") })@ParentPackage("lxyPackage") // 属于哪个packagepublic class TestAnnotationAction extends ActionSupport {private Map response;@Action("/test1")public String test1() {response = new HashMap();response.put("hello", "hello");return SUCCESS;}@Action("/test2")public String test2() {return "tiaozhuan";}@Action("/test3")public String test3() {return "redirect";}public Map getResponse() {return response;}public void setResponse(Map response) {this.response = response;}}4.测试:(1)测试返回JSON(2)测试转发(3)测试重定向------------------------------第⼆种⽅式(注解返回JSON、跳转、重定向)-------------------------------------pom.xml依赖:<dependency><groupId>org.apache.struts</groupId><artifactId>struts2-convention-plugin</artifactId><version>2.3.24</version></dependency><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-core</artifactId><version>2.3.24</version></dependency><dependency><groupId>org.apache.struts</groupId><artifactId>struts2-json-plugin</artifactId><version>2.3.24</version></dependency>struts.xml配置<?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><constant name="struts.i18n.encoding" value="utf-8"></constant><constant name="devMode" value="true"></constant><constant name="struts.enable.DynamicMethodInvocation" value="true"/><!-- 配置拦截的后缀 --><constant name="struts.action.extension" value="action,do"/><package name="default" extends="json-default"></package></struts>测试代码:package cn.qlq.action;import org.apache.struts2.convention.annotation.Action;import space;import org.apache.struts2.convention.annotation.ParentPackage;import org.apache.struts2.convention.annotation.Result;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.Preparable;@Namespace("/")@ParentPackage("default")public class FirstAction extends ActionSupport implements Preparable {private static final long serialVersionUID = 1L;private String test;@Overridepublic void prepare() throws Exception {System.out.println("这是所有⽅法前的处理");}@Action(value = "test",results = { @Result(name = "success1", location = "/index2.jsp", type = "redirect") ,@Result(name = "error", location = "/index2.jsp") ,@Result(name = "success" ,type = "json" , params = {"root","test"})})@Overridepublic String execute() throws Exception {test = "test";return super.execute();}public String getTest() {return test;}public void setTest(String test) {this.test = test;}}注意: @Result的type值默认为dispatcher(转发)。

Struts2---(Conventios实现零配置) 1

Struts2---(Conventios实现零配置) 1

1。

1. 设置结果页面路径默认所有的结果页面都存储在WEB-INF/content下,你可以通过设置struts。

convention。

result.path这个属性的值来改变到其他路径。

如:Xml代码:<constant name="struts.convention。

result.path" value="/WEB-INF/page” />则将路径配置到了WEB-INF/page 下。

1.2。

设置Convention搜索包默认包路径包含action,actions,struts,struts2的所有包都会被struts作为含有Action 类的路径来搜索。

你可以通过设置struts。

convention。

package.locators属性来修改这个配置。

如:<constant name=”struts。

convention.package。

locators” value="web,action”/〉则定义了在项目中,包路径包含web和action的将被视为Action存在的路径来进行搜索。

tb。

web.*/tb。

action.*都将被视为含有Action的包路径而被搜索.接着,Convention从前一步找到的package以及其子package中寻找com。

opensymphony.xwork2.Action 的实现以及以Action结尾的类:com。

example.actions。

MainActioncom。

example.actions.products.Display (implements com。

opensymphony.xwork2。

Action)com。

example。

pany.details.ShowCompanyDetailsAction—-———---—--—>特别注意这点,命名空间,现在是搞懂点了………〈constant name="struts.convention。

struts2配置及项目启动

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入门及配置(许业生)

Struts2入门及环境配置虽然Struts2号称是一个全新的框架,但这仅仅是相对Struts 1而言。

Struts 2 与Struts 1相比,确实有很多革命性的改进,但它并不是新发布的新框架,而是在另一个赫赫有名的框架:WebWork基础上发展起来的。

从某种程度上来讲,Struts2没有继承Struts 1的血统,而是继承WebWork的血统。

或者说,WebWork衍生出了Struts2,而不是Struts 1衍生了Struts2。

因为Struts2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面都有很好的保证:而且吸收了Struts 1和WebWork两者的优势,因此,是一个非常值得期待的框架。

Apache Struts2是一个优雅的,可扩展的JAVA EE web框架。

框架设计的目标贯穿整个开发周期,从开发到发布,包括维护的整个过程。

Apache Struts 2即是之前大家所熟知的WebWork 2。

在经历了几年的各自发展后,WebWork和Struts社区决定合二为一,也即是Struts 2Struts 2 英文官方网站:下面我们来用一个简单的实例来学习一下Struts2,大家都知道MyEclipse集成开发环境中对Struts1有了很好的支持,我们可以用MyEclipse就可以给项目添加Struts1支持,但是Struts2目前就没有什么好的工具可以直接给项目添加Struts2支持了,我们必须全部手动添加了,其实对与初学者我建议不要用工具进行生产,自己手动配置一下会让你对一个新技术有很好的理解。

先不多说了,下面我们开始吧!新建一个web项目,项目名称就叫Struts2,项目建好了,我们该给项目添加Struts2支持了吧,要引入很多jar包,这些jar包从哪里来呢!没关系,下面是目前最新版本Struts2.1.6官方下载地址:下载完毕后,我们将你下载的zip格式的文件解压,解压完了找到解压包里面的lib文件夹,里面包含了Struts2所有的jar文件。

struts2配置及原理

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。

配置struts2.0.6 spring2.0.3 hibernane3备忘

配置struts2.0.6 spring2.0.3 hibernane3备忘

配置struts2.0.6 spring2.0.3 hibernane3备忘花了2个小时终于配置好struts2.0.6+spring2.0.3+hibernane3,为自己庆祝一下,分享一下经验一、struts2。

跟webwork配置基本一致,主要是struts2.properties和struts.xml 2个配置文件,我的struts2.properties如下配置:struts2.propertiesstruts.tag.altSyntax = truestruts.devMode = true### These can be used to set the default HTTP and HTTPS portsstruts.url.http.port = 80#webwork.url.https.port = 443### This can be used to set your locale and encoding scheme struts.custom.i18n.resources=ApplicationResourcesstruts.locale=zh_CNstruts.i18n.encoding=utf-8# uses javax.servlet.context.tempdir by defaultstruts.multipart.parser=com.opensymphony.webwork.dispatcher. multipart.PellMultiPartRequest#struts.multipart.saveDir=tmpstruts.multipart.saveDir=/tmpstruts.multipart.maxSize=512000000struts.configuration.xml.reload=truestruts.objectFactory = springstruts.xml 就是配置action了,由于设定了struts.objectFactory = spring,因此struts2会自动将action转为spring的bean,struts.xml可以直接配置我们的action路径,在action中我们只需要设置某个service文件的set方法即可调用事务管理bean。

7 Struts2配置

7  Struts2配置

Struts2应用配置

关于Action的配置
■ ■ ■ ■ ■
搜索Action 的顺序,如: http://server/struts2/path1/path2/path3/test.action 如果没有为action指定class,默认是ActionSupport。 如果没有为action指定method,默认执行action中的 execute() 方法。 如果没有指定result的name属性,默认值为success。 如果没有指定result的type属性,默认值为dispatcher。
StrutsPrepareAndExecuteFilter: 核心控制器,负责 接收所有请求 Action: 负责处理单个特定请求
■ ■
Action是一个普通的类, 不需要实现任何接 口或继承任何类,是非倾入性的 Action的配置在Struts.xml中
Struts2配置文档类型

Struts-default.xml
public class HelloWorldAction{ private String savePath;
public String getSavePath() { return savePath; } public void setSavePath(String savePath) { this.savePath = savePath; } ...... } <package name="itcast" namespace="/test" extends="struts-default">
Struts2配置
江西微软技术中心 娄芳 2012-08

Struts2 Convention零配置使用

Struts2 Convention零配置使用

Struts2 Convention零配置使用二、用法Convention 除了struts2的相关jar包外还需要引入:struts2-convention-plugin-2.1.6.jar (1)、Aciton配置相关Annotation 与Action相关的两个Annotation是@Actions和@Action。

@Action主要用于修饰Action类里的办法,用于将该办法映射到指定的URL。

相当与strus.xml文件中 action .. / value 属性:指定该Action映射的URL params属性:是一个字符串数组,用于将Action指定的参数名和参数值;格式:{"name1","value1","name} @Action(value = "/login", //用法results属性为该办法指定Result映射 results = { @Result(name = "success", location = "/index.jsp")}) public String login() throws Exception { return "login"; @Actions 修饰类里的办法,用于将该办法映射到多个URL。

//用法@Actions将该办法映射成两个规律Action @Actions({ @Action(value="/crazyit" ,params={"injectProp" , "疯狂Java联盟"}), @Action("/leegang") public String login() throws Exception return "login"; (2)、Result配置相关的Annotation 与Result配置相关的Annotation:@ResultPath、@Result、@Results。

struts2.0实现无配置参考

struts2.0实现无配置参考

提供参考配置Web.xml<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.FilterDispatcher </filter-class><init-param><!—项目中所有包含的action --><param-name>actionPackages</param-name><param-value>com.dd.xframe.web,com.dd.report.web,com.dd.dss.ext,com.dd.exercise.web,com.dd.mobile.web</param-value></init-param></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>*.action</url-pattern></filter-mapping>配置Struts.xml<package name="boncUtil" namespace="/"extends="boncDefault"><action name="InputSelectH"class="com.bonc.base.tags.form.InputSelectHAction" /> </package><package name="record" namespace="/record"extends="struts-default"><action name="downloadrecord"class="com.bonc.mobile.web.record.DownLodaRecordAction"> <!-- 设置文件名参数,由页面上传入 --><param name="fileName"></param><result name="success" type="stream"><!-- 下载文件类型定义 --><paramname="contentType">audio/x-wav</param><!-- 下载文件处理方法 --><param name="contentDisposition">attachment;filename="${downloadChineseFileName}"</param><!-- 下载文件输出流定义 --><param name="inputName">downloadFile</param> </result></action></package>。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简述STRUTS2 Convention零配置从struts2.1开始,struts2不再推荐使用Codebehind作为零配置插件,而是改为使用Convention插件来支持零配置,和Codebehind相比,Convention插件更彻底,该插件完全抛弃配置信息,不仅不需要是使用struts.xml文件进行配置,甚至不需要使用Annotation进行配置,而是由struts2根据约定自动配置。

如何使用Convention1. 将struts-Convention-plugin-2.1.6.jar文件复制到WEB-INF/lib路径下2. 对于Convention插件而言,它会自动搜索位于action,actions,struts,struts2包下的所有java类,Convention插件会把如下两种java类当成Action处理:1)所有实现了com.opensymphony.xwork2.Action的java类2)所有类名以Action结尾的java类3. Convention插件还允许设置如下三个常量:1) struts.Convention.exclude.packges:指定不扫描哪些包下的java类,位于这些包结构下的java类将不会自动映射成Action;2) struts.convention.package.locators:Convention插件使用该常量指定的包作为搜寻Action 的根包。

对于actions.fore.LoginAction类,按约定原本应映射到/fore/login;如果将该常量设为fore,则该Action将会映射到/login3) struts.convention.action.packages:Convention插件以该常量指定包作为根包来搜索Action 类。

Convention插件除了扫描action,actions,struts,struts2四个包的类以外,还会扫描该常量指定的一个或多个包,Convention会视图从中发现Action类。

注意:struts.convention.package.locators和struts.convention.action.packages两个常量的作用比较微妙,开发者在利用这两个常量时务必小心。

如:下面Action所在包被映射的命名空间如下:com.fun.actions.LoginAction 映射到 /com.fun.actions.myoffice.CarInfoAction 映射到 /myofficecom.fun.struts.myoffice.EntINfoAction 映射到 /myofiice4. 映射Action的name时,遵循如下两步规则:1)如果该Action类名包含Action后缀,将该Action类名的Action后缀去掉。

否则不做任何处理。

2)将Action类名的驼峰写法(每个单词首字母大写、其他字母小写的写法)转成中画线写法(所有字母小写,单词与单词之间以中画线隔开)如:LoginAction映射的Acion的name属性为login,GetBooks映射的Action的name的属性为get-books,AddEmployeeAction映射的Action的name属性为add-employee5. 默认情况下。

Convention总会到WEB应用的WEB-INF/content路径下定位物理资源,定位资源的约定是:actionRUL+resultCODE+suffix。

当某个逻辑视图找不到对应的视图资源时,Convention 会自动视图使用ActionURL+suffix作为物理视图资源。

如:actions.fore.LoginAction 返回success字符串时,Convention优先考虑使用WEB-INF/content/fore目录下的login-success.jsp作为视图资源。

如果找不到该文件,login.jsp也可作为对应的视图资源。

如果返回input字符串,Convention会将WEB-INF/content/fore里面查找login-input.jsp6. 为了看到struts2应用里的Action等各种资源的影射情况,struts2提供了Config Browser插件。

使用方法,将struts2-config-browser-plugin-2.1.6.jar文件复制到struts2应用的WEB-INF\lib 目录中。

打开首页地址:http://localhost:8080/应用名字/config-browser/actionNames.action这里可以看到Config Browser插件的首页。

注意:这里不管开发者是否使用struts.xml文件进行配置,一样可以看到struts的配置信息。

7.Action链的约定如果希望一个Action处理结束后不是进入一个视图页面,而是进行另一个Action形成的Action链。

通过Convention插件则只需遵守如下三个约定即可。

1)第一个Action返回的逻辑视图字符串没有对应的视图资源2)第二个Action与第一个Action处在同一个包下3)第二个Action影射的URL为:firstActionURL+resultCODE如,第一个Action为OneAction,里面有个方法返回为“two”,那么就得保证,WEB-INF/content/下没有one.jsp或one-two.jsp 对于第二个action 它的名字应该是OneTwoAction,而对应的url 应该是:“one-two.action”注意:由于Convention插件根据Action和jsp页面来动态生成映射的,因此不管是Acion的改变,还是JSP页面的改变都需要Convention插件重新加载映射。

那么只要我们为struts2应用配置如下两个常量就可以了。

<!--配置struts2应用于开发模式--!><constant name=”struts.devMode” value=”true”/><!—配置Convention插件自动重加载映射--!><constant name=”struts.convention.classes.reload” value=”true”/>几个重要的常量struts.convention.action.disableJarScanning---是否从包中搜索Actionstruts.convention.action.package--------Convention插件以该常量指定包作为根包struts.convention.result.path ---设置Convention插件定位视图资源的根路径。

默认值为/WEB-INF/contentstruts.convention.result.flatLayout—如果是为false则可以将视图放置Action对应的目录下,无需放入WEB-INF/content7. Convention的Annotation1)与Action相关的两个Annotation是@Action 和@Actions2) @Action中可指定一个value属性。

类似于指定<action name=””/>属性值3) @Action中还可以指定一个params属性,该属性是一个字符串数组,用于该Acion指定的参数名和参数值。

params属性应遵守如下格式:{“name1”,”value1”,”name2”,”value2”} 4) @Actions 也用于修饰Action类里的方法,用于将该方法映射到多个URL.@Actions用于组织多个@Action.因此它可将一个方法映射成多个逻辑Action。

如:package com.fun.actions;import org.apache.struts2.convention.annotation.Action;import org.apache.struts2.convention.annotation.Actions;import com.fun.service.LoginService;import com.opensymphony.xwork2.ActionSupport;public class LoginAction extends ActionSupport {private String str;@Actions({@Action(value="login1",params={"str","这是已经注入的了!"}),@Action(value="login2")})public String login(){return "str";}@Action(value="ggg")public String abc(){return "abc";}public String getStr() {return str;}public void setStr(String str) {this.str = str;}}我们可以通过/login1.action访问,而在访问时,str这个属性已经有值,为str=”这是已经注入的!”返回的视图是login1-str.jsp当我们用/login2.action访问时,str的值为null。

返回的视图为 login2-str.jsp而我们通过/ggg.action调用的是abc()方法,返回的视图为/ggg-abc.jsp8. 与Result配置相关的Annotation1)@ResultPath @Result 和Results2)@Results用于组织多个@Result因此它只需指定一个value属性值,该value属性值为多个@Result 3)@Result相当于struts.xml文件中的<result/>元素的做哟欧诺个。

使用@Result必须指定一个name 属性,相当于<result name=””/>另外,它还有几个可选的属性。

☆ type 相当于<result type=””/>指定返回视图资源的类型☆ location 相当于<result>…..</result>中间部分,用于指定实际视图位置☆ params:该属性相当于<result/>元素里多个<param../>子元素的作用,用于为该Result指定参数值。

相关文档
最新文档