1.登陆Action
/*
* action也需要在这个路径(/anno)下
* 如:@Action(value="/anno/login"
* */
//可以这样(在WEB-INF下):@ResultPath("/WEB-INF/jsps")
@ParentPackage("annoInterceptorPackage")
@ResultPath("/anno")
@Results({
@Result(name="error",location="anno_login_error.jsp",type="redirect"),
@Result(name="success",location="anno_login_success.jsp",type="redirect")
})
@ExceptionMappings({
@ExceptionMapping(result="error",exception="java.lang.Exception")
})
@InterceptorRefs({
@InterceptorRef("namePrefixInterceptor"),
@InterceptorRef("defaultStack")
})
public class LoginAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private User user;
private String injectMsg;
@Actions({
@Action(value="/anno/login",params={"injectMsg","hi,mtea"}
/*
//当配置了Action级的结果视图,则可以不需要方法级别的结果视图
,results={
@Result(name="error",location="/anno/anno_login_error.jsp",type="redirect"),
@Result(name="success",location="/anno/anno_login_success.jsp",type="redirect")
}
*/
/*
//当配置了Action级的拦截器,则可以不需要方法级别的拦截器
,interceptorRefs={
@InterceptorRef("namePrefixInterceptor"),
@InterceptorRef("defaultStack")
}
*/
)
})
public String login() throws Exception {
System.out.println("getInjextMsg():"+getInjectMsg());
if (user != null) {
if (user.getUsername().equals("mtea") && user.getPassword().equals("123")) {
System.out.println("login()()-SUCCESS");
return SUCCESS;
} else {
System.out.println("login()()-ERROR");
throw new Exception("测试异常");
//return ERROR;
}
} else {
return ERROR;
}
2.用户名前缀拦截器
/**
* 登陆名前缀拦截
*/
public class NamePrefixInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = 1L;
@Override
public String intercept(ActionInvocation invocation) throws Exception {
HttpServletRequest request = ServletActionContext.getRequest();
String username=request.getParameter("user.username");
System.out.println("NamePrefixInterceptor-intercept()-username:"+username);
if(username.startsWith("m")){
return Action.ERROR;
}else{
return invocation.invoke();
}
}
}
3.配置拦截器
<package name="annoInterceptorPackage" namespace="/anno" extends="struts-default">
<interceptors>
<interceptor name="namePrefixInterceptor" class="com.mtea.erp.interceptor.NamePrefixInterceptor"/>
</interceptors>
</package>
4.简单截图
注意:
annoInterceptorPackage 这个名字需要和 @ParentPackage("annoInterceptorPackage") 一样,否则的话,tomcat出错!
<constant name="struts.devMode" value="true" />
<constant name="struts.convention.classes.reload" value="true" />
同时配置的话,估计也会出错!
- 大小: 4.6 KB
分享到:
相关推荐
在Struts2中,Annotation注解的引入为开发者提供了更加灵活和便捷的配置方式,使得无需在XML配置文件中进行繁琐的设置,可以直接在类或方法上通过注解来进行配置。本文将深入探讨Struts2中的Annotation配置,以及...
文件Spring_3300_Registration_11可能是一个示例项目,包含了上述整合的实例,包括Action、Service、DAO、配置文件等,开发者可以通过学习和运行这个项目来理解和实践Struts2、Hibernate3、Spring2.5的整合以及注解...
在进行Struts 2与注解的实践时,开发者需要注意以下几点: 1. 注解的使用可以减少XML配置,但并不意味着完全取代。有些情况下,XML配置可能更为灵活。 2. 需要理解每个注解的作用和用法,避免滥用导致的混乱。 3. ...
在这个基于Annotation的小DEMO中,我们将探讨如何使用Struts2.3.15的注解特性来创建一个简单的Web应用。 首先,Struts2的注解简化了Action类的配置。在传统的Struts2配置中,我们通常会在struts.xml文件中定义每个...
本文将详细解析"Struts2+Spring2+Hibernate3 Annotation的整合"这一主题,主要涵盖以下几个方面: 1. **Struts2框架**:Struts2是一个基于MVC设计模式的Web应用框架,用于简化Java Web应用程序的开发。它的主要功能...
4. **SSH2 Annotation的整合**:在SSH2-Annotation项目中,Spring、Hibernate和Struts2通过注解进行了深度融合。Spring通过扫描注解找到并初始化Bean,Hibernate通过注解解析实体类与数据库表的映射,Struts2则通过...
Struts2是一个强大的Java web应用程序框架,用于构建和部署企业级的MVC(Model-View-Controller)应用。第18章的源码主要涵盖了Struts2与Struts1的集成以及Struts2的验证机制。以下是这些源码中涉及的关键知识点: ...
在“struts零配置HelloWorld-Annotation”这个项目中,我们将重点探讨如何利用注解来实现Struts2框架的配置,这对于初学者来说是一个很好的起点。 在传统的Struts2配置中,我们需要在`struts.xml`文件中手动定义每...
这种设计理念源于Ruby on Rails框架的成功实践,并被广泛应用于包括Struts2在内的多个现代Web框架中。 #### 二、Struts2中的零配置实现:Convention插件 **Struts2 Convention插件**是实现零配置的关键组件。它...
Struts2、Hibernate和Spring是Java开发中三大主流框架,它们的整合应用通常被称为SSH(Struts2-...在学习和实践中,应注重理解各个框架的核心原理,同时关注安全问题,如Struts2的XSS、CSRF等漏洞,确保应用的安全性。
Struts2、Spring3和Hibernate3是Java Web开发中的三个核心框架,它们分别负责MVC模式中的表现层、业务层和服务层。SSH(Struts2、Spring、Hibernate)的集成可以构建出强大的企业级应用。在给定的压缩包文件中,包含...
在"Struts2+Spring2.5+Hibernate3+annotation"的整合中,注解(Annotation)的使用极大地简化了配置工作。例如,`@Controller`、`@Service`、`@Repository` 和 `@Component` 注解用于标记Spring的Bean,`@...
在这个实例中,"SSI2_Annotation"可能表示使用注解方式进行配置。在Struts2中,Action类可以使用注解`@Action`来定义行为;在Spring中,可以使用`@Component`、`@Service`、`@Repository`和`@Controller`等注解来...
牛牧的"Struts2.x深入浅出"教程是针对这个框架的深度解析,主要帮助开发者理解并熟练掌握Struts2的核心概念和实践技巧。 在第二部分中,我们首先会接触到`struts2_GetFromData`,这部分主要讲解了如何从HTTP请求中...
Struts2、Spring2.5、Hibernate3.3.2以及ExtJS是Java Web开发中的四大核心技术,它们共同构建了一个强大的MVC(Model-View-Controller)架构,用于实现高效、灵活的企业级应用。这个DEMO是将这些技术集成在一起,以...
4. **表单与验证**:讨论Struts 2的表单元素、数据绑定以及基于Annotation的验证机制,包括字段级别的验证和全局验证。 5. **OGNL**:介绍OGNL的基本语法和用法,如何在视图中动态访问和操作对象属性。 6. **国际...
本主题聚焦于一个经典的Java企业级应用架构:Spring 2.5、iBatis 2.3、Struts 2.1 和 DWR 3 的整合,以及使用注解(Annotation)进行配置。这四个组件的结合可以构建出一个功能强大、可扩展性好、易于维护的Web应用...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。在Struts2中,文件上传功能是常见的需求,它允许用户通过网页将本地文件发送到服务器进行处理或存储。本篇文章将深入探讨...
超级详细的SSH2项目实例详解,并且附带两个项目详解。两种注解实现方式。...在JavaEE企业级开发中,以SSH2框架为核心的应用非常广,大象根据项目实践经验,通过二个实例,详细的为大家讲解如何实现全注解式的开发。
Struts2作为一款流行的Java Web框架,其强大的功能和灵活性深受开发者喜爱。在实际开发中,数据校验是必不可少的一环,确保用户输入的数据合法、有效。Struts2提供了内置的验证框架,允许开发者自定义校验规则,以...