我正在使用 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>
答案 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 属性赋予所有输入元素。我将这些更改为名称,并且工作正常。