Java web登录拦截器_SpringMVC拦截器(实现登录验证拦截器)
本例實現登陸時的驗證攔截,采用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攔截器就完成了。
總結
以上是生活随笔為你收集整理的Java web登录拦截器_SpringMVC拦截器(实现登录验证拦截器)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓qq历史版本(安卓qq历史)
- 下一篇: java sentence_Java S