如何把filter改写成spring mvc里面的interceptor

堕落的唐僧 2014-04-22 11:41:11
之前写的filter,现在想转换成框架里面的interceptor,应该怎么改?XML文件要怎么配。

package mypack;

import java.io.IOException;
import java.net.URLEncoder;

import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class OnlineFilter extends HttpServlet implements javax.servlet.Filter {

private static final long serialVersionUID = 1L;


public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws ServletException, IOException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession();

String userId = request.getParameter("UserID");
String result = request.getParameter("Result");
String uri = ((HttpServletRequest) request).getRequestURI();

if ("0".equals(result) && null != userId) {
User user = new User();
user.setUserId(userId);
session.setAttribute("user", user);
req.getSession().setAttribute("user", user);
req.getSession().setAttribute("UserID", userId);
}

if (session.getAttribute("user") == null) {

res.sendRedirect("http://127.0.0.1:8080/index.do");
System.out.println(uri);
return;
} else {
System.out.println("user has logged in.");
}

}

public void init(FilterConfig filterConfig) {
System.out.println("OnlineFilter initialized.");
}
public void destroy() {
System.out.println("OnlineFilter destroied");
}

}
...全文
116 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
堕落的唐僧 2014-04-22
  • 打赏
  • 举报
回复
引用 3 楼 sunbo624 的回复:
spring的就是return true或者false呗 代码几乎不用动
改来改去一直报错。。
sunbo624 2014-04-22
  • 打赏
  • 举报
回复
spring的就是return true或者false呗 代码几乎不用动
堕落的唐僧 2014-04-22
  • 打赏
  • 举报
回复
代码要怎么改。。
yufengdxw 2014-04-22
  • 打赏
  • 举报
回复
不知道你说的是不是struts2。你用自带的拦截器就如下例: <interceptor-ref name="checkbox"> <param name="uncheckedValue">0</param> </interceptor-ref> <interceptor-ref name="defaultStack"/>(必须加,否则出错)
课程简介:本课程主要是跟各位小伙伴分享、介绍并实战两大核心的用户身份认证(接口鉴权)模式,即基于Token的认证模式 以及 基于Session的认证模式,其中 (1)   基于Token的认证模式 则主要介绍了三种核心、主流的认证模式,即基于Token+数据库、基于Token+缓存中间件Redis、基于Token+JWT的认证模式。 (2)   基于Session的认证模式 也主要介绍了三种核心、主流的认证模式,即基于原生Spring Session以及Session共享的认证模式、基于Shiro Session的认证模式、基于Shiro + Redis 的Session共享认证模式 即课程的整体介绍如下图所示: 核心技术栈列表:值得介绍的是,本课程在技术栈层面涵盖了“用户身份认证”、“接口鉴权”等业务场景常用的大部分技术,包括Spring Boot2.x、Spring MVC、Mybatis、加密解密算法AES、雪花算法Snowflake、统一验参工具ValidatorUtil、JWT(Json Web Token)、缓存中间件Redis、Shiro(身份认证与会话等等)、过滤器Filter、拦截器Interceptor、热部署插件Devtools、等等,如下图所示 值得一提的是,本课程所介绍的核心重点在于“仅仅围绕基于Token的认证模式”进行展开讲解与实战,如下图所示为Debug亲自罗列、归纳出来的几大核心要点(面试官就经常喜欢这样面): 如下图所示为 基于Token认证模式 总体上的时序图:

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧