java - Spring Mvc Form Post HTTP Status 400 客户端发送的请求语法不正确

标签 java spring spring-mvc

我一直在尝试使用表单将用户添加到 mysql 数据库,但我得到:

HTTP Status 400 客户端发送的请求在语法上不正确。

我的代码

用户.java

public class User {

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }



    private int id;
    private String name;



}

UserDAO.java

public class UserDAO {


    public void insert(User u) throws SQLException, ClassNotFoundException {
        Connection conn=Database.newDatabase().getConnection();
        PreparedStatement ps=conn.prepareStatement("insert into user values (?)");
        ps.setString(1,u.getName());

        ps.execute();
        ps.close();
        conn.close();

    }
    public List<User> getUsers() throws SQLException, ClassNotFoundException {
        List<User> list=new ArrayList<User>();
        Connection conn=Database.newDatabase().getConnection();
        PreparedStatement ps=conn.prepareStatement("select *from user");
        ResultSet rs=ps.executeQuery();
        while (rs.next()){
            User u=new User();
            u.setId(rs.getInt("id"));
            u.setName(rs.getString("name"));

            list.add(u);
        }
        rs.close();
        ps.close();
        conn.close();
        return list;

    }
}

UserController.java

    package com.springapp.mvc.Controller;

import java.sql.SQLException;

import com.springapp.mvc.Model.User;
import com.springapp.mvc.Service.UserDAO;
import org.springframework.stereotype.Controller;
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;


@Controller
public class UserController {

    @RequestMapping(value = "user",method = RequestMethod.GET)
    public ModelAndView getUser() throws ClassNotFoundException, SQLException {
        UserDAO udao=new UserDAO();
        ModelAndView mav=new ModelAndView();
        mav.setViewName("userControl");
        mav.addObject("userList",udao.getUsers());
        return mav;
    }


    @RequestMapping(value = "save", method = RequestMethod.POST)
    public String createUser(@ModelAttribute(value = "user") User u) throws SQLException, ClassNotFoundException {

        UserDAO udao=new UserDAO();
        udao.insert(u);

        return "redirect:user.html"  ;
    }
}

用户控制.jsp

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"  %>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>

<html>
<head>
    <title>User</title>
</head>
<body>
<h1>
    Users

</h1>
<form:form action="save.html" method="post" commandName="user">
    <input type="hidden" name="id">
    <label for="name">User Name</label>
    <input type="text" id="name" name="name"/>
    <input type="submit" value="Submit"/>
</form:form>

<table border="1">
    <c:forEach var="user" items="${userList}">
        <tr>

            <td>${user.name}</td><td>${user.id}</td>
        </tr>
    </c:forEach>
</table>

</body>
</html>

web.xml

    <web-app 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>Spring MVC Application</display-name>
    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
    </context-param>

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

    </listener>
    <welcome-file-list>
        <welcome-file>hello.jsp</welcome-file>
    </welcome-file-list>
</web-app>

mvc-dispatcher-servlet.xml

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

    <context:component-scan base-package="com.springapp.mvc.Controller,com.springapp.mvc.Service"/>

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

</beans>

最佳答案

我认为问题出在您的 JSP 中的这一行:

<input type="hidden" name="id">

您的 id 没有值,因此在尝试将空字符串转换为 int 时会出现 NumberFormatException

关于java - Spring Mvc Form Post HTTP Status 400 客户端发送的请求语法不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22445202/

相关文章:

java - Spring MVC - 从未调用过的拦截器

java - 为什么 default-target-url 和 AJAX 调用总是得到 "GET: 403 Forbidden "?

java - 管理 SDK 目录 api 返回成员类型等于 "CUSTOMER"

java - mac上无法安装rjb,/System/Library/Frameworks/JavaVM.framework/Headers中没有头目录

java - 当另一个 fragment 中的数据发生变化时,如何刷新一个 fragment 中的RecyclerView

java - 使用jasperstarter编译运行iReport "java.lang.UnsupportedClassVersionError"

java - 为 Spring Controller 自动生成客户端

java - 处理 FTP 列表中的所有消息后停止 Spring Integration 应用程序

java - 创建名称为 'cxf' 的 bean 时出错

java - 所有 Spring-Boot 应用程序始终显示弹出登录信息