首页 > 其他分享 >struts2 中的拦截器例子快速进阶

struts2 中的拦截器例子快速进阶

时间:2022-12-02 11:06:29浏览次数:38  
标签:xml xwork2 拦截器 进阶 struts2 import com opensymphony


  小结了struts2 中拦截器的一个例子,以方便快速进阶的.

  比如有个很典型的例子,要求在编辑数据或者增加数据前,必须要先判断用户是否登陆.则我们先在src目录下,建一个

包strutsxml,专门用来存放关于struts的xml.

   其中有个一个是基础xml,比如叫struts-base.xml

  <package name="manager-default" namespace="/" extends="struts-default">
     <!-- 定义全部的拦截器 -->
     <interceptors>
      <!-- 定义第一个自定义的拦截器,用于身份校验 -->
      <interceptor name="isloginInterceptor" class="com.liao.IsLoginInterceptor"></interceptor>  
   <!-- 定义一个拦截器栈,系统所有Action都需配置 -->
   <interceptor-stack name="islogin">
    <interceptor-ref name="isloginInterceptor"></interceptor-ref>
   </interceptor-stack>
     </interceptors>
  <global-results>
   <!-- 配置全局结果,用于身份校验结果返回 -->
   <result name="none">/error/loginerror.jsp</result>
  </global-results>
 </package>

之后分别按功能模块定义xml,比如定义一个struts_crud.xml

   <package name="crud" extends="manager-default" namespace="/adment">
          <action name="a"  class="aAction" method="abc">
         <interceptor-ref name="params"/>
         <interceptor-ref name="islogin"/>
            <result>success.jsp</result>
        </action>

这里表示首先要用islogin的拦截器了.

下面是写这个拦截器.让其继承abstractinterceptor

 

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

import org.apache.commons.logging.*;
import java.util.*;

public class IsLoginInterceptor extends AbstractInterceptor {
 private static final Log logger = LogFactory.getLog(IsLoginInterceptor.class);

 public String intercept(ActionInvocation invocation) throws Exception {
  //取得请求相关的ActionContext实例
  ActionContext act = invocation.getInvocationContext();
  //获取Session
  Map session = act.getSession();
  //从Session中获取用户ID
  String userId = (String)session.get("userId");
  //判断用户是否登录
  if(userId==null){
   //未登录,返回重新登录
   return Action.NONE;
  }
  //执行该拦截器的下一个拦截器,如没有,执行Action被请求的相应方法
  return invocation.invoke();
 }
}

 

 

 

 

标签:xml,xwork2,拦截器,进阶,struts2,import,com,opensymphony
From: https://blog.51cto.com/u_14230175/5906224

相关文章

  • SpringCloud(八) - 自定义token令牌,鉴权(注解+拦截器),参数解析(注解+解析器)
    1、项目结构介绍项目有使用到,redis和swagger,不在具体介绍;2、手动鉴权和用户信息参数获取(繁杂,冗余)2.1用户实体类/***CreatedOn:4/11/2022.*<p>*Author......
  • Java进阶学习之反射与动态绑定(5)
    目录1.反射1.1.概述1.2.实现方式1.2.1.获取Class1.2.2.通过反射获取属性、设置属性1.2.3.通过反射获取方法、执行方法1.2.4.通过反射获取构造器并调用2.动态代理2.1.代理模......
  • Java进阶学习之网络编程(4)
    目录1.网络编程概述1.1.目的1.2.常用的网络协议1.2.1.TCP1.2.2.UDP2.Socket网络编程2.1.Socket是什么2.2.Socket工作流程2.3.案例《计算机网络》作为计算机专业的必修课,估......
  • 算法竞赛入门【码蹄集进阶塔335题】(MT3330-3335)
    算法竞赛入门【码蹄集进阶塔335题】(MT3330-3335)(文章目录)前言为什么突然想学算法了?>用较为“官方”的语言讲,是因为算法对计算机科学的所有分支都非常重要。在绝......
  • 算法竞赛入门【码蹄集进阶塔335题】(MT2326-2330)
    算法竞赛入门【码蹄集进阶塔335题】(MT2326-2330)(文章目录)前言为什么突然想学算法了?>用较为“官方”的语言讲,是因为算法对计算机科学的所有分支都非常重要。在绝......
  • MySQL进阶实战7,查询的执行过程
    一、拆分查询将大查询拆分成小查询,每个查询功能完全一样,只是一小部分,每次只返回一小部分查询结果。比如在删除旧数据的时候,如果用一个大的语句一次性删的话,则可能需要一次性......
  • MySQL进阶实战5,为什么查询速度会慢
    一、先了解一下MySQL查询的执行过程MySQL在查询时,它是由很多子任务组成的,每个子任务都会消耗一定的时间,如果要想优化查询,实际上要优化其子任务,可以消除一些子任务、减少子......
  • Hive进阶
    title:Hive进阶cover:/cover_imgs/hive.pngtags:-Hivecategories:-Hive第1章 Explain查看执行计划(重点)1.1基础语法EXPLAIN[EXTENDED|DEPENDENCY|AUT......
  • day42 6-5 springMVC调度器、ModelAndView、配置thymeleaf模板引擎 & 6-6 thymeleaf语
    springMVC调度器-DispatcherServlet-SpringMVC框架的入口定义DispatcherServlet成为调度器,配置在web.xml文件中,用于拦截匹配的请求。并解析请求url,将请求分发给对应......
  • pandas进阶
    pandas进阶替换操作替换操作可以同步作用于Series和DataFrame中单值替换普通替换:替换所有符合要求的元素:to_replace=15,value='e'按列指定单值替换:to_repl......