- 浏览: 231064 次
- 性别:
- 来自: 武汉
-
最新评论
-
spp_1987:
org.springframework.beans.facto ...
Hibernate4之多对多双向关联 -
spp_1987:
后台保存订单下面 有很多订单 调了 对应什么方法 实现的?
Hibernate4之多对多双向关联 -
spp_1987:
订单 和 商品之间 有中间表存在吗???
Hibernate4之多对多双向关联 -
spp_1987:
跟 官方 hibernate4.2.5提供 的 manytom ...
Hibernate4之JPA规范配置详解 -
zhuguopei_java:
谢谢。楼主你这是解释源码吗
Struts2中action接收参数的三种方法及ModelDriven和Preparable接口结合JAVA反射机制的灵活用法
文章列表
struts2 井号,星号,百分号
“#”主要有三种用途:
1. 访问OGNL上下文和Action上下文,#相当于ActionContext.getContext();可以访问这几个ActionContext中的属性:
parameters#parameters.id[0]作用相当于request.getParameter("id")request#request.userName相当于request.getAttribute("userName")session#session.userName相当于session.getAttribute(" ...
下面这段话能完美诠释拦截器的含义:
拦截器是AOP中的概念,它本身是一段代码,可以通过定义“织入点”,来指定拦截器的代码在“织入点”的前后执行,从而起到拦截的作用。Struts2的Interceptor,其拦截的对象是Action代码,可以定义在Action代码之前或者之后执行拦截器的代码。
这是Struts2.3.4中Interceptor结构图:
图中,我们可以发现,Struts2的Interceptor一层一层,把Action包裹在最里面。这样的结构,大概有以下一些特点:
1. 整个结构就如同一个堆栈,除了Action以外,堆栈中的其他元素是Interceptor
2. ...
Struts2的服务器端验证框架有四种方式校验,一种是利用dojo插件使用ajax实现页面无刷新的校验,一种是调用验证框架即配置一个xml文件的形式,另一种是在Action中的validate()方法手动校验,还有一种是零配置里面用annotation的形式校验。
如果要使用Struts2的验证框架,首先要开启这个拦截器。在文档中是这样介绍的:
默认的拦截器堆栈defaultStack已经在开启验证。在创建自己的interceptor-stack时一定要包括validation和workflow拦截器。
<interceptor-stack name="defaultSta ...
如果要使用Struts2的验证框架,首先要开启这个拦截器。在文档中是这样介绍的:
默认的拦截器堆栈defaultStack已经在开启验证。在创建自己的interceptor-stack时一定要包括validation和workflow拦截器。
<interceptor-stack name="defaultStack">
...
<interceptor-ref name="validation">
<param name="excludeMethods">inpu ...
在struts2中需要做国际化的有:
jsp页面的国际化,action错误信息的国际化,转换错误信息的国际化,校验错误信息的国际化
<constant name="struts.locale" value="zh_CN"/>
<!-- 多个文件的话用逗号隔开 -->
<constant name="struts.custom.i18n.resources" value="message"/>
中英文切换功能,只需要在请求的url后面带上参数request_locale ...
在web应用中通常用下面几种方法解决中文问题:
1.HTML页面中文问题
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Insert title here</title>
</head>
<body>
</body>
</html>
2.JSP页面中文问题
<%@ page l ...
下面这个struts.xml囊括了所有可能用到的标签用法,例如配置全局的异常处理<global-exception-mappings>全局结果result<global-results>,缺省action-class类名<default-class-ref class=""/>,还有缺省的action名字<default-action-ref name="" />
<?xml version="1.0" encoding="UTF-8" ?>
< ...
这是目前为止收集的struts.xml中比较常用的常量值,包括现在的最新版本struts2.3.4常用的也就这些了。
下面是零配置中的常用的常量配置:
<constant name="struts.convention.action.disableScanning" value="false"/> ...
struts2.3.4的Predefined Result Types,比struts2.2.3要多出一种:
Chain Used for Action Chaining
Dispatcher Used for web resource integration, including JSP integration
FreeMarker Used for FreeMarker integration
HttpHeader ...
在Struts2.3.4的struts-default.xml文件中配置了很多拦截器栈interceptor-stack:
1.basicStack
2.validationWorkflowStack
3.fileUploadStack
4.modelDrivenStack
5.chainStack
6.i18nStack
7.paramsPrepareParamsStack
8.defaultStack
9.completeStack(这个跟defaultStack一模一样)
10.executeAndWaitStack
其中defaultStack与paramsPrepareParamsSt ...
Struts2中Action接收参数的方法主要有以下三种:
1.使用Action的属性接收参数(最原始的方式):
a.定义:在Action类中定义属性,创建get和set方法;
b.接收:通过属性接收参数,如:userName;
c.发送:使用属性名传递参数,如:user1!add?userName=jim;
2.使用DomainModel接收参数:
a.定义:定义Model类,在Action中定义Model类的对象(不需要new),创建该对象的get和set方法;
b.接收:通过对象的属性接收参数,如:user.getUserName();
c ...
JavaEE把MVC设计模式引入了web领域,并在此基础上机构出了称为Model2的体系。
从上图不难看出,其实在配置文件配置的拦截器顺序,在ActionInvocation调度的时候,其实是一个递归算法,每个interceptor类里面代码被invocation.invoke()分成 ...