SpringMVC 차단기 – 로그인 인증 차단기의 예제 코드
사용자가 사이트 홈페이지를 클릭할 때 차단을 해야 사용자가 로그인해야만 사이트 홈페이지에 들어갈 수 있으며, 그렇지 않으면 로그인 페이지에 들어갈 수 있다
핵심 코드
우선 인덱스.jsp, 링크 보이기
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>" rel="external nofollow" >
<title> </title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" >
-->
</head>
<body>
<div style="margin:0 auto;padding-top:100px;font-size:18px;" align="center">
<p><a href="loginpage.html" rel="external nofollow" > </a></p>
<p><a href="user/home.html" rel="external nofollow" > </a></p>
<p><a href="exception.html" rel="external nofollow" > </a></p>
</div>
</body>
</html>
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/의 요청을 차단합니다. 물론 사용자 센터를 요청할 때 이 차단기를 터치합니다.
<mvc:interceptors>
<mvc:interceptor>
<!-- URL /user/ -->
<mvc:mapping path="/user/**"/>
<bean class="com.jikexueyuan.demo.springmvc.lesson4.interceptor.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
그 다음에 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");
}
}
이로써 간단한 스프링mvc 차단기가 완성되었습니다.이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
springmvc application/octet-stream problemmistake: Source code: Solution: Summarize: application/octet-stream is the original binary stream method. If the convers...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.