Tuesday, December 7, 2010

Spring MVC Architechture









Spring FORM Tag Library

Spring MVC provides a JSP tag library (Spring Form) for making it easier to bind form elements to Model data. Spring Framework also provides you with some tags for evaluating errors, setting themes and outputting internationalized messages.



Syntax to use Spring Form tag library

	<%@taglib  uri="http://www.springframework.org/tags/form" prefix="form">

Form tags used in this example

-Renders an HTML 'form' tag and exposes a binding path to inner tags for binding.

-Renders an HTML 'input' tag with type 'text' using the bound value.

-Renders field errors in an HTML 'span' tag.

-Renders an HTML 'input' tag with type 'password' using the bound value.

-Renders an HTML 'input' tag with type 'radio'.

-Renders an HTML 'select' element. Supports databinding to the selected option.

-Renders a single HTML 'option'. Sets 'selected' as appropriate based on bound value.

-Renders an HTML 'textarea'.

-Renders an HTML 'input' tag with type 'checkbox'.

Simple Registration Form Example

1.Modify the web.xml to configure the Dispatcher Servlet.

web.xml













































false



registration">









index



success























3.Create a Jsp file for taking input from the user index.jsp which contains all the form fields with Spring Form tags.

index.jsp



<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>











Welcome to Spring Web MVC project







Spring Form tags Example







User Name:





Password:





First Name:



Last Name:



Gender: Male

Female



Country :

India

USA

Australia





Address:



Select any :

Check Box1



Check Box2





















4.Create another Jsp file success.jsp which is a View for Spring to display the output. In this file we use Expression Language to display the details.

success.jsp



<%@page contentType="text/html" pageEncoding="UTF-8"%>

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

<%@page import="java.util.Enumeration"%>











Spring Form Tags Example





Spring Form tags examples





User Name: ${uname}



First Name: ${fname}



Last Name: ${lname}



Gender: ${gender}



Country: ${country}



Address: ${addr}



Selected Check box: ${cb}











5.Create a Java class file Registration.java which contains the business logic for registration application. Here this file contains 8 private variables with their respective getter and setter methods to store the details for registration.

Registration.java



public class Registration {



private String username;

private String password;

private String fname;

private String lname;

private String gender;

private String country;

private String addr;

private String cb;



public String getAddr() {

return addr;

}



public void setAddr(String addr) {

this.addr = addr;

}



public String getCb() {

return cb;

}



public void setCb(String cb) {

this.cb = cb;

}



public String getCountry() {

return country;

}



public void setCountry(String country) {

this.country = country;

}



public String getGender() {

return gender;

}



public void setGender(String gender) {

this.gender = gender;

}



public Registration() {

}



public String getFname() {

return fname;

}



public void setFname(String fname) {

this.fname = fname;

}



public String getLname() {

return lname;

}



public void setLname(String lname) {

this.lname = lname;

}



public String getPassword() {

return password;

}



public void setPassword(String password) {

this.password = password;

}



public String getUsername() {

return username;

}



public void setUsername(String username) {

this.username = username;

}



}





6.Create a RegistrationFormController.java file which extends SimpleFormController to control the user request and return respective ModelAndView object.

RegistrationFormController.java





import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.SimpleFormController;



public class RegistrationFormController extends SimpleFormController {



@Override

protected ModelAndView onSubmit(Object command) throws Exception {



Registration reg=(Registration)command;



String uname=reg.getUsername();

String fname=reg.getFname();

String lname=reg.getLname();



String gender=reg.getGender();

String country=reg.getCountry();

String cb=reg.getCb();

String addr=reg.getAddr();



ModelAndView mv = new ModelAndView(getSuccessView());



mv.addObject("uname",uname);

mv.addObject("fname",fname);

mv.addObject("lname",lname);

mv.addObject("gender",gender);

mv.addObject("country",country);

mv.addObject("cb",cb);

mv.addObject("addr",addr);



return mv;

}



}



7.Create a registrationValidator.java file to validate the form fields like username and password should not be empty.DispatcherServlet is responsible to give property to add Validator to the user request and perform validation.

registrationValidator.java



import org.springframework.validation.Errors;

import org.springframework.validation.Validator;



public class registrationValidator implements Validator

{



public boolean supports(Class cl) {

return Registration.class.isAssignableFrom(cl);



}



public void validate(Object ob, Errors errors) {

Registration reg=(Registration)ob;

if (reg.getUsername() == null || reg.getUsername().length() == 0) {

errors.rejectValue("username", "error.empty.username");

}



else if (reg.getPassword() == null || reg.getPassword().length() == 0) {

errors.rejectValue("password", "error.empty.password");

}



}



}



8.Create or Modify messages.properties file which contains the messages for their respective keys.In this file we write messages for two keys empty username and empty password.

messages.properties



error.empty.username=Please Enter User name

error.empty.password=Please Enter Password

9.Building and running the application