导读:先前在做.NET项目时,拦截的功能主要是依靠缓存session来实现。当需要跳转到某个页面,使用某个功能查询一些数据时,会根据session中的用户值来判断是否已经正常登录,如果没有,则重定向到登录页面。那么,在java里面,是怎样做的呢。本篇博客主要是介绍一些自己在做项目的过程中的一些处理方式。

一、SSH框架中的拦截

1.1,建立拦截类,添加拦截方法

<span style="font-family:KaiTi_GB2312;font-size:18px;">public class PrivilegeInterceptor extends MethodFilterInterceptor{  

    @Override
//执行拦截的方法
protected String doIntercept(ActionInvocation actionInvocation) throws Exception {
// 判断session中是否保存了后台用户的信息
AdminUser existAdminUser = (AdminUser)ServletActionContext.getRequest().getSession().getAttribute("existAdminUser");
if(existAdminUser == null){
//没有登录进行访问
ActionSupport actionSupport = (ActionSupport)actionInvocation.getAction();
actionSupport.addActionError("亲!您还没有登录,请先登录!");
return "loginFail";
}else{
//已经登录
return actionInvocation.invoke();
}
} } </span>

1.2,在struts2里面进行配置

<span style="font-family:KaiTi_GB2312;font-size:18px;"><interceptors>
<interceptor name="PrivilegeInterceptor" class="cn.itcast.shop.interceptor.PrivilegeInterceptor"/>
</interceptors> </span>

在需要使用拦截器的struts.XML中的Action配置后面配置:

<span style="font-family:KaiTi_GB2312;font-size:18px;"><interceptor-ref name="PrivilegeInterceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref> </span>

说明:第一行的是用户自己写的拦截,第二行是配置的默认拦截。至此,拦截就配置好了。如果没有登录的情况下去使用系统,则会将请求拦截,并根据拦截器的配置做出相应的反应,一般情况是跳转到登陆页。

二、JFinal框架中的拦截

总体说来,JFinal中的拦截配置,比SSH或者说之前的.NET项目使用都要简单。

2.1,建立拦截类

<span style="font-family:KaiTi_GB2312;font-size:18px;">package itoo.jrkj.interceptor;
import itoo.jrkj.common.model.TjUser;
import javax.servlet.http.HttpSession;
import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation; public class LoginInterceptor implements Interceptor{ public void intercept(Invocation ai) {
//获取缓存
HttpSession session = ai.getController().getSession(); //获取缓存中的user对象
TjUser user = (TjUser)session.getAttribute("user");
if (user != null) {
ai.invoke();
}else {
ai.getController().redirect("/main/login"); //若缓存中不存在user则跳转至登录页
}
}
} </span>

2.2,配置拦截

如图,将拦截类建立好了之后,只要在页面跳转的方法前,加上圈出来的一句话,就可以实现拦截效果。简单、粗暴,但有用。

三、总结

不管是什么样的方式实现,事实上都有一个共同的流程:1,将登录用户的信息放在session里面;2,在拦截方法中去判断session里面的用户值是否为空;3,为空,重定向;不为空,访问数据。

但JFinal明显封装的比较厉害,将拦截类方法写好之后,只需要添加一句话就Ok了,真心是让人有点心神晃荡。。。。。。

[JFinal 1] JFinal和SSH中使用拦截器的对比的更多相关文章

  1. 5.Struts2中的拦截器

    拦截器是Struts2中的核心,其自带很多很多的拦截器,这里主要介绍一下自定义拦截器,恩多一半情况下呢?我们不需要使用到自定义的拦截器,Struts2本身已经提 供了很多的拦截器供我们使用,对于自定义 ...

  2. 9.springMVC中的拦截器

    springMVC中的拦截器大概大致可以分为以下几个步骤去学习: 1.自定义一个类实现HandlerInterceptor接口,这里要了解其中几个方法的作用 2.在springMVC的配置文件中添加拦 ...

  3. 十五、struts2中的拦截器(框架功能核心)

    十五.struts2中的拦截器(框架功能核心) 1.过滤器VS拦截器 功能是一回事. 过滤器是Servlet规范中的技术,可以对请求和响应进行过滤. 拦截器是Struts2框架中的技术,实现AOP(面 ...

  4. spring mvc中的拦截器小结 .

    在spring mvc中,拦截器其实比较简单了,下面简单小结并demo下. preHandle:预处理回调方法,实现处理器的预处理(如登录检查),第三个参数为响应的处理器(如我们上一章的Control ...

  5. AspectCore动态代理中的拦截器详解(一)

    前言 在上一篇文章使用AspectCore动态代理中,简单说明了AspectCore.DynamicProxy的使用方式,由于介绍的比较浅显,也有不少同学留言询问拦截器的配置,那么在这篇文章中,我们来 ...

  6. struts2中的拦截器

    一  AOP思想: 面向切面编程的思想 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP ...

  7. 系统开发中使用拦截器校验是否登录并使用MD5对用户登录密码进行加密

    项目名称:客户管理系统 项目描述: 项目基于javaEE平台,B/S模式开发.使用Struts2.Hibernate/Spring进行项目框架搭建.使用Struts中的Action 控制器进行用户访问 ...

  8. (转)spring中的拦截器(HandlerInterceptor+MethodInterceptor)

    1.  过滤器跟拦截器的区别 在说拦截器之前,不得不说一下过滤器,有时候往往被这两个词搞的头大. 其实我们最先接触的就是过滤器,还记得web.xml中配置的<filter>吗~ 你应该知道 ...

  9. flume中的拦截器

    Flume中的拦截器(interceptor),用户Source读取events发送到Sink的时候,在events header中加入一些有用的信息,或者对events的内容进行过滤,完成初步的数据 ...

随机推荐

  1. PLSQL_性能优化系列03_Oracle Parallel并发处理

    2014-09-25 Created By BaoXinjian

  2. c++学习-数组

    int a[10]; //是个元素,在windows下回报错,linux会输出一个随机数 int a[10]={1,2}; //初始化,其他的为0 数组越界: 为了调高效率, 编译器不会对数组越界做检 ...

  3. 牢骚 - 你代码写得丑,又不肯用好一点的IDE,这让我很为难啊。

    又有人问我代码错误,发过来就是一篇巨丑无比的代码,先不说左大括号转行还和代码写在同一行的谭浩强风格,你这狗啃的一样的缩进是闹哪样!粘进VS2015里面,自动格式化,瞬间赏心悦目,编译错误出了5行,我直 ...

  4. Python进阶02 文本文件的输入输出

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python具有基本的文本文件读写功能.Python的标准库提供有更丰富的读写功能 ...

  5. 初始化ArrayList的两种方法

    方式一:  ArrayList<String> list = new ArrayList<String>();  String str01 = String("str ...

  6. DIV+CSS滑动门效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. 03.product.js

    /* item.jd.com Compressed by uglify Author:keelii Date: 2014-08-05 6:52:26 [PM] */ function insertSc ...

  8. struts (七) 域模型

    1.域模型获取参数 domain Model 2. vo  value object  值对象 do  data object 数据对象 dto data transfer object  数据传输对 ...

  9. [C#常用代码]如何把指定文件夹中的文件移动到指定的文件夹

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  10. Mingyang.net:格式化Hibernate的SQL输出语句

    在sping与hibernate整合中可以这样的设置 <property name="hibernateProperties"> <props> <p ...