开发者社区> lhyxcxy> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

struts2拦截器 默认拦截器 默认跳转 全局异常

简介: struts2 默认的action访问后缀是action 和无后缀 struts的配置文件的package中的内容的配置有顺序 The content of element type "package" must match "(result- types?, interceptors?, default-interceptor-ref?, default-action- re
+关注继续查看


struts2 默认的action访问后缀是action 和无后缀

struts的配置文件的package中的内容的配置有顺序

The content of element type "package" must match "(result- types?, interceptors?, default-interceptor-ref?, default-action- ref?, default-class-ref?, global-results?, global-exception- mappings?, action*)"。

struts2拦截器只会拦截action层,不是action请求不会拦截,拦截action会在 web.xml 中的<error-page> <error-code>404</error-code>  <location>/404.jsp</location> </error-page> 前拦截action,当此action不存在时,并不会再次执行web.xml中的<error-page>。

当 拦截器拦截action后,可以加一个<default-action-ref name="not404"></default-action-ref>默认的跳转页面。注意,此配置的name指的是配置的action的name

,不是指的result。

不加namespace,是全局所有的action请求都可以用的



<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
    
    <!-- 开发模式 -->
    <constant name="struts.devMode" value="true" />

    <!-- Action访问方式 -->
<!-- <constant name="struts.action.extension" value="do"></constant>  -->
     <package name="default" extends="struts-default">

     <interceptors><!-- 拦截器 -->
   <interceptor name="loginInterceptor" class="com.oracle.jingdong.filter.UserLoginFilter" />
   <interceptor-stack name="loginStack">
     <interceptor-ref name="defaultStack"/>
     <interceptor-ref name="loginInterceptor" />
   </interceptor-stack>
</interceptors>
<default-interceptor-ref name="loginStack" /><!--设置成 默认拦截器,注意要拦截器栈要包括 <interceptor-ref name="defaultStack"/> -->

      <default-action-ref name="not404"></default-action-ref>
       <global-results><!-- 错误页面 -->
           <result name="error">/error.jsp</result>
           <result name="loginError">/loginError.jsp</result>
       </global-results>
       <global-exception-mappings>
           <exception-mapping exception="java.lang.NullPointerException" result="error" />
           <exception-mapping exception="java.sql.SQLException" result="error" />
       </global-exception-mappings>
          <action name="not404">
            <result>/404.jsp</result>
        </action> 
   </package>
<package name="aaa" namespace="/" extends="default">
</package>
<include file="com/oracle/jingdong/action/jd/struts-jd.xml"></include>
<!--  <include file="com/oracle/jingdong/action/buyer/struts-buyer.xml" /> -->
<!--  <include file="com/oracle/jingdong/action/jd/struts-jd.xml" /> 
 <include file="com/oracle/jingdong/action/seller/struts-seller.xml" />
   <include file="com/oracle/jingdong/action/front/struts-front.xml" /> -->

</struts>




java**************

package com.oracle.jingdong.filter;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import org.xml.sax.SAXException;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.interceptor.Interceptor;
import com.oracle.jingdong.entity.Buyer;
public class UserLoginFilter extends ActionSupport implements Interceptor{
private static final long serialVersionUID = 1L
public void init() {
System.out.println("chushihua");
}
public void destory() {
System.out.println("销毁");
}
public void destroy() {
// TODO Auto-generated method stub
}
public String intercept(ActionInvocation ai) throws Exception {
// TODO Auto-generated method stub

HttpServletRequest request=ServletActionContext.getRequest();
Buyer buyer=(Buyer)request.getSession().getAttribute("buyerName");
String requestName=ai.getInvocationContext().getName();
System.out.println(requestName);
if(buyer!=null)
return ai.invoke();
else if(requestName.equals("JdManAct_login"))
  return  ai.invoke();//ai.invoke()是String类型,值为sucess
else
return "loginError";
}
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
5、如何自学Struts2之Struts2拦截器[视频]
5、如何自学Struts2之Struts2拦截器[视频]   之前写了一篇“打算做一个视频教程探讨如何自学计算机相关的技术”,优酷上传不了,只好传到百度云上:   http://pan.
707 0
Struts2的动态Action和全局跳转视图以及配置各项默认值
1:Struts2的默认访问后缀是.action(特别需要注意的是改了配置文件web.xml或者struts.xml需要重启服务器)  2:Struts2中常用的常量介绍:  3:Struts2的动态Action的简单应用和多个.
856 0
(转)Struts 拦截器
一、拦截器是怎么实现: 实际上它是用Java中的动态代理来实现的 二、拦截器在Struts2中的应用 对于Struts2框架而言,正是大量的内置拦截器完成了大部分操作。像params拦截器将http请求中参数解析出来赋值给Action中对 应的属性。
546 0
Struts2文件的上传
一、单文件的上传  表单的enctype属性:             application/x-www-form-urlencoded:默认的编码方式。             multipart/form-data:会以二进制的方式处理表单数据,会将文件域指定文件的内容也封装到请求参数里。
737 0
struts 拦截器
  struts-action-trace.xml   ...
655 0
Struts2【拦截器】(二)
Struts2【拦截器】
0 0
+关注
lhyxcxy
专注于前后端服务器交互,人工智能,NLP领域
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载