拦截器案例

<!-- 公共的包,封装了通用的拦截器,通用的result -->
<package name="netctoss" extends="json-default">
<interceptors>
<!--登录检查拦截器 -->
<interceptor name="loginInterceptor" class="com.born.interceptor.LoginInterceptor" />
<!--登录检查拦截器栈 -->
<interceptor-stack name="loginStack">
<interceptor-ref name="loginInterceptor" />
<!-- 不要丢掉默认的拦截器栈,里面有很多Struts2依赖的拦截器 -->
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>
<!-- 设置Action默认引用的拦截器 -->
<default-interceptor-ref name="loginStack" />
<!--全局的result,包下所有的Action都可以公用 -->
<global-results>
<!--跳转到登录页面的result -->
<result name="login" type="redirectAction">
<param name="namespace">/login</param>
<param name="actionName">toLogin</param>
</result>
</global-results>
</package>

package com.born.interceptor;

import java.util.Map;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

/**
* 登录检查拦截器,用于检查用户是否登录
* @author asus
*
*/
public class LoginInterceptor implements Interceptor{

@Override
public void destroy() {
// TODO Auto-generated method stub

}

@Override
public void init() {
// TODO Auto-generated method stub

}

@Override
public String intercept(ActionInvocation ai) throws Exception {
//获取Session
Map<String,Object> session=ai.getInvocationContext().getSession();
//从Session中读取登录信息
Object admin=session.get("admin");
//如果登录信息为空,则踢回登录页面,而不用调用业务Action
if(admin==null){
return "login";
}else{
//如果登录信息不为空,则调用业务Action
return ai.invoke();
}
}

}

package com.born.webapi;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;

import com.born.action.BaseAction;
import com.born.entity.Admin;
import com.born.service.impl.LoginService;

@Controller
public class LoginWebApiAction extends BaseAction {
@Resource
private LoginService dao;
// input
private String adminCode;// 帐号
private String password;// 密码
// output
private String errorMsg;// 错误信息
private String errorMsg1;// 错误信息

private String verifyCode;// 验证码

public String getErrorMsg1() {
return errorMsg1;
}

public void setErrorMsg1(String errorMsg1) {
this.errorMsg1 = errorMsg1;
}

public String getVerifyCode() {
return verifyCode;
}

public void setVerifyCode(String verifyCode) {
this.verifyCode = verifyCode;
}

public String getAdminCode() {
return adminCode;
}

public void setAdminCode(String adminCode) {
this.adminCode = adminCode;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getErrorMsg() {
return errorMsg;
}

public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}

public String execute() {
// 从Session中取出生成的验证码
String imageCode = (String) session.get("imageCode");
// 验证用户输入的验证码是否与生成验证码一致
if (imageCode == null || !imageCode.equalsIgnoreCase(verifyCode)) {
// 如果不一致,提示错误
errorMsg1 = "验证码有误.";
return "fail";
}
Admin admin = null;
try {

admin = dao.findByCode(adminCode);

} catch (Exception e) {
e.printStackTrace();
return "error";
}
if (admin == null) {
// 如果管理员为空,则说明帐号有误,校验失败
errorMsg = "帐号不存在";
return "fail";
} else {
// 如果管理员不为空,进一步校验密码
if (password != null && password.equals(admin.getPassword())) {
// 如果密码一致,校验成功
session.put("admin", admin);

return "success";
} else {
// 密码不一致,校验失败
errorMsg = "密码有误。";
return "fail";
}
}

}

}

package com.born.action;

import java.util.Map;

import org.apache.struts2.interceptor.SessionAware;

public class BaseAction implements SessionAware{
protected Map<String,Object> session;
/*
* 采用接口注入的方式统一获取Session
* @see org.apache.struts2.interceptor.SessionAware#setSession(java.util.Map)
*/
@Override
public void setSession(Map<String,Object> arg0){
session=arg0;
}

}

时间: 2024-10-15 00:17:52

拦截器案例的相关文章

mybatis拦截器案例之获取结果集总条数

最近做的项目前端是外包出去的,所以在做查询分页的时候比较麻烦 我们需要先吧结果集的条数返回给前端,然后由前端根据页面情况(当前页码,每页显示条数)将所需参数传到后端. 由于在项目搭建的时候,是没有考虑数据量比较大(结果集数量大于1W条,甚至达到30W条)的情况 (使用的VPN网络比较慢,使用单元测试,1w条数据,需要30s左右才能返回到系统上,sql本身执行在秒内可以出结果, 所以不能先把结果集拿到系统中,再返回结果集的条数,然后分页.所以需要另一个查询,返回结果集的条数) 现在项目已经存在很多

五 、 Kafka producer 拦截器(interceptor) 和 六 、Kafka Streaming案例

五 Kafka producer 拦截器(interceptor) 5.1 拦截器原理 Producer 拦截器(interceptor)是在 Kafka 0.10 版本被引入的,主要用于实现 clients 端的定 制化控制逻辑. 对于 producer 而言,interceptor 使得用户在消息发送前以及 producer 回调逻辑前有机会 对消息做一些定制化需求,比如修改消息等.同时,producer 允许用户指定多个 interceptor 按序作用于同一条消息从而形成一个拦截链(in

struts2拦截器

1. 拦截器 1.1 概述 ü 基本概念 Intercetor, 即为拦截器. 1) 在Struts2中,把每一个功能都用一个个的拦截器实现:用户想用struts的哪个功能的时候,可以自由组装使用. 2)Struts2中,为了方法用户对拦截器的引用,提供了拦截器栈的定义,里面可以包含多个拦截器.   文件夹(文件, 文件2)  拦截器栈(拦截器,拦截器2) 3)Struts2中,如果用户没有指定执行哪些拦截器,struts2有一个默认执行的栈,defaultStack;  一旦如果用户有指定执行

Java实战之01Struts2-04拦截器、上传下载、OGNL表达式

十二.Struts2中的拦截器 1.拦截器的重要性 Struts2中的很多功能都是由拦截器完成的.比如:servletConfig,staticParam,params,modelDriven等等. 是AOP编程思想的一种应用形式. 2.拦截器的执行时机: \ 3.自定义拦截器 3.1.拦截器的类试图(初级版本): 3.2.编写步骤: a.编写一个类,继承AbstractInterceptor类或者实现Interceptor接口.重写intercept方法. 1 public class MyI

webservice拦截器 查看消息包(soap)

服务端: 1.获取EndpointImpl对象 2.调用EndpointImpl对象中的方法获取In拦截器 3.调用EndpointImpl对象中的方法获取out拦截器 4.添加自己的In拦截器与Out拦截器 LogginInInterceptor:查看收到的消息包 LoggOutInterceptor:查看发出去的消息包 客户端: 需要导入cxf的7个jar包: 1.获取client对象 Client client=ClientProxy.getClient("ws服务组件代理对象"

5、struts2 拦截器

拦截器 1.1 概述 ?基本概念 Intercetor, 即为拦截器. 1) 在Struts2中,把每一个功能都用一个个的拦截器实现:用户想用struts的哪个功能的时候,可以自由组装使用. 2)Struts2中,为了方法用户对拦截器的引用,提供了拦截器栈的定义,里面可以包含多个拦截器. 文件夹(文件, 文件2) 拦截器栈(拦截器,拦截器2) 3)Struts2中,如果用户没有指定执行哪些拦截器,struts2有一个默认执行的栈,defaultStack; 一旦如果用户有指定执行哪些拦截器,默认

深入分析JavaWeb 47 -- Struts2拦截器与文件上传下载

一.struts2中的拦截器(框架功能核心) 1.过滤器VS拦截器 过滤器VS拦截器功能是一回事.过滤器是Servlet规范中的技术,可以对请求和响应进行过滤. 拦截器是Struts2框架中的技术,实现AOP(面向切面)的编程思想,是可插拔的, 可以对访问某个 Action 方法之前或之后实施拦截. 拦截器栈(Interceptor Stack): 将拦截器按一定的顺序联结成一条链. 在访问被拦截的方法时, Struts2拦截器链中的拦截器就会按其之前定义的顺序被依次调用 Struts2执行原理

Struts2学习第三天——拦截器与文件传输

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.06.15 lutianfei none 内容摘要: 1.国际化(了解) 2.拦截器(Interceptor)-重点 3.struts2文件上传与下载(次重点) 4.ognl与valuestack 国际化 国际化原理,什么是国际化 ? 同一款软件 可以为不同用户,提供不同语言界面 -- 国际化软件 需要一个语言资源包(很多properties文件,每个properties文件 针对一个国家或者语言 ,通过java程序根

深入分析JavaWeb Item47 -- Struts2拦截器与文件上传下载

一.struts2中的拦截器(框架功能核心) 1.过滤器VS拦截器 过滤器VS拦截器功能是一回事. 过滤器是Servlet规范中的技术,能够对请求和响应进行过滤. 拦截器是Struts2框架中的技术.实现AOP(面向切面)的编程思想.是可插拔的, 能够对訪问某个 Action 方法之前或之后实施拦截. 拦截器栈(Interceptor Stack): 将拦截器按一定的顺序联结成一条链. 在訪问被拦截的方法时, Struts2拦截器链中的拦截器就会按其之前定义的顺序被依次调用 Struts2运行原