Jfinal拦截器的使用

拦截器是Java中动态拦截Action调用的对象。开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种可以提取action中可重用部分的方式。在AOP(Aspect-Oriented Programming)中拦截器用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。
在需要登陆的情况下,配置拦截器很有必要。可以保证在没有登录的情况下用户即使知道路径也不能看到内容。
Jfinal中使用拦截器有以下方法:
1.在configInterceptor(Interceptors me)方法中定义全局拦截器。

2.自定义XX 类继承接口Interceptor,在其中实现接口方法,实现逻辑判断。在所需要拦截的Controller之前添加@(XX.class),即可完成部分拦截功能。

示例: (1).配置拦截器,实现接口Interceptor。
public class GlobalInterceptor extends Controller implements Interceptor {
public void intercept(Invocation inv) {
// TODO Auto-generated method stub
HttpSession session = inv.getController().getSession();
String username = (String) session.getAttribute(“username”);
if(session == null){
inv.getController().render(“/index/login.html”);
}
else{
String nickname = (String)session.getAttribute(“nickname”);
if(nickname != null) {
System.out.println(username);
inv.invoke();
}
else{
inv.getController().render(“/index/login.html”);
}
}
}
}
(2).用户登录时,如果用户名密码匹配,就保存session。
getSession().setAttribute(“nickname”, username);

    setSessionAttr("sessionId", username);// 设置服务器端session
    //setCookie("cuser", sessionId, 60000);// 设置用户端cookie
    redirect("/admin");

(3).在需要拦截的控制器前添加拦截
@Before(GlobalInterceptor.class)

你可能感兴趣的:(Jfinal拦截器的使用)