2.action的配置、常量配置以及路径的配置
来源:互联网 发布:sql 超出日期范围 编辑:程序博客网 时间:2024/05/01 16:38
一、Action类的作用:接收和传递数据,调用逻辑。业务处理调度。
接收客户端的请求参数数据,调用业务逻辑类处理逻辑,返回结果码(响应资源的逻辑名-->资源的真实路径)。
1) Struts2中最简单的要求就是你的Action类中要提供一个默认的请求处理方法,这个方法的签名如下:
public String execute() throws Exception{ ....}
2) 在实际应用中,为了方便使用,一般都会实现Action接口或继承自ActionSupport类。
二、Struts2中的配置文件:约定大于配置
★1) struts.xml: 核心配置文件,Action映射、Result映射、拦截器、常量等
开发人员经常编辑的配置文件。
2) struts.properties 常量属性配置文件,改变框架的行为。这个配置文件中的常量配置可以配置在struts.xml文件中。
Struts2内置了默认的常量配置文件:default.properties
3) struts-default.xml 在core包下自带的基础配置文件,为框架提供默认设置。此文件会自动包含到struts.xml中。
4) struts-plugin.xml 给struts2框架添加插件的配置文件。
三、struts2.xml中常量的配置
struts.i18n.encoding=UTF-8:请求消息体的编码方式
★struts.action.extension=action:指定被struts2处理的请求后缀类型。多个用逗号隔开。如:action,do,go,htm
★struts.configuration.xml.reload=false:当struts.xml改动后,是否重新加载。默认值为false(生产环境下使用),开发阶段最好打开
★struts.devMode=false:是否使用struts的开发模式。开发模式会有更多的调试信息。默认值为false(生产环境下使用),开发阶段最好打开
★struts.serve.static.browserCache=true:设置浏览器是否缓存静态内容。默认值为true(生产环境下使用),开发阶段最好关闭。
★struts.objectFactory=spring:指定由spring负责action对象的创建
struts.enable.SlashesInActionNames=false:启用Action的name是否支持斜线(/)。不建议使用
struts.enable.DynamicMethodInvocation=true:启用动态方法调用
struts.ui.theme=simple:UI主题类型
四、struts.xml中包的配置: struts.xml文件中使用包(package)来管理Action、Result、拦截器、拦截器栈等配置信息。
<package>常用属性
1) name:包名,作为被其它包引用的标识。必须的。
实际应用中,应该把一组业务功能相关的Action放在同一个包下。
2) extends:指定要扩展的包名。
一般会继承自struts-default包。struts-default包是struts2内置的,它定义了struts2内部的众多拦截器和Result类型。
3) namespace:指定名称空间。Struts2中Action的请求URI映射由namespace和action名称两部分组成。
如果不指定该属性,默认的命名空间为""(空字符串)。
4) abstract:声明包为抽象的。抽象包中不能配置action,只能用于被继承。
五、struts.xml中action的配置
1. name: 指定action的名称。其实就是用于匹配请求的URL路径。默认情况下不能使用“/”
2. class: 指定处理这个请求的Action类的全限定名
3. method: 指定处理这个请求的Action类的方法名。如果不配置这个属性,默认使用execute方法
4. converter: 指定Action类使用的类型转换器的全限定名。很少使用
六、Struts2应用中请求URL的搜索顺序:Struts2中请求URL的匹配是由namespace+“/”+name组合而成的。
例如有这样一个url:http://server:port/appName/path1/path2/path3/test.action
1. 首先寻找namespace为“/path1/path2/path3”的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package则转步骤2;
2. 寻找namespace为“/path1/path2”的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package,则转步骤3;
3. 寻找namespace为“/path1”的package,如果存在这个package,则在这个package中寻找名字为test的action,如果仍然不存在这个package,则转步骤4;
4. 寻找namespace为“/”的package,如果存在这个package,则在这个package中寻找名字为test的action,如果仍然不存在这个package,则转步骤5;
5. 在默认的namespace的package下找名字为test的action,如果还是找不到,页面提示找不到action。
★★★★★注意:当设置struts.enable.SlashesInActionNames=true时,一定会通过namespace组合action的name来做完全匹配。
所以,个人不建议在action的name值中启用/。。。。
七、 一个Action中多个请求处理方法(类似于struts1中的DispatcherAction的功能)
1) 每个请求配置一个Action,并指定请求处理的方法:
<action name="user_list" class="...UserAction" method="list">...
<action name="user_add" class="...UserAction" method="add">...
2) 使用通配符针对同一类型的请求配置一个Action
<action name="user_*" class="...UserAction" method="{1}">...
★3) 使用动态方法调用:配置启用动态方法调用struts.enable.DynamicMethodInvocation=true
<action name="user" class="...UserAction">...</action>
请求路径方式:user!list.action--->执行UserAction中的list方法
user!add.action--->执行UserAction中的add方法
4) 其实使用通配符和动态方法这两种方式会存在一些安全漏洞。。。
八、 请求数据封装到Action(JSP-->Action): 客户端请求中提交的参数数据是通过Struts2内置的一个叫ParametersInterceptor的拦截器来完成自动封装到Action中的。
1) Field-Driven属性驱动方式:在Action中定义与客户端请求中的参数同名的属性并提供Getters和Setters方法。
2) Model-Driven模型驱动方式:客户端请求中的参数数据封装到Action中的某个对象的属性中。(需要ModelDrivenInterceptor拦截器的支持)。
JSP: acc.lname=张三 --> ParameterInterceptor -->OGNL来解析参数名-->数据类型转换-->传递值 --> Action: user(lname)
user.id --> user(id)
id --> id;
九. Action传递数据到下一个资源(Action-->JSP):
0) ActionContext:代表当前Action执行的上下文。Action实例所操作到的数据都可以往ActionContext中存放,可以从中取。
ActionContext的实例是绑定到当前线程(ThreadLocal)上,也不用考虑线程安全问题。。。
获取ActionContext的实例的方法: ActionContext context = ActionContext.getContext();
1) 使用ActionContext提供的三个Map用于代表request/session/application三个属性作用域:
a) actionContext.put("key", Object value); --> 相当于request.setAttribute("key", Object value);
b) actionContext.getSession().put("key", Object value); --> session.setAttribute("key", Object value);
c) actionContext.getApplication().put("key", Object value); --> servletContext.setAttribute("key", Object value);
2) 直接使用ServletAPI:struts2也提供了一个叫ServletActionContext的实例,用于获取Servlet中的Request,Response, Session, ServletContext实例
HttpServletRequest servletActionContext.getRequest();
ServletContext servletActionContext.getServletContext();
十、 Result的配置:代表Action执行后的结果。
1) Struts2提供了多种Result类型的实现:
★a) ServletDispatcherResult:servlet请求分派。默认使用
★b) ServletRedirectResult:servlet重定向。
c) ServletActionRedirectResult:重定向到另一个Action映射
d) FreemarkerResult:用FreeMarker模板引擎呈现视图
2) <result>标签的配置属性:
a) name: 指定Result的逻辑名。不指定时,默认就是"success"
b) type:指定Result的类型。可选值: dispatcher(请求分派,默认值)、redirect(重定向)、redirectAction(重定向到另一个Action)、freemarker(使用Freemarker呈现视图)
c) 标签的主体内容:就是资源的真实路径名。建议使用绝对路径。
3) 局部Result和包内全局Result:
a) 作为<Action>标签的子标签时:局部的。优先级高
b) 作为<global-results>标签的子标签时:包内全局的。
十一、 异常的处理:Struts2通过拦截器(ExceptionMappingInterceptor)对Action抛出的异常进行捕获。
在struts.xml文件中使用<exception-mapping>标记来配置
十二、 为一个Struts2应用配置多个配置文件:
在struts.xml可以通过<include>标签来包含子配置文件。方便团队开发。
接收客户端的请求参数数据,调用业务逻辑类处理逻辑,返回结果码(响应资源的逻辑名-->资源的真实路径)。
1) Struts2中最简单的要求就是你的Action类中要提供一个默认的请求处理方法,这个方法的签名如下:
public String execute() throws Exception{ ....}
2) 在实际应用中,为了方便使用,一般都会实现Action接口或继承自ActionSupport类。
二、Struts2中的配置文件:约定大于配置
★1) struts.xml: 核心配置文件,Action映射、Result映射、拦截器、常量等
开发人员经常编辑的配置文件。
2) struts.properties 常量属性配置文件,改变框架的行为。这个配置文件中的常量配置可以配置在struts.xml文件中。
Struts2内置了默认的常量配置文件:default.properties
3) struts-default.xml 在core包下自带的基础配置文件,为框架提供默认设置。此文件会自动包含到struts.xml中。
4) struts-plugin.xml 给struts2框架添加插件的配置文件。
三、struts2.xml中常量的配置
struts.i18n.encoding=UTF-8:请求消息体的编码方式
★struts.action.extension=action:指定被struts2处理的请求后缀类型。多个用逗号隔开。如:action,do,go,htm
★struts.configuration.xml.reload=false:当struts.xml改动后,是否重新加载。默认值为false(生产环境下使用),开发阶段最好打开
★struts.devMode=false:是否使用struts的开发模式。开发模式会有更多的调试信息。默认值为false(生产环境下使用),开发阶段最好打开
★struts.serve.static.browserCache=true:设置浏览器是否缓存静态内容。默认值为true(生产环境下使用),开发阶段最好关闭。
★struts.objectFactory=spring:指定由spring负责action对象的创建
struts.enable.SlashesInActionNames=false:启用Action的name是否支持斜线(/)。不建议使用
struts.enable.DynamicMethodInvocation=true:启用动态方法调用
struts.ui.theme=simple:UI主题类型
四、struts.xml中包的配置: struts.xml文件中使用包(package)来管理Action、Result、拦截器、拦截器栈等配置信息。
<package>常用属性
1) name:包名,作为被其它包引用的标识。必须的。
实际应用中,应该把一组业务功能相关的Action放在同一个包下。
2) extends:指定要扩展的包名。
一般会继承自struts-default包。struts-default包是struts2内置的,它定义了struts2内部的众多拦截器和Result类型。
3) namespace:指定名称空间。Struts2中Action的请求URI映射由namespace和action名称两部分组成。
如果不指定该属性,默认的命名空间为""(空字符串)。
4) abstract:声明包为抽象的。抽象包中不能配置action,只能用于被继承。
五、struts.xml中action的配置
1. name: 指定action的名称。其实就是用于匹配请求的URL路径。默认情况下不能使用“/”
2. class: 指定处理这个请求的Action类的全限定名
3. method: 指定处理这个请求的Action类的方法名。如果不配置这个属性,默认使用execute方法
4. converter: 指定Action类使用的类型转换器的全限定名。很少使用
六、Struts2应用中请求URL的搜索顺序:Struts2中请求URL的匹配是由namespace+“/”+name组合而成的。
例如有这样一个url:http://server:port/appName/path1/path2/path3/test.action
1. 首先寻找namespace为“/path1/path2/path3”的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package则转步骤2;
2. 寻找namespace为“/path1/path2”的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package,则转步骤3;
3. 寻找namespace为“/path1”的package,如果存在这个package,则在这个package中寻找名字为test的action,如果仍然不存在这个package,则转步骤4;
4. 寻找namespace为“/”的package,如果存在这个package,则在这个package中寻找名字为test的action,如果仍然不存在这个package,则转步骤5;
5. 在默认的namespace的package下找名字为test的action,如果还是找不到,页面提示找不到action。
★★★★★注意:当设置struts.enable.SlashesInActionNames=true时,一定会通过namespace组合action的name来做完全匹配。
所以,个人不建议在action的name值中启用/。。。。
七、 一个Action中多个请求处理方法(类似于struts1中的DispatcherAction的功能)
1) 每个请求配置一个Action,并指定请求处理的方法:
<action name="user_list" class="...UserAction" method="list">...
<action name="user_add" class="...UserAction" method="add">...
2) 使用通配符针对同一类型的请求配置一个Action
<action name="user_*" class="...UserAction" method="{1}">...
★3) 使用动态方法调用:配置启用动态方法调用struts.enable.DynamicMethodInvocation=true
<action name="user" class="...UserAction">...</action>
请求路径方式:user!list.action--->执行UserAction中的list方法
user!add.action--->执行UserAction中的add方法
4) 其实使用通配符和动态方法这两种方式会存在一些安全漏洞。。。
八、 请求数据封装到Action(JSP-->Action): 客户端请求中提交的参数数据是通过Struts2内置的一个叫ParametersInterceptor的拦截器来完成自动封装到Action中的。
1) Field-Driven属性驱动方式:在Action中定义与客户端请求中的参数同名的属性并提供Getters和Setters方法。
2) Model-Driven模型驱动方式:客户端请求中的参数数据封装到Action中的某个对象的属性中。(需要ModelDrivenInterceptor拦截器的支持)。
JSP: acc.lname=张三 --> ParameterInterceptor -->OGNL来解析参数名-->数据类型转换-->传递值 --> Action: user(lname)
user.id --> user(id)
id --> id;
九. Action传递数据到下一个资源(Action-->JSP):
0) ActionContext:代表当前Action执行的上下文。Action实例所操作到的数据都可以往ActionContext中存放,可以从中取。
ActionContext的实例是绑定到当前线程(ThreadLocal)上,也不用考虑线程安全问题。。。
获取ActionContext的实例的方法: ActionContext context = ActionContext.getContext();
1) 使用ActionContext提供的三个Map用于代表request/session/application三个属性作用域:
a) actionContext.put("key", Object value); --> 相当于request.setAttribute("key", Object value);
b) actionContext.getSession().put("key", Object value); --> session.setAttribute("key", Object value);
c) actionContext.getApplication().put("key", Object value); --> servletContext.setAttribute("key", Object value);
2) 直接使用ServletAPI:struts2也提供了一个叫ServletActionContext的实例,用于获取Servlet中的Request,Response, Session, ServletContext实例
HttpServletRequest servletActionContext.getRequest();
ServletContext servletActionContext.getServletContext();
十、 Result的配置:代表Action执行后的结果。
1) Struts2提供了多种Result类型的实现:
★a) ServletDispatcherResult:servlet请求分派。默认使用
★b) ServletRedirectResult:servlet重定向。
c) ServletActionRedirectResult:重定向到另一个Action映射
d) FreemarkerResult:用FreeMarker模板引擎呈现视图
2) <result>标签的配置属性:
a) name: 指定Result的逻辑名。不指定时,默认就是"success"
b) type:指定Result的类型。可选值: dispatcher(请求分派,默认值)、redirect(重定向)、redirectAction(重定向到另一个Action)、freemarker(使用Freemarker呈现视图)
c) 标签的主体内容:就是资源的真实路径名。建议使用绝对路径。
3) 局部Result和包内全局Result:
a) 作为<Action>标签的子标签时:局部的。优先级高
b) 作为<global-results>标签的子标签时:包内全局的。
4) 在Result中配置参数:<result name="xxx">/xxx.jsp?id=${id}</result>
此时在action 的类中需要有id的set和get方法,在相应的方法中对id赋值即可
十一、 异常的处理:Struts2通过拦截器(ExceptionMappingInterceptor)对Action抛出的异常进行捕获。
在struts.xml文件中使用<exception-mapping>标记来配置
十二、 为一个Struts2应用配置多个配置文件:
在struts.xml可以通过<include>标签来包含子配置文件。方便团队开发。
0 0
- 2.action的配置、常量配置以及路径的配置
- struts2零配置 2.关于Action的配置初尝试和annotation的struts2常量
- struts2的常量配置以及常用常量的相关介绍
- 配置调用action的步骤以及注意事项
- struts2 常量的配置
- Sturts2的常量配置
- struts的常量配置
- Struts2的常量配置
- Struts2的常量配置
- struts2常量的配置
- struts2的常量配置
- struts2的常量配置
- Action路径配置
- Action的配置
- 笔记action的配置
- STRUTS2的Action配置
- Action的配置
- struts2的Action配置
- 第十周项目三--血型统计
- 在这里
- 购车指南首次买车必看系列之(一): 保险篇
- 第10周项目2-M$pszi$y嘛意思+扩展1加密
- 初学者学习SAP步骤
- 2.action的配置、常量配置以及路径的配置
- POJ Coins
- doubango开发指南之tinySAK
- 【学习笔记】web程序中文乱码过滤器
- 水温控制系统设计(AVRmega16单片机)代码编写(包含显示器、单片机、温度传感器)
- 揭密Oracle之七种武器之四:揭密Buffer Cache中的链表【主】
- Hibernate简介
- 今天我上央视了!
- 如何使用Ant自动构建Android版本