spring mvc interceptor拦截器拦截请求

自己写项目玩又要用到简单的权限管理,于是总结下拦截器的简单使用。

spring-mvc.xml配置

<!-- 拦截器设置 -->
	<mvc:interceptors>
		<mvc:interceptor>
			<!-- 拦截所有请求 -->
			<!-- <mvc:mapping path="/**" /> -->
			<mvc:mapping path="/god/**" />
			<mvc:mapping path="/blog/**" />
			<mvc:mapping path="/file/**" />
			<bean class="com.jiest.interceptor.MyInterceptor" />
		</mvc:interceptor>
	</mvc:interceptors>

自定义拦截器的类所在路径:com.jiest.interceptor.MyInterceptor

要拦截的路径为各个controller,如果只写一个/**则是拦截所有请求,包括静态资源。

package com.jiest.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class MyInterceptor implements HandlerInterceptor {

    // 写自己的规则,通过返回true,拦截返回false
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		String uri = request.getRequestURI();// 实际访问的接口:/home/blog/list
		System.out.println(uri);
		// 下面的接口是需要验证的,首先验证是否登录
		Object isLogin = request.getSession().getAttribute("login");
		if (isLogin == null || !isLogin.equals(1)) {
			System.out.println("error: unlogin");
			// response.sendError(401);// 未登陆
			return false;
		}
		return true;
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		// System.out.println("IcmsInterceptor.postHandle()");
		// 这句话的意思,是让浏览器用utf8来解析返回的数据
		response.setHeader("Content-type", "text/html;charset=UTF-8");
		// 这句话的意思,是告诉servlet用UTF-8转码,而不是用默认的ISO8859
		response.setCharacterEncoding("UTF-8");
	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
	}

}

大概就这样了。

突然想起,做个人网站,权限管理没必要像之前项目那么麻烦,还弄些表。既然这个网站只有一个管理员,那我完全可以只对POST请求做拦截验证,这样简单多了。

转载于:https://my.oschina.net/liujiest/blog/735793

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值