Struts2配置详解2 配置Action

合集下载

Struts2配置文件通配符的使用说明

Struts2配置文件通配符的使用说明

Struts2配置文件中使用通配符收藏形式一:调用相同Action中的不同方法<action name="*Action" class="Jcuckoo.LoginRegistAction" method="{1}"><result name="input">/login.jsp</result><result name="error">/error.jsp</result><result name="success">/welcome.jsp</result></action>其中表达式{1}的值name属性值中第一个*的值。

如果用户请求的URL为loginAction.action,则调用Jcuckoo.LoginRegistAction中的login方法;如果用户请求的URL为registerAction.action,则调用Jcuckoo.LoginRegistAction中的register方法;形式二:通过匹配,调用不同的Action的execute方法<action name="*Action" class="Jcuckoo.{1}Action"><result name="input">/login.jsp</result><result name="error">/error.jsp</result><result name="success">/welcome.jsp</result></action>上面没有出现method属性,故默认调用对应的execute方法如果用户请求的URL为LoginAction.action,则调用Jcuckoo.LoginAction中的execute方法;如果用户请求的URL为RegisterAction.action,则调用Jcuckoo.RegisterAction中的execute方法;形式三:动态结果<action name="crud_*" class="Jcuckoo.CrudAction" method="{1}"><result name="input">/input.jsp</result><result>/{1}.jsp</result></action>当处理结果是input时,会转到/input.jsp页面当处理结果是success时,如果crud_create.action,则会执行Jcuckoo.CrudAction中的create方法,并且跳转到/create.jsp;如果crud_delete.action,则会执行Jcuckoo.CrudAction中的delete方法,并且跳转到/delete.jsp;。

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。

Struts2中 struts.xml的Action配置详解

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是一个工作单元。

Structs2框架技术简单介绍

Structs2框架技术简单介绍

优点
• 3. 强大的拦截器Struts2的拦截器是一个Action级别 的AOP,Struts2中的许多特性都是通过拦截器来实 现的,例如异常处理,文件上传,验证等。拦截器 是可配置与重用的,可以将一些通用的功能如:登 录验证,权限验证等置于拦截器中以完成一些Java Web项目中比较通用的功能。在我实现的的一Web 项目中,就是使用Struts2的拦截器来完成了系统中 的权限验证功能。
第一步 创建index.jsp
<html><head> <title>第一个Struts简单示例</title> </head> <body> <form action="user/HelloAction" method="post"> 请输入你的大名:<input type="text" name="username" /> <br> <input type="submit" value="提交" /> </form></body></html>
Structs2工作流程
• 此外,如果struts.xml文件中还定义了被请 Action的一些拦截器,那么该Action实例被 调用前后,这些拦截器也会被先后执行。
Structs2工作流程
Structs2工作流程
• 第五步 Action对请求处理完毕以后将返回 一个逻辑视图,该逻辑视图将在struts.xml 文件相应的<result>元素中寻找相应的物理 视图,并返回给客户端 • <result name="success">/WEBINF/page/hello.jsp</result>

Struts2的配置文件详解

Struts2的配置文件详解
Struts2的命名空间的作用等同于struts1里模块的作用。
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国际化配置

前提条件:strut2的必须架包已经引入,struts2的配置文件全部配置完成1.首先创建一个struts.properties在src目录下,服务器启动时候会自动加载该文件,在这个文件中写入struts.custom.i18n.resources=globalMessages,服务器会自动选择前缀为globalMessages资源文件。

(或者你在你的struts.xml文件中添加<constant name="struts.custom.i18n.resources"value="globalMessages"></constant>服务器加载struts.xml的时候会加载国际化资源文件);2.在src目录下创建资源文件英文globalMessages_en.properties 中文globalMessages_zh.properties。

globalMessages_en.properties 文件内容为home=homeglobalMessages_zh.properties文件内容为home=¥u9996¥u98753.在页面端获得资源文件信息。

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'test.jsp' starting page</title></head><body><s:text name="home"></s:text></body></html>struts2的国际化分三种情况1.前台页面的国际化,2.Action类中的国际化,3.配置文件的国际化。

struts2_超链接与action使用

struts2_超链接与action使用

Struts2 超链接和 action 使用Struts2.0 链接标签Web 应用区别于普通的站点之处在于Web 应用可以创建一个动态的响应。

为了使从一个页面中链接一个动态数据变得简单,Struts2 框架提供了一系列的标签。

Struts 标签的一种用法是创建链接到其他 Web 资源,特别是针对那些在本地应用中的资源。

1.普通链接Web 程序中最普通的应用是链接到其他页面,下面看 Welcome.jsp。

<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %><html><head><title>Welcome</title><link href="<s:url value="/css/tutorial.css"/>" rel="stylesheet"type="text/css"/></head><body><h3>Commands</h3><ul><li><a href="<s:url action="Login_input"/>">Sign On</a></li><li><a href="<s:url action="Register"/>">Register</a></li></ul></body></html>1.1 说明1.<%@ taglib prefix="s" uri="/struts -tags" %>此句表示导入 struts 标签,并以 s 为前缀。

struts2配置文件详解

struts2配置文件详解
"/dtds/struts-2.0.dtd">
<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
struts核心 包
加载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知识点详解

Struts2知识点详解

Struts 2的基本流程Struts 2框架由3个部分组成:核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件。

在这3个部分里,Struts 2框架提供了核心控制器FilterDispatcher,而用户需要实现业务控制器和业务逻辑组件。

2.核心控制器:FilterDispatcherFilterDispatcher是Struts 2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求。

如果用户请求以action结尾,该请求将被转入Struts 2框架处理。

Struts 2框架获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务逻辑组件,例如,对于login.action请求,Struts 2调用名为login的Action来处理该请求。

Struts 2应用中的Action都被定义在struts.xml文件中,在该文件中定义Action时,定义了该Action的name属性和class属性,其中name属性决定了该Action处理哪个用户请求,而class属性决定了该Action的实现类。

Struts 2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理——因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求。

而Struts 2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action 的execute方法来处理用户请求。

显然,上面的处理过程是典型的AOP(面向切面编程)处理方式。

图3.19显示了这种处理模型。

图3.19 Struts 2的拦截器和Action从图3.19中可以看出,用户实现的Action类仅仅是Struts 2的Action代理的代理目标。

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配置及项目启动

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配置

Struts2学习笔记——ActionStruts2的简单配置拷贝 struts.xml 文件到项目的src目录下,并修改(添加如下) action name="hello">result>/Hello.jsp</result></action>拷贝必要的 jar 包到项目的W EB-INF的lib目录下修改 web.xml 文件(配置f ilter)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 的执行过程的简单分析:Struts2 NamespaceNamespace 决定了action 的访问路劲,默认为”,可以接受所有路劲的actionNamespace 可以写成/,或者/xxx,或者/xxx/yyy,对应的 action 访问路劲为index.action,/xxx/index.action,/xxx/yyy/index.actionNamespace最后用模块来进行命名ActionMethod上图中的 Struts.xml 文档中配置有两个action,首先看第一个,name=userAdd再看 UserAction.java 如下:public class UserAction extends ActionSupport {public String add() {return SUCCESS;}}Method=”add”浏览器中访问第一个action为:http://localhost:8080/xxx/user(package name)/userAdd(action name)如果 UserAction 中还有一个delete 方法或update方法或者更多方法,那么这里就需要配置更多的 action,如<action name=”userDel”class=”erAction”method=”delete”> 所以我们不提倡使用这样的方法,每增加一个方法,就需要多配置一个action,给我们的开发增添了额外的负担,我们提倡使用第二种 action配置方法我们只需要配置一个 action,采用动态访问的方式,输入如下 url就可以了:http://localhost:8080/xxx/user/user!add如果还有其他方法就将 add 换成UserAction.java中的方法就可以了,如:http://localhost:8080/xxx/user/user!delete通配符配置(采用通配符可以将配置量降到最低)UserAction.java 文件:public class StudentAction extends ActionSupport {public String add() {return SUCCESS;}public String delete() {return SUCCESS;}}观察位置 1,匹配s tudent* 的action,然后找到method=”{1}”, 这里的 1 代表着name 的值中的表达式中第一个*,如果 method 为 add 方法,那么 name 的值就studentadd。

struts2标签详解

struts2标签详解

Struts2 标签详解详细的说明了struts2所有标签由整理版权属 以及原作者。

由于标签太多难做目录索引,如果你觉得有目录索引更好,请到/p/myjdemo/downloads/list 下载CHM版本的Struts2标签详解,谢谢。

aa标签创建一个HTML超链接,等价于HTML 的<a href=""....示范代码:<s:a href="login.action">登陆</s:a>action使用action标签可以允许在JSP页面中直接调用Action,因为需要调用Action,故可以指定需要被调用Action的name以及namespace。

如果指定了executeResult参数的属性值为true,该标签还会把Action的处理结果(视图支援)包含到本页面中来。

action标签的属性:id:可选属性,该属性将会作为该Action的引用IDname:必填属性,指定该标签调用哪个Actionnamespace:可选,指定该标签调用的Action所在的namespace. executeResult:可选,指定是否要将Action的处理结果页面包含到本页面。

默认是false,即不包含ignoreContextParams:可选,它指定该页面中的请求参数是否需要传入调用的Action、默认是false,即将本页的请求参数传入被调用的Action。

下面是本示例应用中的Action类,包含连个处理逻辑。

代码如下public class TagAction extednds ActionSupport{//封装用户请求参数的author属性private String author;//author的get和set的方法,省略……public String execute() throws Exception{return "done";}public String login() throws Exception{ServletActionContext.getRequest().setAttribute("author",getAuthor()); return "done";}}上面的Action类包含两个处理逻辑,可以在struts.xml文件中通过指定method属性来将该Action类映射成两个逻辑Action。

struts2的Action参数详细说明

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的配置文件

struts2的配置文件
t;
<!-- 定义默认的拦截器 每个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>

struts2例子三【Action】整理文

struts2例子三【Action】整理文

struts2例⼦三【Action】整理⽂Action 的配置是 Struts2 框架的⼀个基础⼯作单元,每⼀个 Action 的配置都有对应的处理类,当⼀个请求和 Action 的 name 相匹配时,框架将根据所配置的 Action 映射来决定对请求的处理。

1、Action 映射配置在 Action 映射中可以指定 result types 、异常处理器( exception handlers )及拦截器,但是,只有Action 的 name 属性是必需指定的,其他属性也可以在 package 范围内进⾏定义,供该 package 下配置的所有 Action 引⽤。

如:<action name="Logon" class="tutorial.Logon"><result name="input">Logon.jsp</result></action>2、Action 名称及命名注意:如果在你的 action 的 name 中包含有斜线(如: <action name="xxxxxx/xxxxxx" class="xxxxxx.xxxxx"/> ),你需要在 struts.xml 中进⾏如下配置: <constant name="struts.enable.SlashesInActionNames" value="true"/> ,但是,启⽤该配置也会产⽣⼀些副作⽤。

具体-。

-问度娘警告:谨慎使⽤在 action 名称中包含点 (er) 、斜线 (create/user) 和横线 (create-user) 的情况,虽然 action 的名称定义⾮常灵活,但是,当在 action 的 name 中使⽤点、斜线或横线时,应该谨慎。

Struts2一个Action内包含多个请求处理方法的处理,method的使用方法,struts2中的路径问题,通配符映射

Struts2一个Action内包含多个请求处理方法的处理,method的使用方法,struts2中的路径问题,通配符映射
return SUCCESS;
}
public String getName() {
return name;
}
public void setName(String name) {
= name;
return SUCCESS;
}
public User getUser() {
return user;
}
public void setUser(User user) {
er = user;
System.out.println("name=" + user.getName());
System.out.println("age=" + user.getAge());
return SUCCESS;
}
@Override
或者使用myeclipse经常用的,指定basePath。
Action Method
配置:
<package name="user" extends="struts-default" namespace="/user">
<action name="userAdd" class="erAction" method="add">
public class UserAction extends ActionSupport implements ModelDriven<User> {
private User user = new User();
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

配置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.xml文件中,我们可以为同一个action类配置不同的别名,并使用method属性。

在Struts.xml文件中为同一个Action类配置不同的别名<!-- 使用method属性 --><package name="methods" namespace="/"extends="struts-default"><!-- 对应着MethodAction里面的execute方法 --><action name="list" class="org.lesson05.MethodAction"><result name="success">/Methods/list.jsp</result></action><!-- 对应着MethodAction里面的add方法 --><action name="add" class="org.lesson05.MethodAction"method="add"><result name="success">/Methods/add.jsp</result> </action><!-- 对应着MethodAction里面的edit方法 --><action name="edit" class="org.lesson05.MethodAction"method="edit"><result name="success">/Methods/edit.jsp</result> </action><!-- 对应着MethodAction里面的delete方法 --><action name="delete"class="org.lesson05.MethodAction"method="delete"><result name="success">/Methods/delete.jsp</result> </action></package>对应的MethodAction类,代码如下:import com.opensymphony.xwork2.ActionSupport;public class MethodAction extends ActionSupport{@Overridepublic String execute() throws Exception{return SUCCESS;}public String add() throws Exception{return SUCCESS;}public String edit() throws Exception{return SUCCESS;}public String delete() throws Exception{return SUCCESS;}}使用action的method属性可以任意指定处理请求的方法(只要该方法和execute方法具有相同的格式),这样就可以在同一个类中完成相关的任务,而不需要去编写不同的Action类。

注意:Struts2在根据action元素的method属性查找方法时有两种途径:1.查找与method属性值完全一致的方法.2.查找doMethod()形式的方法.3.动态方法调用:另外一种无需配置就可以直接调用Action中的非execute方法的方式,是使用Struts2的动态方法调用。

动态方法调用是在action的名字中使用感叹号(!)来标识要调用的方法名,其语法格式为 actionName!methodName.action例如,我们配置了如下的action<action name="user" class="erAction"><result name="success">/Methods/list.jsp</result> </action>当请求/user!delete.action时,就会自动调用UserAction中的delete()方法提示,这种调用方式会带来安全隐患!4.模拟Struts1中的ForwardAction<action name="user"><result>/index.jsp</result></action>这样写就可以了.5.默认的action如果请求一个不存在的action,结果将是HTTP404错误。

在Struts2中,可以指定一个默认的action,如果一个请求没有其他的action匹配,那么默认的action将被执行。

默认的action使用default-action-ref元素来声明,如下所示:<!-- 默认action --><package name="defaultAction" namespace="/default"extends="struts-default"><default-action-ref name="error"></default-action-ref><action name="defaultaction"class="org.lesson05.DefaultAction"><result name="success">/defaultAction.jsp</result> </action><action name="error"><result>/error.jsp</result></action></package>注意:根据struts-2.0.dtd中定义的package元素的内容模型,default-acion-ref必须在action元素之前使用。

如果请求的是/default/defaultaction1.action,框架找不到映射到defaultaction1的action,那么名为error的action将被调用。

注意:每个包中都可以有它自己默认的action,但是每一个名称空间应该只有一个默认action。

如果具有相同名称空间的多个包中都声明了默认action,那么哪一个action才是默认的将无法保证。

注意:默认action只对action的访问有效。

如果你访问一个非action的资源,例如/user.jsp,而该页面不存在,这时仍会看到HTTP404错误。

如果想为整个Web 应用程序指定默认页面,需要在web.xml文件中对HTTP404错误指定相应的错误处理页面。

6.通配符映射随着Web应用程序的增加,所需的Action也会更多,从而导致大量的action映射,使用通配符可以减少action配置的数量,使一些具有类似行为的Action或者Action方法可以使用通用的样式来配置。

通配符即星号(*),用于匹配0个或多个字符,在配置action时,可以在action 元素的name属性中使用星号(*)来匹配任意的字符。

以下是在action映射中使用通配符:<action name="news*"class="org.struts2.lesson05.News{1}Action"><result name="success">/WEB-INF/News/{1}.jsp</result> </action>我们在action元素的name属性中使用了通配符(*),允许这个映射匹配所有以/news开始的URL,例如/newsAdd,/newsEdit,/newsDelete,但是,如果请求的是/newsEdit/add,那么这个映射就不会被匹配。

相关文档
最新文档