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

时间:2012-07-15 00:25:05

标签: java spring-mvc

我正在开发一个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 个答案:

答案 0 :(得分:6)

尝试以下方法:

1)在web.xml中,更改

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

<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等网址重试。您应该可以访问您的页面。可能还有其他错误,但我们只处理404问题。

5)可选(但强烈推荐):阅读一些doc + a good getting started tutorial来学习基本的最佳实践以及如何设置。