Spring MVC Error 404 Bad Request Kotlin

时间:2017-11-11 08:11:10

标签: spring spring-mvc intellij-idea kotlin jetty

  

我正在使用 Kotlin 开发 Spring MVC 应用程序。
  我有一个简单的表单,当我提交时,我收到错误404错误请求。我正在使用 Jetty服务器和Intellij社区版。我试过调试但是因为我从未调试过Web应用程序,所以它没有用。

的web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
    <servlet-name>frontDispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>frontDispatcher</servlet-name>
    <url-pattern>/springkotlinmvc/*</url-pattern>
  </servlet-mapping>
</web-app>

frontDispatcher-servlet.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: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.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">


    <context:annotation-config/>
    <mvc:annotation-driven/>
    <context:component-scan base-package="org.manya.kotlin"/>

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

</beans>

DataClasses.kt

package org.manya.kotlin

data class Address (val city : String, val state : String)

data class Student ( val name : String , val age : Int, val address : Address)

StudentController.kt

package org.manya.kotlin

import org.springframework.stereotype.Controller
import org.springframework.web.bind.annotation.*
import org.springframework.web.servlet.ModelAndView


@Controller
@RequestMapping("/student")
class StudentController
{
    //@GetMapping("/student/form")
    @GetMapping("form")
    fun studentForm() : ModelAndView{
        println("called from studentForm()")
        return ModelAndView("form")
    }

    //@PostMapping("springkotlinmvc/student/submitted")
    //@RequestMapping(value = "/student/submitted" , method = arrayOf(RequestMethod.POST))
    //@RequestMapping("/submitted")
    @PostMapping("/submitted")
    fun submitted(@ModelAttribute("student") stud : Student) : ModelAndView {
        println("called from submitted()")
        return ModelAndView("submitted")
    }
}
  

这里方法studentForm()完全被映射到视图(form.jsp),但提交的方法没有被映射。

form.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form action="./submitted" method="post">
        NAME : <input id="name"/>
        AGE : <input id="age"/>
        CITY : <input id="address.city"/>
        STATE : <input id="address.state"/>
        <input type="submit"/>
    </form>
</body>
</html>

2 个答案:

答案 0 :(得分:0)

检查您的链接404表示未找到,可能是因为未在此处指向根./submitted,更改为${pageContext.request.contextPath}/foo或WEB-INF位置的配置。

 4×× Client Error
    400 Bad Request
    401 Unauthorized
    402 Payment Required
    403 Forbidden
    404 Not Found
    405 Method Not Allowed
    406 Not Acceptable
    407 Proxy Authentication Required
    408 Request Timeout
    409 Conflict
    410 Gone
    411 Length Required
    412 Precondition Failed
    413 Payload Too Large
    414 Request-URI Too Long
    415 Unsupported Media Type
    416 Requested Range Not Satisfiable
    417 Expectation Failed
    418 I'm a teapot
    421 Misdirected Request
    422 Unprocessable Entity
    423 Locked
    424 Failed Dependency
    426 Upgrade Required
    428 Precondition Required
    429 Too Many Requests
    431 Request Header Fields Too Large
    444 Connection Closed Without Response
    451 Unavailable For Legal Reasons
    499 Client Closed Request

答案 1 :(得分:0)

我在代码中发现了这个错误,这是一个小错误,但由于我在网络领域缺乏知识,我没有意识到这一点。

  

在form.jsp中,我将 id 属性赋予所有输入元素。我将这些更改为名称,并且工作正常。