zoukankan      html  css  js  c++  java
  • Struts2 拦截器 及如何获得 servlet 请求对象 以及Struts 基本配置 &&Session 超时设置

    在拦截器中可以三种实现

    一:继承 AbstractInterceptor 类
    二:继承 MethodFilterInterceptor类
    三:实现 Interceptor 接口

    在实现Interceptor接口时,会多出init() 和 destroy() 方法

    拦截器的主体方法是:
    public String intercept(ActionInvocation arg0) throws Exception {
    // TODO Auto-generated method stub

    HttpServletRequest request = ServletActionContext.getRequest();
    if(request.getParameter("username") == null){//输入的用户名为空
    return "logFail";
    }
    logInterceptor.invoke();
    return null;


    }

    在拦截器完成任务后-->记得 arg0.invoke()  
    激活action,让程序得以继续执行

    另外:
    <form action="logAction_login.action" method="post">
    在struts.xml中<action name="logAction_*" class="my.test.Control" method="{1}"></action>
    指定跳转的处理类的处理方法

    付一张必须jar包图:

     通过非IOC 方式 获取 http请求参数
    HttpServletRequest request = ServletActionContext.getRequest();
    HttpServletRespons respons = ServletActionContext.getRespons();
    HttpSession session  = ServletActionContext.getRequest().getSession();//servlet 中的底层session
    Map sessionMap = ActionContext.getContext().getSession(); //struts2 中封装的Map session

    ------------------------------------------------------------------------------------------>

    <struts>
    <constant name="struts.ui.theme" value="simple" />
    <constant name="struts.objectFactory" value="spring" />
    <constant name="struts.objectFactory.spring.autoWire" value="name" />
    <constant name="struts.i18n.encoding" value="UTF-8" />
    <constant name="struts.custom.i18n.resources" value="messages,department,serch,device,login,user,role,ywtj,param,notice,hmd,jrs,jwjk"/>
    <include file="struts-login.xml" />
    </struts>

    ----------------------------------------------------------------------------------------> 

     判断Session 是否超时:

    public class SessionInterceptor extends BaseAction implements Interceptor    {


    private static final long serialVersionUID = 1L;
    public String intercept(ActionInvocation actionInvocation) throws Exception {
    HttpSession session  = ServletActionContext.getRequest().getSession();
    Action action = (Action) actionInvocation.getAction();
    if (action instanceof LoginAction) {
    return actionInvocation.invoke();
    }else{
    SysUser user = UserSessionUtil.getUserInfo(session);
    if (user == null) {
    return "login";
    } else {
    return actionInvocation.invoke();
    }
    }
    }
    public void destroy() {
    // TODO Auto-generated method stub
    }
    public void init() {
    // TODO Auto-generated method stub
    }
    }

     ---------------------------------------------------struts.xml 配置:

    <package name="global" namespace="/" extends="struts-default">
         <!-- struts2 拦截器Session 超时 -->
       <interceptors>
    <interceptor name="sessionInterceptor" class="com.egintra.common.base.SessionInterceptor" />
    <!-- 拦截器栈 -->
    <interceptor-stack name="myStack">
    <interceptor-ref name="sessionInterceptor" />
    <interceptor-ref name="defaultStack" />
    </interceptor-stack>
    </interceptors>
        <default-interceptor-ref name="myStack" />
        
            <global-results>
                <result name="exception">/jsp/error.jsp</result>   
                <result name="login">/jsp/system/login/login.jsp</result>      
            </global-results>
            <global-exception-mappings>
                <exception-mapping result="exception" exception="java.lang.Exception"></exception-mapping>
            </global-exception-mappings>                
        </package>
  • 相关阅读:
    无缝世界场景加载的解决方案研究
    3D物体绘制不见
    dx sdk中关于常用dx api的performace性能参数
    OpenGL/DirectX渲染技巧集
    每天送你一個simle
    [原创] 一种页面数据错误输入提示方法
    [原创] ASP.NET 中如何弹出提示窗口然后导向另外一个页面
    [原创] 部署含有ReportView的控件的ASPX页面时出现错误
    公布一个简单的日志记录方法
    [原创] 如何在没有ASP.NET AjaxEnabled Web Site 向导的情况下加入Ajax支持
  • 原文地址:https://www.cnblogs.com/leonkobe/p/2939128.html
Copyright © 2011-2022 走看看