2016-10-21 9 views
1

Spring MVC를 사용하여 기본 Java 애플리케이션을 작성하려고하지만 앱 내의 링크에 문제가 있습니다. 여기 Spring - 요청한 리소스를 사용할 수 없습니다.

은 내 web.xml

<servlet> 
    <servlet-name>test</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/test-servlet.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>test</servlet-name> 
    <url-pattern>/</url-pattern> 
    <url-pattern>/welcome.jsp</url-pattern> 
    <url-pattern>/welcome.html</url-pattern> 
</servlet-mapping> 

test-servlet.xml

<mvc:annotation-driven /> 
<mvc:default-servlet-handler/> 
<context:component-scan base-package="com.springtest.controller"/> 

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 

    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> 
    <property name="prefix"> 
     <value>./WEB-INF/jsp/</value> 
    </property> 
    <property name="suffix"> 
     <value>.jsp </value> 
    </property> 

</bean> 

응용 프로그램을 실행할 때 표시됩니다 첫 번째 페이지는 다음과 같습니다

<html> 
<head> 
    <title>Spring MVC Tutorial</title> 
</head> 
<body> 
<br> 
<div style="text-align:center"> 
    <h3> 
     <a href="welcome">Click to say hello </a> 
    </h3> 
</div> 
</body> 
</html> 

그리고 위해 welcome.jsp은 이것이다 :이 봄을 처음 사용하기 때문에

<html> 
<head> 
    <title>Hello World MVC</title> 

</head> 
<body>${message} 

</body> 
</html> 

(내가 물어 여기에 질문을 많이 알고있다 /이 대답하여 - 따라서 나는 없었다 나를 도울 수있는 대답을 찾을 수있을 때) 나는 online tutorial을 따랐다.

내 폴더 structer들이 자습서에있는 것과 비슷하지만, 때마다 나는 두 번째 페이지로 이동하는 링크를 클릭, 나는 404 오류가 말을 얻을 :

/SpringTutorial-1.0-SNAPSHOT/WEB-INF/jsp/welcome.jsp - is not available 
+1

/WEB-INF/JSP/ Nimesh

답변

0
  1. <url-pattern> 태그에서 기본적으로 /이면 충분합니다. /welcome.jsp 또는 /welcome.html이 걸릴 것입니다.

    <servlet-mapping> 
        <servlet-name>test</servlet-name> 
        <url-pattern>/</url-pattern> 
    </servlet-mapping> 
    
  2. 필요가 없습니다

    prefixvalue 속성에 상대 경로를 제공합니다.

    <property name="prefix"> 
        <value>/WEB-INF/jsp/</value> 
    </property> 
    

그리고 한 가지 더 당신은 또한 UrlBasedViewResolver 대신에 InternalResourceViewResolver으로 시도 할 수있다.

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

나는 여전히 같은 오류가 발생합니다. Tomcat에 전개 된 후 파일 welcome.jsp의 읽기 액세스로 인해 오류가 발생할 수 있습니까? –

+0

디렉토리 구조를 표시하고 컨트롤러도 표시 할 수 있습니까? –

+0

@AdrianDanielCulea는 이것을 'Click to say hello'으로 변경하고 viewResolver를 InternalResourceViewResolver –

0
는 양식 작업을

<html> 
<head> 
    <title>Spring MVC Tutorial</title> 
</head> 
<body> 
<br> 
<div style="text-align:center"> 
    <h3> 
     <a href="welcome.html">Click to say hello </a> 
    </h3> 
</div> 
</body> 
</html> 

also change url pattern to/or *.html 


<servlet> 
    <servlet-name>test</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/test-servlet.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

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

also view resolver to internal resource view resolver and avoid giving relative url in it. 

은 또한 당신이 @Controller 어노테이션을 부여했는지 확인 welcome.html 페이지로 변경

. 그리고 @RequestMapping 등의 URL 매핑 ("/ 환영")

관련 문제