Java 在SpringMVC中提交表单时获取HTTP状态400错误

Java 在SpringMVC中提交表单时获取HTTP状态400错误,java,hibernate,jsp,spring-mvc,http-status-code-400,Java,Hibernate,Jsp,Spring Mvc,Http Status Code 400,我有两个网页。一个是“user.jsp”和“person.jsp”。当我点击“注册”按钮时,它会转到“user.jsp”,当我点击提交按钮时,它会显示“Http状态400” PersonController.java @Controller public class PersonController { private PersonService personService; private UserService userService; @Autowired(re

我有两个网页。一个是“user.jsp”和“person.jsp”。当我点击“注册”按钮时,它会转到“user.jsp”,当我点击提交按钮时,它会显示“Http状态400”

PersonController.java

@Controller
public class PersonController {

    private PersonService personService;
    private UserService userService;

    @Autowired(required=true)
    @Qualifier(value="personService")
    public void setPersonService(PersonService ps){
        this.personService = ps;
    }


    @RequestMapping(value = "/persons", method = RequestMethod.GET)
    public String listPersons(Model model) {
        model.addAttribute("person", new Person());
        model.addAttribute("listPersons", this.personService.listPersons());
        return "person";
    }

    //For add and update person both
        @RequestMapping(value= "/person/add", method = RequestMethod.POST)
        public String addPerson(@ModelAttribute("person") Person p,@ModelAttribute("user") User u){
            String name = p.getName();
            System.out.println("name is :"+name);

            if(name == null || name == "") {
                System.out.println("user is"+name);
                return "user";
            }

            else{
                //new person, add it
                this.personService.addPerson(p);
            }

            return "redirect:/persons";

        }
        @RequestMapping(value = "/user/add", method = RequestMethod.POST)
        public String addUser(@ModelAttribute("user") User user) {


                // new user, add to DB
                this.userService.addUser(user);

            return "redirect:/persons";

        }
PersonDAOImpl.java

@Repository
public class PersonDAOImpl implements PersonDAO {

    private static final Logger logger = LoggerFactory.getLogger(PersonDAOImpl.class);

    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sf){
        this.sessionFactory = sf;
    }

    @Override
    public void addPerson(Person p) {
        Session session = this.sessionFactory.getCurrentSession();
        session.persist(p);
        logger.info("Person saved successfully, Person Details="+p);
    }

    @Override
    public void updatePerson(Person p) {
        Session session = this.sessionFactory.getCurrentSession();
        session.update(p);
        logger.info("Person updated successfully, Person Details="+p);
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<Person> listPersons() {
        Session session = this.sessionFactory.getCurrentSession();
        List<Person> personsList = session.createQuery("from Person").list();
        for(Person p : personsList){
            logger.info("Person List::"+p);
        }
        return personsList;
    }

@Override
    public Person getPersonByName(String name)  {
        Session session = this.sessionFactory.getCurrentSession();
        List<Person> usersList = session.createQuery(
                "from Person ").list();
        if (usersList.size() == 0)
            return null;
        Person usrObj1 = usersList.get(0);
        return usrObj1;
    }
@Repository
public class UserDAOImpl implements UserDAO {

    private static final Logger logger = LoggerFactory
            .getLogger(UserDAOImpl.class);

    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sf) {
        this.sessionFactory = sf;
    }

    @Override
    public void addUser(User user) {
        Session session = this.sessionFactory.getCurrentSession();
        session.persist(user);
        logger.info("User saved successfully, User Details=" + user);
    }

    @Override
    public void updateUser(User user) {
    Session session = this.sessionFactory.getCurrentSession();
        session.update(user);
        logger.info("User updated successfully, User Details=" + user);
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<User> listUsers() {
        Session session = this.sessionFactory.getCurrentSession();
        List<User> usersList = session.createQuery("from User").list();
        for (User user : usersList) {
            logger.info("User List::" + user);
        }
        return usersList;
    }
@SuppressWarnings("unchecked")
    @Override
    public User getUserByName(String fullName)  {
        Session session = this.sessionFactory.getCurrentSession();
        List<User> usersList = session.createQuery(
                "from User ").list();
        if (usersList.size() == 0)
            return null;
        User usrObj1 = usersList.get(0);
        return usrObj1;
    }
User.java

@Entity
@Table(name = "user")
@XmlRootElement(name = "User")
public class User {

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name = "fullname")
    private String fullName;



    @Column(name = "password")
    private String password;

    @Column(name = "email")
    private String email;

    @Column(name = "phone")
    private Integer phone;

    @XmlElement(name = "Id")
    public int getId() {
        return id;
    }

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

    @XmlElement(name = "FullName")
    public String getFullName() {
        return fullName;
    }

    public void setFullName(String fullName) {
        this.fullName = fullName;
    }



    @XmlElement(name = "Password")
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @XmlElement(name = "EmailId")
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @XmlElement(name = "PhoneNo")
    public Integer getPhone() {
        return phone;
    }

    public void setPhone(Integer phone) {
        this.phone = phone;
    }
PersonServiceImpl.java

@Service
public class PersonServiceImpl implements PersonService {

    private PersonDAO personDAO;

    public void setPersonDAO(PersonDAO personDAO) {
        this.personDAO = personDAO;
    }

    @Override
    @Transactional
    public void addPerson(Person p) {
        this.personDAO.addPerson(p);
    }

    @Override
    @Transactional
    public void updatePerson(Person p) {
        this.personDAO.updatePerson(p);
    }

    @Override
    @Transactional
    public List<Person> listPersons() {
        return this.personDAO.listPersons();
    }

    @Override
    @Transactional
    public Person getPersonById(int id) {
        return this.personDAO.getPersonById(id);
    }

    @Override
    @Transactional
    public Person getPersonByName(String name) {
        return this.personDAO.getPersonByName(name);
    }

    @Override
    @Transactional
    public void removePerson(int id) {
        this.personDAO.removePerson(id);
    }
 @Service
    public class UserServiceImpl implements UserService {

        private UserDAO userDAO;

        public void setUserDAO(UserDAO userDAO) {
            this.userDAO = userDAO;
        }

        @Override
        @Transactional
        public void addUser(User user) {
            this.userDAO.addUser(user);
        }

        @Override
        @Transactional
        public void updateUser(User user) {
            this.userDAO.updateUser(user);
        }

        @Override
        @Transactional
        public List<User> listUsers() {
            return this.userDAO.listUsers();
        }

        @Override
        @Transactional
        public User getUserById(int id) {
            return this.userDAO.getUserById(id);
        }

        @Override
        @Transactional
        public void removeUser(int id) {
            this.userDAO.removeUser(id);
        }

        @Override
        @Transactional
        public User getUserByName(String fullName) {
            return this.userDAO.getUserByName(fullName);
        }

    }
@服务
公共类PersonServiceImpl实现PersonService{
私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人私人;
公共无效设置PersonDAO(PersonDAO PersonDAO){
this.personDAO=personDAO;
}
@凌驾
@交易的
公众人士(p人){
这个.personDAO.addPerson(p);
}
@凌驾
@交易的
公共作废更新人员(p人){
这个.personDAO.updatePerson(p);
}
@凌驾
@交易的
公众人士名单{
返回此.personDAO.listPersons();
}
@凌驾
@交易的
公众人物getPersonById(内部id){
返回此.personDAO.getPersonById(id);
}
@凌驾
@交易的
公众人物getPersonByName(字符串名称){
返回这个.personDAO.getPersonByName(name);
}
@凌驾
@交易的
公共无效删除人(内部id){
此.personDAO.removePerson(id);
}
UserServiceImpl.java

@Service
public class PersonServiceImpl implements PersonService {

    private PersonDAO personDAO;

    public void setPersonDAO(PersonDAO personDAO) {
        this.personDAO = personDAO;
    }

    @Override
    @Transactional
    public void addPerson(Person p) {
        this.personDAO.addPerson(p);
    }

    @Override
    @Transactional
    public void updatePerson(Person p) {
        this.personDAO.updatePerson(p);
    }

    @Override
    @Transactional
    public List<Person> listPersons() {
        return this.personDAO.listPersons();
    }

    @Override
    @Transactional
    public Person getPersonById(int id) {
        return this.personDAO.getPersonById(id);
    }

    @Override
    @Transactional
    public Person getPersonByName(String name) {
        return this.personDAO.getPersonByName(name);
    }

    @Override
    @Transactional
    public void removePerson(int id) {
        this.personDAO.removePerson(id);
    }
 @Service
    public class UserServiceImpl implements UserService {

        private UserDAO userDAO;

        public void setUserDAO(UserDAO userDAO) {
            this.userDAO = userDAO;
        }

        @Override
        @Transactional
        public void addUser(User user) {
            this.userDAO.addUser(user);
        }

        @Override
        @Transactional
        public void updateUser(User user) {
            this.userDAO.updateUser(user);
        }

        @Override
        @Transactional
        public List<User> listUsers() {
            return this.userDAO.listUsers();
        }

        @Override
        @Transactional
        public User getUserById(int id) {
            return this.userDAO.getUserById(id);
        }

        @Override
        @Transactional
        public void removeUser(int id) {
            this.userDAO.removeUser(id);
        }

        @Override
        @Transactional
        public User getUserByName(String fullName) {
            return this.userDAO.getUserByName(fullName);
        }

    }
@服务
公共类UserServiceImpl实现UserService{
私有UserDAO UserDAO;
公共void setUserDAO(UserDAO UserDAO){
this.userDAO=userDAO;
}
@凌驾
@交易的
public void addUser(用户){
this.userDAO.addUser(user);
}
@凌驾
@交易的
public void updateUser(用户){
this.userDAO.updateUser(用户);
}
@凌驾
@交易的
公共列表listUsers(){
返回这个.userDAO.listUsers();
}
@凌驾
@交易的
公共用户getUserById(int id){
返回这个.userDAO.getUserById(id);
}
@凌驾
@交易的
public void removeUser(int-id){
this.userDAO.removeUser(id);
}
@凌驾
@交易的
公共用户getUserByName(字符串全名){
返回这个.userDAO.getUserByName(全名);
}
}
person.jsp

<c:url var="addAction" value="/person/add" ></c:url>

<form:form action="${addAction}" commandName="person">
<table>
    <c:if test="${!empty person.name}">
    <tr>
        <td>
            <form:label path="id">
                <spring:message text="ID"/>
            </form:label>
        </td>
        <td>
            <form:input path="id" readonly="true" size="8"  disabled="true" />
            <form:hidden path="id" />
        </td> 
    </tr>
    </c:if>
    <tr>
        <td>
            <form:label path="name">
                <spring:message text="Name"/>
            </form:label>
        </td>
        <td>
            <form:input path="name" />
        </td> 
    </tr>
    <tr>
        <td>
            <form:label path="country">
                <spring:message text="Country"/>
            </form:label>
        </td>
        <td>
            <form:input path="country" />
        </td>
    </tr>
    <tr>
        <td colspan="2">


                <input type="submit"
                    value="<spring:message text="Add Person"/>" />


            <input type="submit"
                    value="<spring:message text="Register"/>" />

        </td>
    </tr>
</table>    
</form:form>

user.jsp

<c:url var="addAction" value="/user/add"></c:url>

            <form:form action="${addAction}" commandName="user">
                <table width="400px" height="150px">
                    <c:if test="${!empty user.email}">
                        <tr>
                            <td><form:label path="id">
                                    <spring:message text="ID" />
                                </form:label></td>
                            <td><form:input path="id" readonly="true" size="8"
                                    disabled="true" /> <form:hidden path="id" /></td>
                        </tr>
                    </c:if>
                    <c:if test="${!empty user.email}">



                </c:if>
                    <tr>
                        <td><form:label path="fullName">
                                <spring:message text="Full Name" />
                            </form:label></td>
                        <td><form:input path="fullName" /></td>
                    </tr>


                    <tr>
                        <td><form:label path="password">
                                <spring:message text="Password" />
                            </form:label></td>
                        <td><form:input type="password" path="password" /></td>
                    </tr>
                    <tr>
                        <td><form:label path="email">
                                <spring:message text="Email" />
                            </form:label></td>
                        <td><form:input path="email" /></td>
                    </tr>
                    <tr>
                        <td><form:label path="phone">
                                <spring:message text="Phone" />
                            </form:label></td>
                        <td><form:input path="phone" /></td>
                    </tr>


                    <tr>
                        <td colspan="2"><c:if test="${!empty user.email}">
                                <input type="submit"
                                    value="<spring:message text="Update Details"/>" />
                            </c:if> <c:if test="${empty user.email}">
                                <input type="submit" value="<spring:message text="Submit"/>" />
                            </c:if></td>
                    </tr>
                </table>
            </form:form>

这方面的任何建议都会对我有帮助 谢谢你

我希望这会有所帮助

400错误请求 由于明显的客户端错误(例如,格式错误的请求语法、太大的大小、无效的请求消息帧或欺骗性的请求路由),服务器无法或将不会处理该请求

我希望这有帮助

400错误请求 由于明显的客户端错误(例如,格式错误的请求语法、太大的大小、无效的请求消息帧或欺骗性的请求路由),服务器无法或将不会处理该请求


您尚未定义表单的http方法属性:

<form:form action="${addAction}" commandName="user">

您尚未定义表单的http方法属性:

<form:form action="${addAction}" commandName="user">

请添加method=“POST”您的表单并试用。在person.jsp中删除并试用please@GurkanYesilyurt我试过了,但仍然显示了sameadd方法=“POST”请删除您的表单并重试。请在person.jsp中删除并重试please@GurkanYesilyurt我试过了,但仍然显示了相同的Then!打开浏览器开发工具并检查调用的url是什么然后!打开浏览器开发工具并检查调用的url是什么