[JFinal 1] JFinal和SSH中使用拦截器的对比
导读:先前在做.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中使用拦截器的对比的更多相关文章
- 5.Struts2中的拦截器
拦截器是Struts2中的核心,其自带很多很多的拦截器,这里主要介绍一下自定义拦截器,恩多一半情况下呢?我们不需要使用到自定义的拦截器,Struts2本身已经提 供了很多的拦截器供我们使用,对于自定义 ...
- 9.springMVC中的拦截器
springMVC中的拦截器大概大致可以分为以下几个步骤去学习: 1.自定义一个类实现HandlerInterceptor接口,这里要了解其中几个方法的作用 2.在springMVC的配置文件中添加拦 ...
- 十五、struts2中的拦截器(框架功能核心)
十五.struts2中的拦截器(框架功能核心) 1.过滤器VS拦截器 功能是一回事. 过滤器是Servlet规范中的技术,可以对请求和响应进行过滤. 拦截器是Struts2框架中的技术,实现AOP(面 ...
- spring mvc中的拦截器小结 .
在spring mvc中,拦截器其实比较简单了,下面简单小结并demo下. preHandle:预处理回调方法,实现处理器的预处理(如登录检查),第三个参数为响应的处理器(如我们上一章的Control ...
- AspectCore动态代理中的拦截器详解(一)
前言 在上一篇文章使用AspectCore动态代理中,简单说明了AspectCore.DynamicProxy的使用方式,由于介绍的比较浅显,也有不少同学留言询问拦截器的配置,那么在这篇文章中,我们来 ...
- struts2中的拦截器
一 AOP思想: 面向切面编程的思想 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP ...
- 系统开发中使用拦截器校验是否登录并使用MD5对用户登录密码进行加密
项目名称:客户管理系统 项目描述: 项目基于javaEE平台,B/S模式开发.使用Struts2.Hibernate/Spring进行项目框架搭建.使用Struts中的Action 控制器进行用户访问 ...
- (转)spring中的拦截器(HandlerInterceptor+MethodInterceptor)
1. 过滤器跟拦截器的区别 在说拦截器之前,不得不说一下过滤器,有时候往往被这两个词搞的头大. 其实我们最先接触的就是过滤器,还记得web.xml中配置的<filter>吗~ 你应该知道 ...
- flume中的拦截器
Flume中的拦截器(interceptor),用户Source读取events发送到Sink的时候,在events header中加入一些有用的信息,或者对events的内容进行过滤,完成初步的数据 ...
随机推荐
- python随文档
UNIX网络编程--socket的keep http://www.68idc.cn/help/opersys/unixbsd/20150731471448.html 云计算学习和实践: 原创<每 ...
- Python 结巴分词(1)分词
利用结巴分词来进行词频的统计,并输出到文件中. 结巴分词github地址:结巴分词 结巴分词的特点: 支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析: 全模式,把句子中所有的可以成 ...
- 常见数组&字符串API及其应用场景总结
数组API: String(arr):将arr中每个元素转化为字符串,逗号连接 场景:用于鉴别数据有没有修改等. ps:String是万能的 toString 只能转换除null和unde ...
- 30天轻松学习javaweb_模拟tomcat
运行 javac Server.java 编译java文件 执行 java Server 运行程序 在ie中输入 http://localhost:9999/ 打开模拟的服务程序 import jav ...
- SQL SERVER 中的 object_id()函数
在SQLServer数据库中,如果查询数据库中是否存在指定名称的索引或者外键约束等,经常会用到object_id('name','type')方法,做笔记如下: ? 语法:object_id('obj ...
- C++学习45 流成员函数put输出单个字符 cin输入流详解 get()函数读入一个字符
在程序中一般用cout和插入运算符“<<”实现输出,cout流在内存中有相应的缓冲区.有时用户还有特殊的输出要求,例如只输出一个字符.ostream类除了提供上面介绍过的用于格式控制的成员 ...
- log4j 缓存
log4j.appender.A2.bufferedIO=truelog4j.appender.A2.bufferSize=512000
- POJ 3422 Kaka's Matrix Travels 【最小费用最大流】
题意: 卡卡有一个矩阵,从左上角走到右下角,卡卡每次只能向右或者向下.矩阵里边都是不超过1000的正整数,卡卡走过的元素会变成0,问卡卡可以走k次,问卡卡最多能积累多少和. 思路: 最小费用最大流的题 ...
- Air Raid(最小路径覆盖)
Description Consider a town where all the streets are one-way and each street leads from one interse ...
- python3 AttributeError: 'NoneType' object has no attribute 'split'
from wsgiref.simple_server import make_server def RunServer(environ, start_response): start_response ...