SpringMVC 차단기 로그 인 인증 실현

블 로 그 는 Demo 형식 으로 차단기 의 사용 을 설명 한다.
프로젝트 구 조 는 그림 과 같다.

필요 한 jar:springMVC 설정 에 필요 한 jar 와 jstl 에 필요 한 jar 가 있 습 니 다.

SpringMVC 가방 의 역할 설명:
aopalliance.jar:이 가방 은 AOP 연맹 의 API 패키지 로 절단면 을 위 한 인터페이스 가 포함 되 어 있 습 니 다.보통 spring 등 동적 짜 임 기능 을 가 진 프레임 워 크 는 이 jar 에 의존 합 니 다.
spring-core.jar:이 jar 파일 은 Spring 프레임 워 크 의 기본 핵심 도구 류 를 포함 합 니 다.Spring 의 다른 구성 요 소 는 이 가방 에 사용 해 야 하 는 클래스 입 니 다.다른 구성 요소 의 기본 핵심 입 니 다.물론 응용 시스템 에서 도 이 도구 류 를 사용 할 수 있 습 니 다.
외부 의존 Commons Logging(Log4J).
spring-beans.jar:이 jar 파일 은 모든 응용 프로그램 에 사용 되 는 것 입 니 다.설정 파일 에 접근 하고 bean 을 만 들 고 관리 하 며 Inversion of Control/을 포함 합 니 다.
Dependency Injection(IoC/DI)작업 과 관련 된 모든 클래스 입 니 다.기본 적 인 IoC/DI 지원 만 있 으 면 spring-core.jar 및 spring-beans.jar 파일 을 도입 합 니 다.
됐 습 니 다.
spring-aop.jar:이 jar 파일 은 Spring 의 AOP 기능 을 사용 할 때 필요 한 클래스 와 원본 메타 데이터 지원 을 포함 합 니 다.AOP 기반 Spring 기능 을 사용 합 니 다.예 를 들 어 성명 형 사무 관리(Declarative Transaction Management)도 응용 프로그램 에 이 jar 패 키 지 를 포함 해 야 합 니 다.
외부 의존 spring-core,(spring-beans,AOP Alliance,CGLIB,Commons Attributes).
spring-context.jar:이 jar 파일 은 Spring 핵심 에 대량의 확장 을 제공 합 니 다.Spring Application Context 기능 을 사용 할 때 필요 한 모든 클래스,JDNI 를 찾 을 수 있 습 니 다.
필요 한 모든 클래스,instrumentation 구성 요소 및 검증 Validation 과 관련 된 클래스 입 니 다.
외부 의존 spring-beans,(spring-aop).
spring-context-support:Spring-context 확장 지원,MVC 에 사용
spring-web.jar:이 jar 파일 은 웹 응용 개발 시 Spring 프레임 워 크 를 사용 할 때 필요 한 핵심 클래스 를 포함 합 니 다.웹 응용 프로그램 Context 특성 을 자동 으로 불 러 오 는 클래스,Struts 와 JSF 통합 클래스,파일 업로드 지원 클래스,Filter 클래스 와 대량의 도구 보조 클래스 를 포함 합 니 다.
외부 의존 spring-context,Servlet API,(JSP API,JSTL,Commons FileUpload,COS).
spring-webmvc.jar:이 jar 파일 은 Spring MVC 프레임 워 크 와 관련 된 모든 종 류 를 포함 합 니 다.프레임 워 크 를 포함 한 Servlets,웹 MVC 프레임 워 크,컨트롤 러,보기 지원.물론 응용 프로그램 이 독립 된 MVC 프레임 워 크 를 사용 했다 면 이 JAR 파일 의 어떤 종류 도 필요 없습니다.
외부 의존 spring-web,(spring-support,Tiles,iText,POI).
spring-aspects.jar:aspectJ 에 대한 지원 을 제공 합 니 다.예 를 들 어 Eclipse AJDT 와 같은 기능 을 IDE 에 편리 하 게 통합 할 수 있 도록 합 니 다.
외부 의존.
spring-jdbc.jar:이 jar 파일 은 Spring 이 JDBC 데이터 에 접근 하 는 모든 종 류 를 포함 합 니 다.
외부 의존 spring-beans,spring-dao.
spring-test.jar:Junit 등 테스트 프레임 워 크 에 대한 간단 한 패키지
spring-tx.jar:Spring 의 tx 트 랜 잭 션 처리 jar
spring-expression.jar:Spring 표현 식 언어
작성 컨트롤 러:

package com.mvc.action; 
 
import javax.servlet.http.HttpSession; 
 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
 
/** 
 *          
 */ 
@Controller 
public class LoginControl { 
 
 /** 
  *    
  * @param session 
  *   HttpSession 
  * @param username 
  *       
  * @param password 
  *      
  * @return 
  */ 
 @RequestMapping(value="/login") 
 public String login(HttpSession session,String username,String password) throws Exception{  
  // Session      
  session.setAttribute("username", username); 
  //    
  return "redirect:hello.action"; 
 } 
  
 /** 
  *      
  * @param session 
  *   Session 
  * @return 
  * @throws Exception 
  */ 
 @RequestMapping(value="/logout") 
 public String logout(HttpSession session) throws Exception{ 
  //  Session 
  session.invalidate(); 
   
  return "redirect:hello.action"; 
 } 
  
  
  
} 
작성 차단기:

package com.mvc.interceptor; 
 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import javax.servlet.http.HttpSession; 
 
import org.springframework.web.servlet.HandlerInterceptor; 
import org.springframework.web.servlet.ModelAndView; 
/** 
 *          
 */ 
public class LoginInterceptor implements HandlerInterceptor{ 
 
 /** 
  * Handler             
  */ 
 public void afterCompletion(HttpServletRequest request, 
   HttpServletResponse response, Object handler, Exception exc) 
   throws Exception { 
   
 } 
 
 /** 
  * Handler    ,ModelAndView           
  */ 
 public void postHandle(HttpServletRequest request, HttpServletResponse response, 
   Object handler, ModelAndView modelAndView) throws Exception { 
 } 
 
 /** 
  * Handler           
  */ 
 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, 
   Object handler) throws Exception { 
  //     URL 
  String url = request.getRequestURI(); 
  //URL:login.jsp    ;  demo   login.jsp        ,   URL        
  if(url.indexOf("login.action")>=0){ 
   return true; 
  } 
  //  Session 
  HttpSession session = request.getSession(); 
  String username = (String)session.getAttribute("username"); 
   
  if(username != null){ 
   return true; 
  } 
  //      ,        
  request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response); 
   
  return false; 
 } 
 
} 
SpringMVC 설정 파일:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
 xmlns:aop="http://www.springframework.org/schema/aop" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns:context="http://www.springframework.org/schema/context" 
 xmlns:mvc="http://www.springframework.org/schema/mvc" 
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
  http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd 
  http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> 
   
  <!--        --> 
  <!--  action    , spring       ,   action spring        --> 
  <context:component-scan base-package="com.mvc.action" /> 
   
  <!--    Handler 
  <bean name="/hello.action" class="com.mvc.action.HelloAction"></bean> 
   --> 
  <!--       HandlerMapping --> 
  <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> 
   
  <!--       HandlerAdapter --> 
  <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> 
   <property name="messageConverters"> 
    <list> 
     <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean> 
    </list> 
   </property> 
  </bean> 
 
  <!--      ViewResolver --> 
  <!--   jsp,    jstl --> 
  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
   <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> 
   <property name="prefix" value="/WEB-INF/jsp/" /> 
   <property name="suffix" value=".jsp" /> 
  </bean> 
   
  <!--              mvc:annotation-driven  ,          --> 
  <mvc:annotation-driven></mvc:annotation-driven> 
  <!--     --> 
  <mvc:interceptors> 
   <!--      ,     --> 
   <mvc:interceptor> 
    <mvc:mapping path="/**"/> 
    <bean class="com.mvc.interceptor.LoginInterceptor"></bean> 
   </mvc:interceptor> 
  </mvc:interceptors> 
  
</beans> 
로그 인 화면:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<% 
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%>"> 
  
 <title>My JSP 'login.jsp' starting page</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"> 
 --> 
 
 </head> 
 
 <body> 
  <form action="${pageContext.request.contextPath}/login.action" method="post"> 
     :<input type="text" name="username" /><br> 
    :<input type="text" name="password" /><br> 
  <input type="submit" value="  " /> 
  </form> 
 </body> 
</html> 
로그 인 성공 후 점프 하 는 창
hello.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<%@taglib uri="http://www.springframework.org/tags" prefix="spring" %> 
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %> 
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<% 
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%>"> 
  
 <title>My JSP 'hello.jsp' starting page</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"> 
 --> 
 
 </head> 
 
 <body> 
     :${username} 
 <c:if test="${username!=null}"> 
  <a href="${pageContext.request.contextPath }/logout.action">  </a> 
 </c:if> 
 ${message} 
 </body> 
</html> 
Hello Control.java,저 는 Hello World 형식 으로 썼 습 니 다.프로젝트 에 따라 고 쳐 야 합 니 다.

package com.mvc.action; 
 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.RequestMapping; 
 
//        Handler    
@Controller 
public class HelloAction{ 
 
 @RequestMapping("/hello")//          url 
 public String hello(Model model){ 
  String message = "SpringMVC"; 
  // model  Attribute 
  model.addAttribute("message",message); 
  return "hello"; 
 } 
// public ModelAndView handleRequest(HttpServletRequest request, 
//   HttpServletResponse response) throws Exception { 
//  
//  //           
//  String message = "hello world!"; 
//  
//  //  request            
//  //request.setAttribute("message", message); 
//  
//  ModelAndView modelAndView = new ModelAndView(); 
//  //    request.setAttribute(),           
//  //model   
//  modelAndView.addObject("message", message); 
//  //     
//  modelAndView.setViewName("hello"); 
//  
//  return modelAndView; 
// } 
  
  
 
  
} 

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기