0

我学习 SpringMVC,所以我从HERE关注 Spring 3.0 MVC 系列。

如您所见,我完成了 Part1、Part2,现在我正在 Part3 学习如何使用 Spring 3 MVC 处理表单。

但是当我尝试运行我的应用程序时,我得到了这个 HTTP 404 错误。项目结构和此错误您可以在下图中看到。

我该如何解决这个问题?

在此处输入图像描述

ContactController.java 代码:

package net.viralpatel.spring3.controller;

import net.virtalpatel.spring3.form.Contact;

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.bind.annotation.SessionAttributes;
import org.springframework.web.servlet.ModelAndView;

@Controller
@SessionAttributes
public class ContactController {

@RequestMapping(value = "/addContact", method = RequestMethod.POST)
public String addContact(@ModelAttribute("contact")
Contact contact, BindingResult result) {

    System.out.println("First Name:" + contact.getFirstname() + 
                "Last Name:" + contact.getLastname());

    return "redirect:contacts.html";
}

@RequestMapping("/contacts")
public ModelAndView showContacts() {

    return new ModelAndView("contact", "command", new Contact());
}}

spring-servlet.xml 代码:

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

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">

<context:component-scan
    base-package="net.viralpatel.spring3.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/" />
    <property name="suffix" value=".jsp" />
</bean>

****index.jsp 代码:****

<jsp:forward page="contacts.html"></jsp:forward>

web.xml 代码:

<?xml version="1.0" encoding="UTF-8"?>
 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee                     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>Spring3MVC</display-name>
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<servlet>
    <servlet-name>spring</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>spring</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

4

3 回答 3

1

你的index.jsp被转发到contacts.html

但是你的 spring 配置没有映射/contacts.html,你已经映射/contacts了。

您需要将/contacts映射更改为

@RequestMapping("/contacts.html")
public ModelAndView showContacts() {
    return new ModelAndView("contact", "command", new Contact());
}
于 2013-03-06T16:09:04.093 回答
1

只需更改contactcontacts

改变

return new ModelAndView("contact", "command", new Contact());

return new ModelAndView("contacts", "command", new Contact());

问题出在您的转发中,它将检查contact.jsp,但实际上您有contacts.jsp(您的后缀属性为 .jsp )

于 2013-03-07T04:44:18.493 回答
0

localhost:8080/Spring3MVC/index.jsp 如您所见,我首先尝试打开 index.jsp,然后重定向到 contact.jsp – Zookey 44 分钟前

我想你把它弄混了。1)有一个错字,你说contact.jsp,但文件名是contacts.jsp(eclipse中的文件名)2)contacts.html文件在哪里?我建议,您首先返回到 jsp,然后查看是否可以让控制器返回 jsp,然后在创建后尝试重定向到 html 文件。

于 2013-03-06T17:23:42.107 回答