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 注解的详细介绍及使用方法
struts2 使用Annotation配置实现的小例子,转载供大家学习使用,里面包括了所需的jar包
struts2,json-plugin, 并全注解零配置
参考博文:http://blog.csdn.net/u011638419/article/details/41743049
struts2-Annotation
Struts2的“零配置”特性是Struts2的新功能,可能会出现一些小Bug,所以企业开发者请慎重使用该特性, ...如果用的是Annotation的Struts2,就要将struts.xml去掉,否则即使将struts.xml中的内容注销,也会报错;
马士兵视频里的struts2 hibernate3 spring2.5 annotation 整合 绝对好用 里面还有jar包 部署就可以用
通过产生临时文件下载之后,再通过线程删除临时文件
前段时间很困惑的文件下载问题,现贴出代码,希望能帮到需要的人吧
博文链接:https://flym.iteye.com/blog/174358
本文档对利用struts2 注解 annotation 实现文件下载作了简单介绍,并有代码为例,希望对学习struts2注解annotation的人有帮助,特别是需要动态传参方面。
用注解(annotation)方式配置struts2 (webwork) 中action的拦截器(interceptor)
struts annotation.ppt 欢迎下载
NULL 博文链接:https://zhenghuazhi.iteye.com/blog/1467214
Struts2 Spring Hibernate 框架整合 Annotation Maven project
Struts2 Spring Hibernate 框架整合 Annotation Maven project.zip
NULL 博文链接:https://vincenta.iteye.com/blog/1535330
Struts2+Spring2+Hibernate3+Annotation所需JAR包
struts2 spring2.5 hibernate3.0 annotation 整合