[英]New to Spring MVC I don't understand the error on my login.jsp file error
我在這里發現了類似的錯誤,但如果有人可以解釋的話。 我很難看到事情是如何被調用的,所以我不確定它是語法錯誤還是我設置不正確。 這是我的第一個pring mvc prog,所以我對一切都很陌生。 我不確定如何調用 HomeController.java 或 LoginControler.java。 另外,當我在 HomeController 中設置“new ModelAndView("home");”時。 我沒有收到錯誤。 將添加下面的代碼。
//servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-
app_4_0.xsd"
id="WebApp_ID" version="4.0">
<display-name>UserRegistrationMVC</display-name>
<servlet>
<servlet-name>registration</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>registration</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
registration-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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context-4.3.xsd">
<context:component-scan base-package="com.profile"></context:component-scan>
<context:annotation-config></context:annotation-config>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/views/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
//login.jsp
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form:form id="loginForm" modelAttribute="loginForm" action="loginProcess" method="POST">
<!-- <p>${message} </p>-->
<table>
<tr>
<td><form:label path="username"> </form:label>Username </td>
<td><form:input path="username" name="username" id="username"></form:input> </td>
</tr>
<tr>
<td> <form:label path=""></form:label>password </td>
<td> <form:input path="password" name="password" id="password"></form:input> </td>
</tr>
<tr>
<td></td>
<td><form:button name="login" id="login" > login</form:button></td>
</tr>
</table>
</form:form>
</body>
</html>
//HomeController.java
package com.profile.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HomeController {
@RequestMapping(value ="/", method = RequestMethod.GET)
public ModelAndView getLoginForm() {
ModelAndView mav = new ModelAndView("loginform");
return mav;
}
}
//loginController.java
package com.profile.controller;
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;
import com.profile.model.Login;
@Controller
public class LoginController {
@RequestMapping(value="/login", method = RequestMethod.GET)
public ModelAndView getLoginForm() {
ModelAndView mav = new ModelAndView("loginForm");
mav.addObject("loginForm", new Login());
return mav;
}
@RequestMapping(value="loginProcess", method=RequestMethod.POST)
public ModelAndView loginProcess(@ModelAttribute("loginForm") Login login) {
ModelAndView mav = null;
if(login.getUserName().equals("max") && login.getPassword().equals("123456")) {
mav = new ModelAndView("welcome");
mav.addObject("name",login.getUserName());
}
else {
mav = new ModelAndView("loginForm");
mav.addObject("message", "Username or password is wrong");
}
return mav;
}
}
Error
HTTP Status 500 – Internal Server Error
Type Exception Report
Message An exception occurred processing [/views/jsp/loginform.jsp] at line [16]
Description The server encountered an unexpected condition that prevented it from fulfilling the
request.
Exception
org.apache.jasper.JasperException: An exception occurred processing [/views/jsp/loginform.jsp] at
line [16]
13: <!-- <p>${message} </p>-->
14: <table>
15: <tr>
16: <td><form:label path="username"> </form:label>Username </td>
17: <td><form:input path="username" name="username" id="username"></form:input> </td>
18: </tr>
19:
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:625)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:509)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel
(InternalResourceView.java:171)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:317)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1373)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1118)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1057)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Root Cause
java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name
'loginform' available as request attribute
org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:153)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.getBindStatus
(AbstractDataBoundFormElementTag.java:178)
org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag.
getPropertyPath(AbstractDataBoundFormElementTag.java:199)
org.springframework.web.servlet.tags.form.LabelTag.autogenerateFor(LabelTag.java:271)
org.springframework.web.servlet.tags.form.LabelTag.resolveFor(LabelTag.java:261)
org.springframework.web.servlet.tags.form.LabelTag.writeTagContent(LabelTag.java:230)
org.springframework.web.servlet.tags.form.AbstractFormTag.doStartTagInternal
(AbstractFormTag.java:87)
org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag
(RequestContextAwareTag.java:83)
org.apache.jsp.views.jsp.loginform_jsp._jspx_meth_form_005flabel_005f0(loginform_jsp.java:273)
org.apache.jsp.views.jsp.loginform_jsp._jspx_meth_form_005fform_005f0(loginform_jsp.java:202)
org.apache.jsp.views.jsp.loginform_jsp._jspService(loginform_jsp.java:148)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel
(InternalResourceView.j
ava:171)
org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:317)
org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1373)
org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1118)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1057)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Note The full stack trace of the root cause is available in the server logs.
Apache Tomcat/9.0.24
您已將 model 添加到 LoginController [GET] 中的屬性,但是,在 HomeController“/”句柄中缺少設置,像這樣添加
modelAndView.addObject("loginForm", new Login());
應該解決這個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.