Spring MVC -- 请求的资源()不可用

3

我正在开发一个基于Spring 3.1的MVC应用程序,但是我的JSP页面在浏览器中没有渲染出来。相反,我看到了一条消息,上面写着“所请求的资源()不可用”。有人能帮忙吗?以下是我的错误信息。

    HTTP Status 404 - 

--------------------------------------------------------------------------------

type Status report

message 

description The requested resource () is not available.

这是访客留言板页面GuestBook.jsp。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="myTag" uri="commentsTag"%>
<html>
<head>
<title>Granada High School Class of 1986 Comment Page</title>
<!-- Put a confirmation message here once you
     figure out how to do it with Spring -->
<style type="text/css">
p {
    text-align: justify;
}

h1 {
    text-align: center;
}
</style>
</head>
<body>
    <h1>Granada High School Class of 1986 Guest Book</h1>
    <%@ include file="menu.jsp"%><br>
    <b><font color="red"><c:out value='${confirmation}' /></font></b>
    <c:remove var="confirmation" scope="session" />
    <p>This page is a place where you can share memories from high
        school, what you're doing these days, comments about this web site
        (good or bad), etc. The comments will appear at the bottom of the
        page.</p>
    <form:form method="post" action="GuestBook.jsp" modelAttribute="comment">
        <table>
            <tr>
                <td><form:label path="name">Name</form:label></td>
                <td><form:input path="name" /></td>
            </tr>
            <tr>
                <td><form:label path="message">Message</form:label></td>
                <td><form:textarea path="message" rows="10" cols="50" /></td>
            </tr>
            <tr>
                <td><input type="submit" value="Submit comment" /></td>
                <td>&nbsp;</td>
            </tr>
        </table>
    </form:form>
    <br>
    <myTag:comments />
    <%@ include file="footer.jsp"%>
</body>
</html>

这是com.controller.CommentController.java文件。

package com.controller;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.dao.CommentDAO;
import com.model.Comment;

@Controller
@RequestMapping("/GuestBook.jsp")
public class CommentController {
    Comment comment;

    public Comment getComment() {
        return comment;
    }

    public void setComment(Comment comment) {
        this.comment = comment;
    }

    @RequestMapping(value = "/GuestBook", method = RequestMethod.POST)
    public String addComment(@ModelAttribute("comment") Comment comment, BindingResult result) {
        CommentDAO commentDAO = new CommentDAO();
        java.util.Date today = new java.util.Date();
        java.sql.Date date = new java.sql.Date(today.getTime());
        comment.setDate(date);

        if (commentDAO.writeComment(comment) == true) {
            return "redirect:GuestBook.jsp";
        }

        return "redirect:Oops.jsp";
    }

    @RequestMapping("/GuestBook")
    public ModelAndView showComments() {
        return new ModelAndView("comments", "command", new Comment());
    }
}

这是web.xml。
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>Granada High School Class of 1986</display-name>
    <servlet>
        <servlet-name>ghs1986</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>ghs1986</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>

    <listener>
        <listener-class>com.configuration.ConfigurationListener</listener-class>
    </listener>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <welcome-file-list>
        <welcome-file>home.jsp</welcome-file>
    </welcome-file-list>
</web-app>

这是applicationContext.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"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    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
                http://www.springframework.org/schema/mvc
                http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <mvc:annotation-driven />

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

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>

</beans>

这是ghs1986-servlet.xml。
<?xml version="1.0" ?>
<!DOCTYPE beans PUBLIC
"-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
    <bean name="comment" class="com.model.Comment" />

    <bean name="/GuestBook.jsp" class="com.controller.CommentController">
        <property name="comment" ref="comment" />
    </bean>
</beans>
1个回答

6
请尝试以下步骤:

1)在web.xml中更改

<url-pattern>/*</url-pattern>

to

<url-pattern>/</url-pattern>

2) 移动代码

<mvc:annotation-driven />

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

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="suffix">
        <value>.jsp</value>
    </property>
</bean>

从applicationContext.xml到ghs1986-servlet.xml

3) 在CommentController中,将@RequestMapping("/GuestBook.jsp")改为@RequestMapping("/GuestBook")

4) 仍然在CommentController中,更改

@RequestMapping("/GuestBook")
public ModelAndView showComments() {
...
}

转换为类似于

@RequestMapping("/showComments")
public ModelAndView showComments() {
...
}

现在请尝试使用类似于http://localhost:<your_port>/GuestBook/showComments的URL。您应该可以访问页面。可能还有其他错误,但我们只在此处理404错误。
5) 可选(但强烈建议):阅读一些文档和一个良好的入门教程,了解基本最佳实践和如何设置事物。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接