【问题标题】:Spring mvc doesn't see jspSpring mvc看不到jsp
【发布时间】:2014-06-29 17:05:19
【问题描述】:

我正在创建一个 Spring MVC 应用程序,但无法弄清楚为什么在启动我的应用程序时会出现 404 错误。我想查看欢迎页面,但没有显示。有什么问题?

在 /WEB-INF/view 中有 index.jsp 文件,里面有简单的 Hello 文本。

Web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
       version="3.0">

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

<servlet-mapping>
    <servlet-name>grun</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

</web-app>

grun-servlet.xml

<context:component-scan base-package="Controller"/>
<mvc:annotation-driven />

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

控制器

@Controller
@RequestMapping(value="/")
public class AController {

    @RequestMapping(method=RequestMethod.GET)
    public String welcome() {
        return "index";
    }
}

【问题讨论】:

  • 您尝试访问哪个网址?
  • 试过 localhost:8080 和 localhost:8080/grun/
  • 您的网络应用上下文路径是什么?你的 servlet 容器的日志是怎么说的?
  • 上下文路径为 '/' 似乎没有任何错误。
  • 没有错误,很好。但是你看到你的控制器被注册了吗?

标签: java spring spring-mvc


【解决方案1】:

我认为问题在于 grun-servlet.xml 中的以下位

base-package="Controller"

不寻常地将包命名为带有大写“C”的控制器。所以除非你有

package Controller;

在 AController.java 文件的开头,这是一个问题。

【讨论】:

    【解决方案2】:

    你也可以试试下面的

    WEB-INF 通常位于运行时库和类所在的位置。在Webcontent 文件夹内创建view 文件夹并提供路径为

    <property name="prefix" value="/view/"/>
    

    Wecontent 是您要公开的所有资源的根文件夹。上面这样做的原因是,由于 Webcontent 是根文件夹,因此可以相对于此指定其中的 Web 资源目录。所以文件夹xyz下的任何资源abc都可以使用/abc/xyz访问。

    【讨论】:

    • 还是什么都没有。可能是缺少什么或者我应该注册视图文件夹才能访问它?
    • 你的答案翻转了 180 分(你仍然错了),但你没有给出任何一个应该起作用的理由。
    • 这是我在所有项目中使用的配置。要直接引用 jsp 页面(或执行 GET/POST 请求),我使用完整的 URL http://localhost:8080/ProjectName/view/welcome.jsp
    • 他们不会直接访问 JSP。他们正试图通过控制器来达到它。 (请用我的身份证回复。)
    【解决方案3】:

    您的配置没有问题,只需在 web.xml 上添加 Index.jsp 作为欢迎文件,它应该可以工作

        <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    

    【讨论】:

      【解决方案4】:

      请将您的 web.xml 更改为此

         <servlet>
          <servlet-name>grun</servlet-name>
          <servlet-class>
              org.springframework.web.servlet.DispatcherServlet
          </servlet-class>
          <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
          <servlet-name>grun</servlet-name>
          <url-pattern>/</url-pattern>
      </servlet-mapping>
      <context-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>/WEB-INF/grun-servlet.xml</param-value>
      </context-param>
      <listener>
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
      
      
       Hope it will work fine
      

      【讨论】:

        【解决方案5】:

        2 可能的事情:

        您是否尝试将请求映射放在方法级别而不是控制器级别?

        @Controller
        public class AController {
        
            @RequestMapping(value = "/", method = RequestMethod.GET)
            public String welcome() {
                return "index";
            }
        }
        

        尝试将以下内容添加到您的 grun-servlet.xml:

        <context:annotation-config />
        <context:component-scan base-package="com.xxx.yyy" />
        

        其中“com.xxx.yyy”是您的 AController 所属的基本包。

        【讨论】:

        • annotation-configcomponent-scan 是多余的。你不觉得Controller是他们的包裹吗?
        • 另外,@RequestMapping 可以在类级别使用就好了。
        猜你喜欢
        • 2014-09-09
        • 2014-04-08
        • 1970-01-01
        • 2014-11-06
        • 2010-12-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-03
        相关资源
        最近更新 更多