- 浏览: 159198 次
- 性别:
- 来自: 深圳
最新评论
-
决战冰河:
你好,我遇到一个相似的问题。soap请求包为:<para ...
axis 调用cxf boolean获取为null或者异常 -
dingding5060:
额,LZ啥意思?之前都不安装jdk的吗?不知道LZ是否有这样的 ...
org.apache.cxf.interceptor.Fault: Could not send Message -
lxdhq1011:
你好,我想问一下android调用webservice,如何调 ...
在android中调用webservice
查阅了网络上的文章,同时结合自己的实践,将今天的学习结果分享如下,欢迎大家拍砖。
/WEB-INF/lib/下包含以下jar包(但不只这两个)
struts2-core-2.1.6.jar
struts2-convention-plugin-2.1.6.jar
Interceptor代码如下:
view plaincopy to clipboardprint?
package com.kompin.kind.action;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class AuthorityInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
System.out.println("Enter AuthorityInterceptor");
Map session = ActionContext.getContext().getSession();
Object userId = session.get("userId");
if (userId == null)
{
return "login";
}
else
{
return invocation.invoke();
}
}
}
package com.kompin.kind.action;
import java.util.Map;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
public class AuthorityInterceptor extends AbstractInterceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
System.out.println("Enter AuthorityInterceptor");
Map session = ActionContext.getContext().getSession();
Object userId = session.get("userId");
if (userId == null)
{
return "login";
}
else
{
return invocation.invoke();
}
}
}
struts.xml文件配置如下:
view plaincopy to clipboardprint?
<struts>
<constant name="struts.118n.encoding" value="GBK"/>
<constant name="struts.custom.i18n.resources" value="globalMessages"/>
<constant name="struts.convention.action.mapAllMatches" value="true"/>
<package name="kompinInterceptor" extends="struts-default">
<interceptors>
<interceptor name="authority"
class="com.kompin.kind.action.interceptor.AuthorityInterceptor"/>
<interceptor-stack name="auctionStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="authority"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="auctionStack"/>
<global-results>
<result name="login">/WEB-INF/jsp/login.jsp</result>
<result name="exception">/WEB-INF/jsp/error.jsp</result>
</global-results>
</package>
</struts>
<struts>
<constant name="struts.118n.encoding" value="GBK"/>
<constant name="struts.custom.i18n.resources" value="globalMessages"/>
<constant name="struts.convention.action.mapAllMatches" value="true"/>
<package name="kompinInterceptor" extends="struts-default">
<interceptors>
<interceptor name="authority"
class="com.kompin.kind.action.interceptor.AuthorityInterceptor"/>
<interceptor-stack name="auctionStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="authority"/>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="auctionStack"/>
<global-results>
<result name="login">/WEB-INF/jsp/login.jsp</result>
<result name="exception">/WEB-INF/jsp/error.jsp</result>
</global-results>
</package>
</struts>
User action代码如下:
view plaincopy to clipboardprint?
package com.kompin.kind.action;
import java.util.List;
import java.util.Map;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.kompin.kind.business.UserBean;
import com.kompin.kind.service.UserService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
@ParentPackage("kompinInterceptor")
@InterceptorRefs({
@InterceptorRef("defaultStack")
})
@Results({
@Result(name="login", location="/WEB-INF/jsp/login.jsp")
})
public class UserAction extends ActionSupport {
private Integer id;
private String name;
private String pass;
private String email;
private UserService userSvc;
private List<UserBean> users;
private UserBean user;
@Action(value="/regist",
results={
@Result(name="success", type="dispatcher", location="/WEB-INF/jsp/login.jsp")
,@Result(name="failure", type="dispatcher", location="/WEB-INF/jsp/failure.jsp")
,@Result(name="input", type="dispatcher", location="/WEB-INF/jsp/regist.jsp")
}
)
public String regist()throws Exception{
try {
if(null == getName() ||null == getPass() || null == getEmail()){
return "input";
}
if (userSvc.addUser(getName(), getPass(), getEmail()) > 0) {
return "success";
}
return "failure";
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new Exception("注册用户出现异常");
}
}
@Action(value="/proShowUser",
interceptorRefs=@InterceptorRef("authority"),
results={
@Result(name="success", type="dispatcher", location="/WEB-INF/jsp/viewUser.jsp")
,@Result(name="failure", type="dispatcher", location="/WEB-INF/jsp/failure.jsp")
,@Result(name="input", type="dispatcher", location="/WEB-INF/jsp/login.jsp")
}
)
public String show()throws Exception{
try {
setUsers(userSvc.findAllUser());
return "success";
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new Exception("显示用户出现异常");
}
}
...略...
}
package com.kompin.kind.action;
import java.util.List;
import java.util.Map;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.kompin.kind.business.UserBean;
import com.kompin.kind.service.UserService;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
@ParentPackage("kompinInterceptor")
@InterceptorRefs({
@InterceptorRef("defaultStack")
})
@Results({
@Result(name="login", location="/WEB-INF/jsp/login.jsp")
})
public class UserAction extends ActionSupport {
private Integer id;
private String name;
private String pass;
private String email;
private UserService userSvc;
private List<UserBean> users;
private UserBean user;
@Action(value="/regist",
results={
@Result(name="success", type="dispatcher", location="/WEB-INF/jsp/login.jsp")
,@Result(name="failure", type="dispatcher", location="/WEB-INF/jsp/failure.jsp")
,@Result(name="input", type="dispatcher", location="/WEB-INF/jsp/regist.jsp")
}
)
public String regist()throws Exception{
try {
if(null == getName() ||null == getPass() || null == getEmail()){
return "input";
}
if (userSvc.addUser(getName(), getPass(), getEmail()) > 0) {
return "success";
}
return "failure";
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new Exception("注册用户出现异常");
}
}
@Action(value="/proShowUser",
interceptorRefs=@InterceptorRef("authority"),
results={
@Result(name="success", type="dispatcher", location="/WEB-INF/jsp/viewUser.jsp")
,@Result(name="failure", type="dispatcher", location="/WEB-INF/jsp/failure.jsp")
,@Result(name="input", type="dispatcher", location="/WEB-INF/jsp/login.jsp")
}
)
public String show()throws Exception{
try {
setUsers(userSvc.findAllUser());
return "success";
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new Exception("显示用户出现异常");
}
}
...略...
}
Kind action代码如下:
view plaincopy to clipboardprint?
package com.kompin.kind.action;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.kompin.kind.business.KindBean;
import com.kompin.kind.service.KindService;
import com.opensymphony.xwork2.ActionSupport;
@ParentPackage("kompinInterceptor")
@InterceptorRefs({
@InterceptorRef("auctionStack")
})
@Results({
@Result(name="login", location="/WEB-INF/jsp/login.jsp")
})
public class KindAction extends ActionSupport {
private KindService kindSvc;
private List kinds;
private String kindName;
private String kindDesc;
private KindBean kind;
/**
*
* @param kindSvc
*/
@Action(value="/proAddKind",
results={
@Result(name="success", type="chain", location="proViewKind")
,@Result(name="failure", type="dispatcher", location="/WEB-INF/jsp/addKind.jsp")
,@Result(name="input", type="dispatcher", location="/WEB-INF/jsp/addKind.jsp")
}
)
public String addKind()throws Exception{
try {
if (kindSvc.addKind(kindName, kindDesc) > 0) {
return "success";
}
return "input";
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "input";
}
}
...略...
}
package com.kompin.kind.action;
import java.util.List;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.InterceptorRefs;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.kompin.kind.business.KindBean;
import com.kompin.kind.service.KindService;
import com.opensymphony.xwork2.ActionSupport;
@ParentPackage("kompinInterceptor")
@InterceptorRefs({
@InterceptorRef("auctionStack")
})
@Results({
@Result(name="login", location="/WEB-INF/jsp/login.jsp")
})
public class KindAction extends ActionSupport {
private KindService kindSvc;
private List kinds;
private String kindName;
private String kindDesc;
private KindBean kind;
/**
*
* @param kindSvc
*/
@Action(value="/proAddKind",
results={
@Result(name="success", type="chain", location="proViewKind")
,@Result(name="failure", type="dispatcher", location="/WEB-INF/jsp/addKind.jsp")
,@Result(name="input", type="dispatcher", location="/WEB-INF/jsp/addKind.jsp")
}
)
public String addKind()throws Exception{
try {
if (kindSvc.addKind(kindName, kindDesc) > 0) {
return "success";
}
return "input";
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "input";
}
}
...略...
}
要点说明:
1. @ParentPackage("kompinInterceptor")必须和struts.xml的package的name一致,否则启动tomcat会报错:
"Unable to find interceptor class referenced by ref-name ..."
2. 如果Action中并不是所有的方法都要auctionStack拦截,参考UserAction的代码:
view plaincopy to clipboardprint?
@InterceptorRefs({
@InterceptorRef("defaultStack")
})
@InterceptorRefs({
@InterceptorRef("defaultStack")
})
3. 如果Action中所有的方法都经过同一个拦截器拦截,,参考KindAction的代码:
view plaincopy to clipboardprint?
@InterceptorRefs({
@InterceptorRef("auctionStack")
})
@InterceptorRefs({
@InterceptorRef("auctionStack")
})
4. 如果Action中的某些方法需要特定的拦截器拦截,参考UserAction的代码(请留意proShowUser的Action注解与regist的Action注解的不同点):
view plaincopy to clipboardprint?
@Action(value="/proShowUser",
interceptorRefs=@InterceptorRef("authority"),
results={
@Result(name="success", type="dispatcher", location="/WEB-INF/jsp/viewUser.jsp")
,@Result(name="failure", type="dispatcher", location="/WEB-INF/jsp/failure.jsp")
,@Result(name="input", type="dispatcher", location="/WEB-INF/jsp/login.jsp")
}
)
@Action(value="/proShowUser",
interceptorRefs=@InterceptorRef("authority"),
results={
@Result(name="success", type="dispatcher", location="/WEB-INF/jsp/viewUser.jsp")
,@Result(name="failure", type="dispatcher", location="/WEB-INF/jsp/failure.jsp")
,@Result(name="input", type="dispatcher", location="/WEB-INF/jsp/login.jsp")
}
)
5. 留意<interceptor-stack name="auctionStack">的定义。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/kompin_dmx/archive/2010/11/06/5992256.aspx
发表评论
-
memcache集群服务:memagent配置使用
2013-05-25 18:29 1042本文来自:http://zhumeng8337797.blog ... -
FastDFS、nginx配置手记
2013-05-23 20:25 877FastDFS、nginx配置手记 (20 ... -
在SQLServer中使用正则表达式
2012-12-21 10:41 2209本文来自: http://www.cnblogs.com/sd ... -
struts convention plugin to scan jar files for actions
2012-08-27 09:40 960本文摘自:http://lerluc.iteye.com/ ... -
CMD命令大全
2011-12-10 20:13 1009命令简介 cmd是command的缩写.即命令行 。 ... -
Freemarker+XML导出Word
2011-09-27 17:58 4891本来来自http://blog.csdn.net/x ... -
struts2中显示message
2011-06-16 09:36 1032在struts2.0的action中如何 ... -
使用 Struts2.16 annotation 注解方式配置拦截器的注意事项
2011-06-16 00:11 1421最近在使用Struts2.16 的An ... -
Spring+Hibernate使用时jar包的冲突[转]
2011-05-28 09:03 905在使用Spring的AOP编程时,会用到这几个lib:asm- ... -
Struts2的REST插件[转]
2011-05-28 08:56 3239此REST插件简化了人们和电脑客户端对REST风格资源的访问。 ... -
java23种设计模式简述
2011-05-24 09:59 8051、工厂模式:客户类和 ... -
onbeforeunload事件
2011-05-11 10:16 1042<script> function LeaveW ... -
Returning Data from Stored Procedures
2011-04-13 08:56 931该文章来自:http://www.cleardata.biz/ ... -
Sql Server锁表LOCK设置
2011-02-24 12:14 1113Sql Server锁表就限制不同的事物在同一时间内不允许同时 ...
相关推荐
文件Spring_3300_Registration_11可能是一个示例项目,包含了上述整合的实例,包括Action、Service、DAO、配置文件等,开发者可以通过学习和运行这个项目来理解和实践Struts2、Hibernate3、Spring2.5的整合以及注解...
在给定的“struts2-Annotation”主题中,重点是Struts2框架如何利用注解(Annotation)来增强其功能和简化配置。注解是一种元数据,可以在代码中嵌入,提供有关类、方法或字段的额外信息,而无需编写XML配置文件。 ...
Struts2注解是Java开发框架Struts2中的一种特性,它引入了JDK1.5及更高版本的注解(Annotation)概念,使得开发者能够更简洁地配置Struts2框架,减少XML配置文件的使用,提高开发效率。注解提供了一种方式,将元数据...
10. **注解支持(Annotations)**:从Struts2.1版本开始,框架引入了注解支持,允许开发者在Action类和方法上使用注解进行配置,这部分代码位于`org.apache.struts2.convention.annotation`包中。 在研究源码时,...
标题中的“基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发”指的是使用注解的方式将三个流行的Java企业级框架——Struts2、Hibernate和Spring进行集成开发。这样的集成有助于简化配置,提高代码的可读性...
本实例将详细解析这三大框架如何协同工作,提升开发效率,并提供一个基于注解的配置方式。 Struts2作为MVC框架的核心,负责控制应用程序的流程,它处理HTTP请求,调度到相应的Action,然后将结果返回给用户。Struts...
import org.apache.struts2.interceptor.FileUploadInterceptor; import com.opensymphony.xwork2.ActionSupport; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention....
十二、总结 本教程对struts2的基本知识进行了一些说明,关于struts2的更多详细内容应参看struts2的官方文档及提供的app实例。 下面对struts2的基本执行流程作一简要说明,此流程说明可以结合官方提供的struts2结构图...
Struts2是一个基于Java的开源Web应用程序框架,它继承了Struts1的优良特性,并且增加了许多新的功能,如拦截器(Interceptors)、结果类型(Result Types)、动态方法调用等。Struts2采用MVC架构模式,易于扩展,...
import javax.annotation.Resource; import org.hibernate.Session; import org.hibernate.SessionFactory; import com.cjdx.domain.User; import com.opensymphony.xwork2.ActionContext; import ...
- **配置灵活性**:Struts2支持XML配置文件、注解(Annotation)等多种配置方式,使得配置更为灵活方便。 - **拦截器机制**:Struts2引入了拦截器机制,可以用来处理请求前后的过滤工作,如日志记录、事务管理等,...
- **Struts2提供了基于Annotation和XML的验证方式**,可以在Action类的字段上直接定义验证规则,或者在单独的验证文件中定义。 6. **国际化与本地化** - Struts2支持多语言环境,通过资源文件管理不同语言的文本...
Struts2是一个强大的Java web应用程序框架,用于构建和部署企业级的、基于MVC(Model-View-Controller)模式的Web应用。它继承了Struts1的优点并吸收了其他框架如WebWork的精华,提供了更丰富的功能和更好的性能。本...
在IT领域,特别是Java开发框架中,Spring和Struts2都是极为重要的技术栈,它们各自通过注解(Annotation)机制提供了强大的功能扩展性和代码简洁性。以下是对Spring和Struts2注解的深入解析和使用指南。 ### Spring...
- **Interceptor(拦截器)**:Struts2的拦截器是处理请求和响应之间逻辑的重要组件。通过注解可以定制和配置拦截器链。 - **Value Stack**:Struts2中的值栈是一个数据容器,用于存储Action对象和其他模型数据,...
- **灵活性**:Struts2框架非常灵活,支持多种配置方式,如XML配置文件、注解(annotation)等。 - **拦截器机制**:拦截器提供了一种非常强大的方式来处理横切关注点,允许开发者轻松添加新的功能而不会影响现有的...
Struts2的核心是拦截器(Interceptor)机制,通过一系列可配置的拦截器来处理请求和响应。Struts2提供了丰富的内置拦截器,这些拦截器可以单独使用,也可以组合使用,以满足不同的业务需求。接下来将详细介绍Struts2...
Struts是Apache软件基金会 Jakarta项目下的一款开源框架,主要用于构建基于Java EE的Web应用程序。它遵循Model-View-Controller(MVC)设计模式,旨在简化开发过程,提供更好的可维护性和可扩展性。本篇文章将深入...
系统的核心开发技术是基于注解(Annotation)的Struts2、Spring和Hibernate(S2SH)框架的整合应用。注解在Java编程中广泛用于简化配置,提高代码可读性和可维护性。S2SH是Web开发中常用的三大框架组合,它们分别...