SpringMVC에서 정적 리소스가 차단되지 않도록 설정하는 문제에 대해 자세히 설명합니다.

이틀 동안 SpringMVC를 사용하여 로그인을 하고 등록된 작은 데모를 사용합니다. 그 중에서springmvc 차단기를 사용하여 로그인 조작을 차단 처리하고 URL을 검증합니다.검증이 통과되면handler 처리를 할 수 있습니다. 검증이 지정한 페이지로 바로 넘어가거나 방향을 바꾸지 않으면.
그러나 이 조작을 할 때 큰 문제가 발생했습니다. 프로젝트 데모의 정적 자원이 요청할 때마다 차단되어 처리됩니다!페이지로 돌아갈 때 페이지는 더 이상 생각한 모습이 아니다.
내가 스프링mvc인 줄 알았어.xml에서 차단기와 정적 자원 설정을 설정했는데 이런 결과가 나왔기 때문에 전 브라우저의 설정을 보고 css 파일, js 파일을 봅니다.마지막에야 목표를 잠그는 것은 정적 자원의 문제로 웹에 직접 있다.xml에서 defaultServlet 방식을 사용해야 문제를 해결할 수 있습니다.
다음은 내 차단기 코드입니다.

@Override 
public boolean preHandle(HttpServletRequest request, 
  HttpServletResponse response, Object handler) throws Exception { 
 String url=request.getRequestURI(); 
 System.out.println(url); 
 String method=request.getMethod(); 
  //  
 if(url.indexOf("/login")>=0&&method.equalsIgnoreCase("post")){ 
   return true; 
 } 
    //  
    if(url.indexOf("/toAddUserPage")>=0){ 
  return true; 
 } 
  //   true 
 HttpSession session=request.getSession(); 
 User user=(User) session.getAttribute("user"); 
 if(user!=null){ 
       //  
       if(url.indexOf("/toLogin")>=0||url.indexOf("/toAddUserPage")>=0){ 
   request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response); 
   return false; 
  } 
  return true; 
 } 
 //  
 request.getRequestDispatcher("/WEB-INF/jsp/user/login.jsp").forward(request, response); 
 return false; 
} 
다음은 저의 springmvc 설정입니다.

<!--  controller、service、 controller, controller  --> 
 <context:component-scan base-package="com.ipro.shopping.controller"/> 
  <!--    json  --> 
 <mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven> 
  
 <!--   :js、css、img、 --> 
 <!-- <MVC:RESOURCES LOCATION="/" MAPPING="**.HTML"/> 
 <MVC:RESOURCES LOCATION="/" MAPPING="**.JS"/> 
 <MVC:RESOURCES LOCATION="/" MAPPING="**.CSS"/> 
 <MVC:RESOURCES LOCATION="/" MAPPING="**.PNG"/> 
 <MVC:RESOURCES LOCATION="/" MAPPING="**.GIF"/> 
 <MVC:RESOURCES LOCATION="/" MAPPING="**.JPG"/> --> 
  
 <!--   --> 
 <mvc:interceptors> 
  <mvc:interceptor> 
   <mvc:mapping path="/**"/> 
   <bean class="com.ipro.shopping.interceptor.LoginInterceptor"></bean> 
  </mvc:interceptor> 
 </mvc:interceptors> 
나는 모든 정적 자원을 어떤 형식으로 설정했지만, 결과는 여전히 정확한 답안을 되돌릴 수 없었다.
다음은 웹 설정입니다.xml 다음 파일:

<servlet-mapping> 
  <servlet-name>default</servlet-name> 
  <url-pattern>*.jpg</url-pattern> 
 </servlet-mapping> 
 <servlet-mapping> 
  <servlet-name>default</servlet-name> 
  <url-pattern>*.gif</url-pattern> 
 </servlet-mapping> 
 <servlet-mapping> 
  <servlet-name>default</servlet-name> 
  <url-pattern>*.js</url-pattern> 
 </servlet-mapping> 
 <servlet-mapping> 
  <servlet-name>default</servlet-name> 
  <url-pattern>*.css</url-pattern> 
 </servlet-mapping> 
 <servlet-mapping> 
  <servlet-name>default</servlet-name> 
  <url-pattern>*.png</url-pattern> 
 </servlet-mapping> 
  
 <!-- springmvc  --> 
 <servlet> 
  <servlet-name>springmvc</servlet-name> 
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
  <!-- contextConfigLocation springmvc  ( 、 )  contextConfigLocation, 
    /WEB-INF/servlet -serlvet.xml(springmvc-servlet.xml) --> 
  <init-param> 
   <param-name>contextConfigLocation</param-name> 
   <param-value>classpath:springmvc.xml</param-value> 
  </init-param> 
 </servlet> 
주의하는 것은 default Servlet을 설정하려면springmvc의 전단 컨트롤러 (Dispatcher Servlet) 앞에 설정해야 효력이 발생합니다.
위에는 내가 로그인 검증을 할 때 사용한 것으로 참고만 제공한다.현재 이 문제는 단지 하나의 방안만 만들었을 뿐, 인터넷에서 말하는 것은 세 가지 해결할 수 있는 방안이 있는데, 첫 번째는 바로 내가 위에서 언급한 이런 것이다
두 번째는springmvc에서 설정하는 방식입니다. 단지 제가 설정하는 것은 성공하지 못했습니다.또 하나는 default Servlet을 사용하여 주석을 사용하는 방식으로 설정하는 것이다.
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기