<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
|
SimpleUrlHandlerMapping:
The "/test/logonPage.do" call the logonController.
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/test/logonPage.do"><ref bean="logonController"/></entry>
</map>
</property>
</bean>
Controllers :
<bean id="logonController" class="com.LogonController">
<property name="sessionForm"><value>true</value></property>
<property name="commandName"><value>userBean</value></property>
<property name="commandClass"><value>com.UserBean</value></property>
<property name="validator"><ref bean="logonFormValidator"/></property>
<property name="formView"><value>logonForm</value></property>
<property name="successView"><value>success</value></property>
</bean>
In the above configuation
<property name="sessionForm"><value>true</value></property>
Keep command object throughout session
validator:
<bean id="logonFormValidator" class="com.LogonFormValidator"/>
Step 3. Controller classe
"/test/logonPage.do" call the
formBackingObject(HttpServletRequest request) of the controller.
formBackingObject(HttpServletRequest request) method set the FormBean with the default value. This method is used to display the form.
And onSubmit() method will be called after click on submit button of the form.
LogonController.java
package com;
import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.SimpleFormController;
public class LogonController extends SimpleFormController{ public Object formBackingObject(HttpServletRequest request) throws ServletException { UserBean backingObject = new UserBean(); System.out.println("formBackingObject"); /* The backing object should be set up here, with data for the initial values * of the form’s fields. This could either be hard-coded, or retrieved from a * database. */ return backingObject; } public ModelAndView onSubmit(Object command) throws ServletException { UserBean user = (UserBean)command; System.out.println("username :"+user.getUserName()); System.out.println("password :"+user.getPassword()); //Now you can validate to database return new ModelAndView("succes"); }
}
|
Step 4. Validator classe
Validator class need to implement Validator interface .It only has two methods. The supports() method is used to check whether the validator supports a given class, and the validate() method is used to actually validate an object of the supported class.
LogonFormValidator.java
package com;
import org.springframework.validation.Errors; import org.springframework.validation.Validator;
public class LogonFormValidator implements Validator{
public boolean supports(Class clazz) { return clazz.equals(UserBean.class); } public void validate(Object obj, Errors errors) { UserBean user = (UserBean) obj; if (user == null) { errors.rejectValue("username", "error.login.not-specified", null,"Value required."); } else { if (user.getUserName()== null || user.getUserName().trim().length() <= 0) { System.out.println("user name null value"); errors.rejectValue("userName", "error.login.invalid-user", null, "Username is Required."); } else { if (user.getPassword()== null || user.getPassword().trim().length() <= 0) { errors.rejectValue("password", "error.login.invalid-pass", null, "Password is Required."); } }
} } }
|
Step 5. Bean classe
UserBean.java
package com;
public class UserBean { String userName; String password;
/** * @return Returns the password. */ public String getPassword() { return password; } /** * @param password The password to set. */ public void setPassword(String password) { this.password = password; } /** * @return Returns the userName. */ public String getUserName() { return userName; } /** * @param userName The userName to set. */ public void setUserName(String userName) { this.userName = userName; } }
|
Step 6. JSP code logonForm.jsp and success.jsp
In the JSP page you have to bind <spring:bind path="userBean.userName">
where userBean = commandName in the test-servlet.xml
userName = field name in the com.UserBean class.
logonForm.jsp
<%@ taglib prefix="core" uri="http://java.sun.com/jstl/core" %> <%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %> <%@ taglib prefix="str" uri="http://jakarta.apache.org/taglibs/string-1.1" %> <%@ taglib prefix="spring" uri="/spring" %>
<html> <head><title>techfaq360 Spring Validation Example</title></head> <body>
<center>
<h1>techfaq360 Spring Validation Example</h1> <br/> <form method="post" action="/springvalidation/test/logonPage.do"> <table width="25%" border="1"> <tr> <td align="center" bgcolor="lightblue">Log on</td> </tr> <tr> <td> <table border="0" width="100%"> <tr> <td width="33%" align="right">Username: </td> <td width="66%" align="left"> <spring:bind path="userBean.userName"> <input type="text" name="userName" value="<core:out value="${status.value}"/>"/> </spring:bind> </td> </tr> <tr> <td colspan="2" align="center"> <spring:hasBindErrors name="userBean"> <font color="red"><core:out value="${status.errorMessage}"/></font> </spring:hasBindErrors> </td> </tr> <tr> <td width="33%" align="right">Password: </td> <td width="66%" align="left"> <spring:bind path="userBean.password"> <input type="password" name="password" /> </spring:bind> </td> </tr> <tr> <td colspan="2" align="center"> <spring:hasBindErrors name="userBean"> <font color="red"><core:out value="${status.errorMessage}"/></font> </spring:hasBindErrors> </td> </tr> <tr> <td align="center" colspan="2"> <input type="submit" alignment="center" value="Submit"> </td> </tr> </table> </td> </tr> </table> </form>
</center>
</body> </html>
|
succes.jsp