关于SSH注解开发 拦截器的配置以及实现

来源:互联网 发布:云计算主要技术 编辑:程序博客网 时间:2024/05/24 01:49

     嗨!大家好,说起来很惭愧。 工作有一段时间了,但是一直没敢写博客。原因多半是不知道自己写什么、能写些什么。

       今天, 我终于鼓起勇气准备写一篇文章,为的是以后自己查阅方便, 如果有错误不足之处还望大家能指出,我会继续学习的谢谢大家了。

  好了下面我们正式步入正文。直接上代码

  

   struts.xml文件

<struts><include file="struts-default.xml"></include><package name="customdefault" extends="struts-default"><!-- 默认继承Struts2 的配置文件 --><interceptors><!-- 自定义的拦截器 --><interceptor name="testInterceptor"class="cn.com.agricom.Intercepters.AuthIntercepter"></interceptor><!-- 配置自己的拦截器栈 --><interceptor-stack name="customInterceptor"><!-- 拦截器栈包含自定义的拦截器和默认的拦截器 --><interceptor-ref name="defaultStack"></interceptor-ref><interceptor-ref name="testInterceptor"></interceptor-ref></interceptor-stack></interceptors><!-- 设置全局 全局默认的拦截器栈--><default-interceptor-ref name="customInterceptor"></default-interceptor-ref><global-results><!-- 当返回login视图名时,转入/login.jsp页面 --><result name="index">/index.jsp</result></global-results></package><!-- 开启使用开发模式,详细错误提示 --><constant name="struts.devMode" value="false" /><!-- 将对象交给spring管理 --><constant name="struts.objectFactory" value="spring" /><!-- 指定资源编码类型 --><constant name="struts.i18n.encoding" value="UTF-8" /><!-- 设置struts2文件上传最大值 --><constant name="struts.multipart.maxSize" value="209715200" /><!-- 指定每次请求到达,重新加载资源文件 --><constant name="struts.i18n.reload" value="false" /><!-- 指定每次配置文件更改后,自动重新加载 --><constant name="struts.configuration.xml.reload" value="false" /><!--<constant name="struts.convention.result.path" value="/WEB-INF/"/>--><!-- 默认后缀名 --><!--<constant name="struts.action.extension" value="do,action,jhtml,," />--><!-- Struts Annotation --><!--     <constant name="actionPackages" value="com.test1"/> --><!--指定上传文件的目录 <constant name="struts.multipart.saveDir"value="f:\"></constant>--></struts>    
@SuppressWarnings("serial")public class AuthIntercepter extends AbstractInterceptor  {    private static Logger log =  Logger.getLogger(AuthIntercepter.class);/* (non-Javadoc) * @see com.opensymphony.xwork2.interceptor.AbstractInterceptor#intercept(com.opensymphony.xwork2.ActionInvocation) */@Overridepublic String intercept(ActionInvocation invocation) throws Exception {log.debug("执行到了拦截器代码------>");
     <span style="color:#ff0000;">这里返回的name值是你在映射路径中的名称 比如这个拦截的方法名为 "</span><span style="color: rgb(255, 0, 0); font-family: Arial, Helvetica, sans-serif;">loginAction</span><span style="color:#ff0000;">" 那么对应的路径为  /*/</span><span style="color: rgb(255, 0, 0); font-family: Arial, Helvetica, sans-serif;">loginAction</span><span style="color:#ff0000;"></span> String name = invocation.getInvocationContext().getName();//获得执行的方法名称    System.out.println("=============方法名称为:"+name+"======================="); if("loginAction".equals(name)){ log.debug("检测到登录的方法名称为: loginAction   log debug输出"); System.out.println("检测到登录的方法名称为: loginAction   console输出"); return "index"; }
 使用拦截器    @ParentPackage("customdefault")   这个是我们刚才在struts.xml中定义的package名称  现在在类上注解表示当前类继承了刚才的包 因为我们配置的是全局拦截器 所以这里不用引用即可使用  

@ParentPackage("customdefault")@Scope("prototype")// 因为默认又Spring 产生的对象都是单例的 在Struts中每个请求会有独立的action 所以这里要设置成非单例的模式@Controller@Namespace(value = "/userAction")public class TestAction extends ActionSupport {



0 0
原创粉丝点击