Spring - 请求的资源不可用

时间:2016-10-21 10:33:02

标签: java spring jsp spring-mvc

我正在尝试使用Spring MVC构建一个基本的Java应用程序,但是,我在应用程序中遇到了链接问题。

这是我的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>

因为这是我第一次使用Spring(我知道这里有很多问题要求/回答这个问题 - 因此我找不到能帮助我的答案),我跟着{{3} }。

我的文件夹结构与他们在教程中的内容类似,但是,每次单击链接转到第二页时,我都会收到404错误说:

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

2 个答案:

答案 0 :(得分:0)

  1. /代码中的<url-pattern>基本上就足够了。我需要/welcome.jsp/welcome.html

    <servlet-mapping>
       <servlet-name>test</servlet-name>
       <url-pattern>/</url-pattern>
    </servlet-mapping>
    
  2. 无需在value的{​​{1}}属性中提供相对路径。

    prefix
  3. 还有一件事是你也可以尝试用<property name="prefix"> <value>/WEB-INF/jsp/</value> </property> 代替InternalResourceViewResolver

    UrlBasedViewResolver

答案 1 :(得分:0)

将表单操作更改为welcome.html

<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注释。 和URL映射为 @RequestMapping( “/欢迎”)