2014-12-19 3 views
0

친애하는 친구,액션 URL이 Spring MVC에서 메소드 액션 이름을 호출하지 않음

Spring MVC 양식 예제 웹 프로젝트를 실행하려고했습니다.

동작 이름이 해당 URL에 도달하려고 시도 할 때 해당보기가 을 호출하지 않지만 뷰 이름 (/viewname.html)을 사용하여 URL을 호출하려고 시도하면 해당 페이지가 표시됩니다.

많은 예제를 보았고 내 코드가 액션 이름을 기반으로 호출하지 않는 이유가 궁금합니다.

내 샘플 코드 :

컨트롤러 :

@Controller 
@RequestMapping("/test") 
public class TestController { 

    @RequestMapping(value="/login",method = RequestMethod.GET) 
     public String login(ModelMap model){ 
      model.addAttribute("message","Welcome Jagan"); 
      return "login"; 
     } 
    } 

봄-servlet.xml에 :

내 서블릿 설정 파일

<?xml version="1.0" encoding="UTF-8"?> 
      <beans xmlns="http://www.springframework.org/schema/beans" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 
       xmlns:context="http://www.springframework.org/schema/context" 
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
      http://www.springframework.org/schema/context 
      http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 


       <context:component-scan base-package="controller"/> 

       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
        <property name="prefix" value="/WEB-INF/jsp/" /> 
        <property name="suffix" value=".jsp" /> 
       </bean> 
      </beans> 

web.xml 파일은 :

<?xml version="1.0" encoding="UTF-8"?> 
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
     <display-name>SpringMVCWithJSP</display-name> 
     <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
     <welcome-file>index.jsp</welcome-file> 
     </welcome-file-list> 
     <servlet> 
     <servlet-name>spring</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
     </servlet> 
     <servlet-mapping> 
     <servlet-name>spring</servlet-name> 
     <url-pattern>*.html</url-pattern> 
     </servlet-mapping> 
    </web-app> 

의 login.jsp처럼 내 웹 XML 보인다 : 나는 다음과 같은 URL을

 http://localhost:8082/SpringMVCWithJSP/test/login  => not invoking login page. 

    ttp://localhost:8082/SpringMVCWithJSP/test/login.html => successfully invoking login page . 

을 공격하려고하면 일부 환영의 콘텐츠

을 가진 내 질문은 login.jsp를 직접 호출하지 않고 대신 .../test/login.html으로 만 호출하고 .../test/login으로는 호출하지 않는 로그인 작업 이름입니다. 이 친구를 해결하는 데 도움이되는 아이디어가 있습니까? 당신에

+0

서블릿은'* .html' 패턴을 가진 요청에만 응답합니다. 서블릿이 URL에 '.html'을 추가하지 않으면 (패턴과 일치하지 않기 때문에) 서블릿은 패턴을 찾지 못합니다. – ochi

답변

0

는 서블릿이 그 URL이 .html에서이를 호출 만에 응답 의미,이 서블릿 매핑을

<servlet-mapping> 
    <servlet-name>spring</servlet-name> 
    <url-pattern>*.html</url-pattern> 
</servlet-mapping> 

web.xml. 그래서 해결할 것이 없습니다. 예상대로 작동 중

매핑을 *으로 남겨두면 서블릿이 모든 요청 (원하는 결과 일 수도 있고 그렇지 않을 수도 있음)을 처리하도록 강요합니다. 서블릿으로 처리하고 싶지 않은 정적 파일 (예 : CSS, JS, PNG 등)을 사용하는 것이 좋습니다 (서버가 느려집니다. )

+0

안녕하세요, Ochi, 답장을 보내 주셔서 감사합니다. 내 http MVC proj가 URL http : // localhost : 8082/SpringMVCWithJSP/test/login 호출이 아닙니다. My Spring MVC에서는 액션 이름을 기반으로 호출해야합니다. 내가 구성한 방법. 확장 URL을 정확하게 지정하면 작업 이름 (로그인)을 통해 호출하는 대신 페이지 만 표시됩니다. – Jagan

+0

@Jagan Incorrect! - 스프링 설정에서 확장을 사용하여 url을 입력하면'login.jsp' 페이지가 표시됩니다 :'<속성 이름 ="접미사 "값 =".jsp "/> '---- 그것을 디버깅 하는가? 액션 (로그인) 안에 중단 점을 넣으면 .jsp 페이지를 호출하기 전에 중단 점이 표시됩니다. – ochi