java 拦截器配置_Struts2拦截器配置和使用

拦截器是Struts2最强大的特性之一,它是一种可以让用户在Action执行之前和Result执行之后进行一些功能处理的机制。

说到拦截器interceptor,就会想到过滤器filter:

过滤器filter是对所有的东西进行过滤,包括.css,.js,.jpg等这些内容都过滤;

拦截器interceptor是对action进行拦截,是属于struts的工具。

这里以实现登录验证为例来进行拦截器的使用

首先创建一个Login类:

packagecom.dao;public classLogin {privateString username;privateString password;publicString getUsername() {returnusername;

}public voidsetUsername(String username) {this.username =username;

}publicString getPassword() {returnpassword;

}public voidsetPassword(String password) {this.password =password;

}

}

然后配置struts.xml:

/p>

"http://struts.apache.org/dtds/struts-2.3.dtd">

/Login/login.jsp

/Login/login.jsp

/Login/success.jsp

{1}/{2}.jsp

配置LoginAction.java:

packagecom.controller;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Map;importjavax.servlet.http.HttpSession;importorg.apache.struts2.ServletActionContext;importorg.apache.struts2.interceptor.SessionAware;importorg.apache.tomcat.jni.User;importcom.dao.Login;importcom.opensymphony.xwork2.ActionContext;importcom.opensymphony.xwork2.ActionSupport;importcom.opensymphony.xwork2.ModelDriven;public class LoginAction extends ActionSupport implements ModelDriven,SessionAware {private Mapsession ;private Login user = newLogin();publicString login(){returnSUCCESS;

}publicString success(){

java.util.List uid = new ArrayList();

uid.add("admin");

uid.add("zhangsan");

uid.add("lisi");

uid.add("wangwu");

ActionContext context=ActionContext.getContext();

session=context.getSession();

Object obj= session.get("user");if(obj==null){if(uid.contains(user.getUsername())){

session.put("user", user.getUsername());returnSUCCESS;

}else{return "nologin";

}

}else{returnSUCCESS;

}

}

@Overridepublic void setSession(Maparg0) {//TODO 自动生成的方法存根

this.session=arg0;

}

@OverridepublicLogin getModel() {returnuser;

}

}

配置SuccessInterceptor.java:

packagecom.util;importjava.util.Map;importjavax.servlet.http.HttpSession;importorg.apache.struts2.ServletActionContext;importcom.opensymphony.xwork2.ActionContext;importcom.opensymphony.xwork2.ActionInvocation;importcom.opensymphony.xwork2.interceptor.AbstractInterceptor;public class SuccessInterceptor extendsAbstractInterceptor {private Mapsession ;

@Overridepublic String intercept(ActionInvocation arg0) throwsException {

System.out.println("asdasdas");

session=ActionContext.getContext().getSession();if(session.get("user")==null){return "nologin";

}returnarg0.invoke();

}

}

实现login.jsp页面:

Insert title here

Login

username:
password:

实现success.jsp页面:

Insert title here

success

username:
password:

一、拦截器的配置

1.SuccessInterceptor.java文件为拦截器的配置,继承自AbstractInterceptor接口。

2.配置struts.xml文件

//自己定义的一个名为login的拦截器,调用自com.util.SuccessInterceptor

//自定义一个名为newStack的拦截器,里面包含login的拦截器和defaultStack默认的拦截器

/Login/login.jsp

//通用走nologin的时候都走此处

/Login/login.jsp

/Login/success.jsp

//调用自定义的拦截器{1}/{2}.jsp

二、在拦截器中使用内置对象

1.ActionContext 获取Map.

2.ServletActionContext 获取HttpSession

3.实现SessionAware接口

这样定义完毕后的登录并不完善,没有跳转404界面,以及没有验证用户名密码同时正确的情况,仅作为例子参考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值