java 登陆拦截器_SpringMVC拦截器——实现登录验证拦截器的示例代码

这篇博客详细介绍了如何使用SpringMVC拦截器实现登录验证。通过拦截器,当用户尝试访问需要登录的页面时,若未登录则重定向至登录页面。核心代码包括Controller中的登录处理和异常抛出,以及Interceptor中的预处理方法preHandle进行拦截判断。
摘要由CSDN通过智能技术生成

本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现

当用户点击到网站主页时要进行拦截,用户登录了才能进入网站主页,否则进入登陆页面

核心代码

首先是index.jsp,显示链接

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

首页

controller类

package com.jikexueyuan.demo.springmvc.lesson4.controller;

import javax.annotation.Resource;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.bind.annotation.RequestParam;

import com.jikexueyuan.demo.springmvc.lesson4.constant.Global;

import com.jikexueyuan.demo.springmvc.lesson4.exception.MyException;

import com.jikexueyuan.demo.springmvc.lesson4.model.User;

import com.jikexueyuan.demo.springmvc.lesson4.service.LoginService;

/**

* 这个例子讲解了如何定义MVC三层注解,使用@Resource进行注入,以及使用@RequestMapping、@RequestParam 、@SessionAttributes

*/

@Controller

public class LoginController extends BaseController {

@Resource

LoginService service;

@Resource

HttpServletRequest request;

@RequestMapping("/exception")

public void exception() throws MyException{

throw new MyException("测试springmvc中的异常捕获");

}

@RequestMapping("/loginpage")

public String toLoginPage(){

return "/WEB-INF/jsp/login.jsp";

}

@RequestMapping("/user/home")

public String toUserHome(){

return "/WEB-INF/jsp/userhome.jsp";

}

@RequestMapping("/logout")

public String logout(){

request.getSession().removeAttribute(Global.USER_SESSION_KEY);

return "redirect:/";

}

@RequestMapping(value = "/doLogin", method = RequestMethod.POST)

public String doLogin(@RequestParam String userName, @RequestParam String password){

try {

User user = service.doLogin(userName, password);

request.getSession().setAttribute(Global.USER_SESSION_KEY, user);

return "redirect:/user/home.html";

} catch (Exception e) {

return "/WEB-INF/jsp/login.jsp";

}

}

}

当点击用户中心时,触发拦截,相关配置如下

在spring-mvc.xml中加上拦截配置,拦截所有URL中包含/user/的请求,当然请求用户中心时就会触发这个拦截器了

然后是bean指向的具体的interceptor类,如果session保存的用户信息为null,则跳到login页面,postHandle和afterCompletion方法都不执行,反之都执行。

package com.jikexueyuan.demo.springmvc.lesson4.interceptor;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;

import org.springframework.web.servlet.ModelAndView;

import com.jikexueyuan.demo.springmvc.lesson4.constant.Global;

public class LoginInterceptor implements HandlerInterceptor {

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

Object user = request.getSession().getAttribute(Global.USER_SESSION_KEY);

if (user == null) {

System.out.println("尚未登录,调到登录页面");

response.sendRedirect("/loginpage.html");

return false;

}

return true;

}

@Override

public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

System.out.println("postHandle");

}

@Override

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

System.out.println("afterCompletion");

}

}

至此,简单的springmvc拦截器就完成了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值