Describing Spring Controllers and ValidationsAgenda :The most common way to implement the handler in Spring Web MVC application is as a controller. Types of ControllersThe most commonly used built-in controller types provided by the Spring Web MVC framework are :
Controller (I)The Controller interface declares only one method, i.e., handleRequest(-,-).public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception AbstractCommandController (C)protected ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors)throws Exception Working with AbstractCommandController :login.html<body> <form action="/login.spring" > <br> // / is optional User Name : <input type="text" name="userName"> <br> Password: <input type="password" name="password"> <br> <input type="submit" value="Login"> </form> </body>LoginController.java package com.spring; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.validation.BindException; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractCommandController; public class LoginController extends AbstractCommandController { LoginModel loginModel; public void setLoginModel(LoginModel lm){ loginModel=lm; } protected ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception { String type = loginModel.getValidate((UserDetails)command); System.out.println("type : "+type); if(type==null) //return new ModelAndView("/login.html"); throw new MyException("User details are not valid"); else if(type.equals("admin")) return new ModelAndView("/pages/admin.jsp"); else return new ModelAndView("/pages/user.jsp"); } //handleRequest }LoginModel.java package com.spring; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; public class LoginModel { private JdbcTemplate jdbcTemplate; public LoginModel(JdbcTemplate jdbcTemplate) { this.jdbcTemplate=jdbcTemplate; } public String getValidate(UserDetails user) { String sql="select type from UserDetails where username=\'" +user.getUserName()+"\' and password=\'"+user.getPassword()+"\' "; try{ return jdbcTemplate.queryForObject(sql, String.class); }catch (EmptyResultDataAccessException e) { return null; } } //getValidate() }UserDetails.java package com.spring; public class UserDetails { private String userName; private String password; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }ds-servlet.xml <beans> <!-- configure DataSource --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <property name="url"> <value>jdbc:oracle:thin:@localhost:1521:xe</value> </property> <property name="username"> <value>lms</value> </property> <property name="password"> <value>scott</value> </property> </bean> <!-- configure JdbcTemplate --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <constructor-arg> <ref local="dataSource" /> </constructor-arg> </bean> <bean id="loginModel" class="com.spring.LoginModel"> <constructor-arg> <ref local="jdbcTemplate"/> </constructor-arg> </bean> <bean id="loginController" class="com.spring.LoginController"> <property name="loginModel"> <ref local="loginModel"/> </property> <!-- configure the command class name --> <property name="commandClass"> <value type="java.lang.Class">com.spring.UserDetails</value> </property> <!-- configure the command name, the name to use when binding the instantiated command class to the request --> <property name="commandName"> <value>UserDetails</value> </property> </bean> <bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/login.spring">loginController</prop> </props> </property> </bean> <bean id="handlerExceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="com.spring.MyException"> /myError.html </prop> </props> </property> </bean> </beans>web.xml <web-app> <servlet> <servlet-name>ds</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ds</servlet-name> <url-pattern>*.spring</url-pattern> </servlet-mapping> </web-app>admin.jsp Wel come to Admin page <br/> User Name : <%= request.getParameter("userName") %>user.jsp Wel come to User page <br/> User Name : <%= request.getParameter("userName") %>myError.html <body> A simple test error page <br> User details are not valid </body> AbstractCommandController can bind the request data to the command object properties. Understanding Validatorsstep 1 : write a validator classpublic boolean supports(Class c) public void validate(Object target, Errors errors) public boolean supports(Class c) { return c.equals(UserDetails.class); } step 2 : Associate the Validator to the Controller<bean id="loginController" class="com.spring.LoginController"> <property name="loginModel"> <ref local="loginModel"/> </property> <!-- configure the command class name --> <property name="commandClass"> <value type="java.lang.Class">com.spring.UserDetails</value> </property> <!-- configure the command name, the name to use when binding the instantiated command class to the request --> <property name="commandName"> <value>UserDetails</value> </property> <property name="validator"> <bean class="com.spring.UserValidator"/> </property> </bean> Working with Validatorslogin.html<form action="login.spring" > <br> User Name : <input type="text" name="userName"> <br> Password: <input type="password" name="password"> <br> <input type="submit" value="Login"> </form>UserValidator.java package com.spring; import org.springframework.validation.Errors; import org.springframework.validation.ValidationUtils; import org.springframework.validation.Validator; public class UserValidator implements Validator { public boolean supports(Class c) { return c.equals(UserDetails.class); } public void validate(Object target, Errors errors) { UserDetails user=(UserDetails)target; ValidationUtils.rejectIfEmptyOrWhitespace(errors, "userName", "field.required", "The userName field cannot be empty<br>"); ValidationUtils.rejectIfEmptyOrWhitespace(errors, "password", "field.required", "The password field cannot be empty<br>"); if(user.getUserName()!= null && !user.getPassword().equals("") && user.getPassword().length()<5){ errors.rejectValue("password", "field.minlength", new Object[]{Integer.valueOf(5)}, "The password must contain minimum 5 characters.<br>"); }//if } //validate } //classLoginController.java package com.spring; import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.validation.BindException; import org.springframework.validation.FieldError; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractCommandController; public class LoginController extends AbstractCommandController { LoginModel loginModel; public void setLoginModel(LoginModel lm){ loginModel=lm; } protected ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception { if(errors.hasErrors()){ System.out.println("Errors in validation"); PrintWriter out=response.getWriter(); out.println("errors in data submitted : <br>"); out.println("no of errors : "+errors.getErrorCount()+"<br>"); out.println("userName fields errors : <br>"); java.util.List<FieldError> errorList=errors.getFieldErrors("userName"); for(FieldError error:errorList) out.println(error.getDefaultMessage()); out.println("password fields errors : <br>"); errorList=errors.getFieldErrors("password"); for(FieldError error:errorList) out.println(error.getDefaultMessage()); return null; } String type = loginModel.getValidate((UserDetails)command); System.out.println("type : "+type); if(type==null) //return new ModelAndView("/login.html"); throw new MyException("User details are not valid .."); else if(type.equals("admin")) return new ModelAndView("/pages/admin.jsp"); else return new ModelAndView("/pages/user.jsp"); } //handleRequest }LoginModel.java package com.spring; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; public class LoginModel { private JdbcTemplate jdbcTemplate; public LoginModel(JdbcTemplate jdbcTemplate) { this.jdbcTemplate=jdbcTemplate; } public String getValidate(UserDetails user) { String sql="select type from UserDetails where username=\'" +user.getUserName()+"\' and password=\'"+user.getPassword()+"\' "; try{ return jdbcTemplate.queryForObject(sql, String.class); }catch (EmptyResultDataAccessException e) { return null; } } //getValidate() }UserDetails.java package com.spring; public class UserDetails { private String userName; private String password; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }MyException.java package com.spring; public class MyException extends RuntimeException { public MyException(String s) { super(s); } }admin.jsp Wel come to Admin page <br/> User Name : <%= request.getParameter("userName") %>user.jsp Wel come to User page <br/> User Name : <%= request.getParameter("userName") %>myError.html A simple test error page <br> User details are not validds-servlet.xml <beans> <!-- configure DataSource --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <property name="url"> <value>jdbc:oracle:thin:@localhost:1521:xe</value> </property> <property name="username"> <value>lms</value> </property> <property name="password"> <value>scott</value> </property> </bean> <!-- configure JdbcTemplate --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <constructor-arg> <ref local="dataSource" /> </constructor-arg> </bean> <bean id="loginModel" class="com.spring.LoginModel"> <constructor-arg> <ref local="jdbcTemplate"/> </constructor-arg> </bean> <bean id="loginController" class="com.spring.LoginController"> <property name="loginModel"> <ref local="loginModel"/> </property> <!-- configure the command class name --> <property name="commandClass"> <value type="java.lang.Class">com.spring.UserDetails</value> </property> <!-- configure the command name, the name to use when binding the instantiated command class to the request --> <property name="commandName"> <value>UserDetails</value> </property> <property name="validator"> <bean class="com.spring.UserValidator"/> </property> </bean> <bean id="handlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/login.spring">loginController</prop> </props> </property> </bean> <bean id="handlerExceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="com.spring.MyException"> /myError.html </prop> </props> </property> </bean> </beans>web.xml <web-app> <servlet> <servlet-name>ds</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ds</servlet-name> <url-pattern>*.spring</url-pattern> </servlet-mapping> </web-app>result : errors in data submitted : no of errors : 2 userName fields errors : The userName field cannot be empty password fields errors : The password field cannot be empty SimpleFormControllerhome.jsp<html> <body> <a href="addEmployee.spring">Add Employee</a> </body> </html>addEmployee.jsp <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <html> <body> <form:errors path="EmpDetails.name"/> <br> <br> <form:errors path="EmpDetails.eno"/> <form action="addEmployee.spring" method="post"> <pre> Employee Number : <input type="text" name="eno"/> Employee Name : <input type="text" name="name"/> Employee Salary : <input type="text" name="salary"/> Employee Address : <input type="text" name="address"/> Employee JoinDate : <input type="text" name="doj"/> <input type="submit" value="Add Employee"/> </pre> </form> </body> </html>addEmployeeSuccess.jsp <html> <body> Employee details added Successfully </body> </html>AddEmployeeController.java package com.form; import org.springframework.web.servlet.mvc.SimpleFormController; public class AddEmployeeController extends SimpleFormController { EmployeeServices employeeServices; public void setEmployeeServices(EmployeeServices employeeServices){ this.employeeServices=employeeServices; System.out.println("setEmployees from controller"); } public void doSubmitAction(Object command) throws Exception{ employeeServices.create((EmpDetails)command); System.out.println("doSubmitAction from controller"); } }EmpValidator.java package com.form; import org.springframework.validation.Errors; import org.springframework.validation.ValidationUtils; import org.springframework.validation.Validator; public class EmpValidator implements Validator { public boolean supports(Class c) { boolean flag=c.equals(EmpDetails.class); return flag; } public void validate(Object target, Errors errors) { EmpDetails empDetails=(EmpDetails)target; ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name", "fiels.required","The name field cannot be empty"); if(empDetails.getEno()<10){ errors.rejectValue("eno", "field.minvalue", new Object[]{Integer.valueOf(9)},"The deptno should be greater than 9"); } else if(empDetails.getEno() > 99){ errors.rejectValue("eno", "field.maxvalue", new Object[]{Integer.valueOf(99)},"The deptno should be less than 99"); } System.out.println("Emp Validator"); }//validate } //classEmployeeServices.java package com.form; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.SQLException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.PreparedStatementSetter; public class EmployeeServices { private JdbcTemplate jdbcTemplate; public EmployeeServices(JdbcTemplate jdbcTemplate){ this.jdbcTemplate=jdbcTemplate; } public void create(final EmpDetails user) { jdbcTemplate.update("insert into emp values(?,?,?,?,?)", new PreparedStatementSetter(){ public void setValues(PreparedStatement ps) throws SQLException { ps.setInt(1, user.getEno()); ps.setString(2, user.getName()); ps.setString(3, user.getAddress()); ps.setDouble(4, user.getSalary()); ps.setDate(5, new Date(System.currentTimeMillis())); System.out.println("Emp services update"); } } //PreparedStatementSetter ); //update() }//create }EmpDetails.java package com.form; import java.sql.Date; public class EmpDetails { private int eno; private String name,address; private double salary; private Date date; public int getEno() { return eno; } public void setEno(int eno) { this.eno = eno; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public double getSalary() { return salary; } public void setSalary(double salary) { this.salary = salary; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } }ds-servlet.xml <beans> <!-- configure DataSource --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <property name="url"> <value>jdbc:oracle:thin:@localhost:1521:xe</value> </property> <property name="username"> <value>lms</value> </property> <property name="password"> <value>scott</value> </property> </bean> <!-- configure JdbcTemplate --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <constructor-arg> <ref local="dataSource" /> </constructor-arg> </bean> <bean id="empServices" class="com.form.EmployeeServices"> <constructor-arg> <ref local="jdbcTemplate"/> </constructor-arg> </bean> <bean name="/addEmployee.spring" class="com.form.AddEmployeeController"> <property name="employeeServices"> <ref local="empServices"/> </property> <property name="commandClass"> <value type="java.lang.Class">com.form.EmpDetails</value> </property> <property name="commandName"> <value>EmpDetails</value> </property> <property name="validator"> <bean class="com.form.EmpValidator"/> </property> <property name="sessionForm" value="false"/> <property name="formView"> <value>/addEmployee.jsp</value> </property> <property name="successView"> <value>/addEmployeeSuccess.jsp</value> </property> </bean> </beans>web.xml <web-app> <servlet> <servlet-name>ds</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ds</servlet-name> <url-pattern>*.spring</url-pattern> </servlet-mapping> </web-app>http://localhost:8001/spring/home.jsp Result : setEmployees from controller Emp Validator Emp services update doSubmitAction from controller WizardFormControllerregistration1.html<html> <body> <form name="form1" action="registration.spring" method="post"> <table border="0" align="left"> <tr> <td colspan="2"> <div align="center"><strong>Registration Step 1 :</strong> </div> </td> </tr> <tr><td> </td><td> </td></tr> <tr> <td>User Name :</td> <td><input type="text" name="uname" id="uname"></td> </tr> <tr> <td>Password :</td> <td><input type="password" name="pass" id="pass"></td> </tr> <tr> <td>Re-Password :</td> <td><input type="text" name="repass" id="repass"></td> </tr> <tr> <td>Email :</td> <td><input type="text" name="email" id="email"></td> </tr> <tr><td> </td><td> </td></tr> <tr> <td colspan="2"> <div align="center"> <input type="submit" name="Submit" value="Next >"> </div></td> </tr> </table> <input type="hidden" name="_page" value="1"> </form> </body> </html>registration2.html <html> <body> <form name="form1" action="registration.spring" method="post"> <table border="0" align="left" width="45%"> <tr> <td colspan="2"> <div align="center"><strong>Registration Step 2 :</strong> </div> </td> </tr> <tr><td> </td><td> </td></tr> <tr> <td>First Name :</td> <td><input type="text" name="fname" id="fname"></td> </tr> <tr> <td>LastName :</td> <td><input type="text" name="lname" id="lname"></td> </tr> <tr> <td>Middle Name :</td> <td><input type="text" name="mname" id="mname"></td> </tr> <tr> <td>DOB :</td> <td><input type="text" name="dob" id="dob"></td> </tr> <tr> <td>Mobile :</td> <td><input type="text" name="mobile" id="mobile"></td> </tr> <tr> <td>Phone :</td> <td><input type="text" name="phone" id="phone"></td> </tr> <tr><td> </td><td> </td></tr> <tr> <td colspan="2"> <div align="center"> <input type="submit" name="Submit" value="Next >"> </div></td> </tr> </table> <input type="hidden" name="_page" value="2"> </form> </body> </html>registrationFinal.html <html> <body> <form name="form1" action="registration.spring" method="post"> <table border="0" align="left" width="45%"> <tr> <td colspan="3" align="center"> <div><strong>Registration Final Step :</strong> </div> </td> </tr> <tr><td> </td><td> </td></tr> <tr> <td colspan="2"><strong>Address : </strong></td> </tr> <tr> <td> Address1 :</td> <td><input type="text" name="addr" id="addr"></td> </tr> <tr> <td> Street :</td> <td><input type="text" name="street" id="street"></td> </tr> <tr> <td> City :</td> <td><input type="text" name="city" id="city"></td> </tr> <tr> <td> State :</td> <td><input type="text" name="mobile" id="mobile"></td> </tr> <tr> <td> Country :</td> <td><input type="text" name="phone" id="phone"></td> </tr> <tr><td> </td><td> </td></tr> <tr> <td colspan="2"> <div align="center"> <input type="submit" name="Submit" value="Finish"> </div></td> </tr> </table> <input type="hidden" name="_finish" value="Finish"> </form> </body> </html>RegistrationContoller.java package com.wizard; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.validation.BindException; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractWizardFormController; @SuppressWarnings("deprecation") public class RegistrationController extends AbstractWizardFormController { private UserDAO userDAO; public RegistrationController(UserDAO userDAO){ this.userDAO=userDAO; } @Override protected ModelAndView processFinish(HttpServletRequest request, HttpServletResponse response, Object command, BindException exceptions) throws Exception { UserDetails userDetails=(UserDetails)command; boolean flag=userDAO.create(userDetails); if(flag) return new ModelAndView("registrationSuccess.jsp"); return new ModelAndView("registrationFail.jsp"); }//processFinish }UserDetails.java package com.wizard; public class UserDetails { private String uname,pass,repass,email; private String fname,lname,mname,dob,mobile,phone; private String addr,street,city,state,country; public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } public String getRepass() { return repass; } public void setRepass(String repass) { this.repass = repass; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } 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 getMiddle() { return mname; } public void setMiddle(String mname) { this.mname = mname; } public String getDob() { return dob; } public void setDob(String dob) { this.dob = dob; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getState() { return state; } public void setState(String state) { this.state = state; } public String getCountry() { return country; } public void setCountry(String country) { this.country = country; } }UserDAO.java package com.wizard; public interface UserDAO { boolean create(UserDetails userDetails); }UserDAOImpl.java package com.wizard; import java.sql.PreparedStatement; import java.sql.SQLException; import java.sql.Statement; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.PreparedStatementSetter; public class UserDAOImpl implements UserDAO { private JdbcTemplate jdbcTemplate; public UserDAOImpl(JdbcTemplate jdbcTemplate){ this.jdbcTemplate=jdbcTemplate; } public boolean create(final UserDetails userDetails) { System.out.println("create"); int count= jdbcTemplate.update( "insert into users values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)", new PreparedStatementSetter(){ public void setValues(PreparedStatement ps) throws SQLException { ps.setString(1,userDetails.getUname()); ps.setString(2,userDetails.getPass()); ps.setString(3,userDetails.getEmail()); ps.setString(4,userDetails.getFname()); ps.setString(5,userDetails.getLname()); ps.setString(6,userDetails.getMiddle()); ps.setString(7,userDetails.getDob()); ps.setString(8,userDetails.getMobile()); ps.setString(9,userDetails.getPhone()); ps.setString(10,userDetails.getAddr()); ps.setString(11,userDetails.getStreet()); ps.setString(12,userDetails.getCity()); ps.setString(13,userDetails.getState()); ps.setString(14,userDetails.getCountry()); }//setValues() } //PreparedStatementSetter() ); //update return (count==1 || count==Statement.SUCCESS_NO_INFO ); } //create }RegistrationFail.html <html> <body> <b>Registration Process Failed</b> </body> </html>RegistrationSuccess.html <html> <body> <b>Registration Process Success </b> </body> </html>applicationControllers.xml <beans> <bean name="/registration.spring" class="com.wizard.RegistrationController"> <constructor-arg> <ref bean="userDAO"/> </constructor-arg> <property name="commandClass"> <value type="java.lang.Class">com.wizard.UserDetails</value> </property> <property name="commandName"> <value>UserDetails</value> </property> <property name="sessionForm" value="true"/> <property name="pages"> <list> <value>/registration1.html</value> <value>/registration2.html</value> <value>/registrationFinal.html</value> </list> </property> <property name="allowDirtyForward"> <value>false</value> </property> </bean> </beans>applicationDAOs.xml <beans> <!-- configure DataSource --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" /> <property name="username" value="lms" /> <property name="password" value="scott" /> </bean> <!-- configure JdbcTemplate --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <constructor-arg> <ref local="dataSource" /> </constructor-arg> </bean> <bean id="userDAO" class="com.wizard.UserDAOImpl"> <constructor-arg> <ref local="jdbcTemplate"/> </constructor-arg> </bean> </beans>web.xml <web-app> <servlet> <servlet-name>ds</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/applicationControllers.xml /WEB-INF/applicationDAOs.xml </param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ds</servlet-name> <url-pattern>*.spring</url-pattern> </servlet-mapping> </web-app>create users table in DataBase : create table users(uname varchar2(15), pass varchar2(15), email varchar2(15), fname varchar2(15), lname varchar2(15),mname varchar2(15), dob varchar2(15), moble varchar2(15), phone varchar2(15),addr varchar2(15), street varchar2(15),city varchar2(15), state varchar2(15),country varchar2(15));result: http://localhost:8001/spring/registration.spring MultiActionControllerArithmeticController.javapackage com.multi; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController; public class ArithmeticController extends MultiActionController { public ModelAndView add(HttpServletRequest request, HttpServletResponse response) throws Exception{ int op1=Integer.parseInt(request.getParameter("operand1")); int op2=Integer.parseInt(request.getParameter("operand2")); int result=op1+op2; return new ModelAndView("/home.jsp","result",result+""); } public ModelAndView subtract(HttpServletRequest request, HttpServletResponse response) throws Exception{ int op1=Integer.parseInt(request.getParameter("operand1")); int op2=Integer.parseInt(request.getParameter("operand2")); int result=op1-op2; return new ModelAndView("/home.jsp","result",result+""); } }home.jsp <html> <body> <% if(request.getAttribute("result")!=null) { %> Result of previous request (<%= request.getParameter("submit") %>) : <b> <%= request.getParameter("operand1")%>, <%= request.getParameter("operand2")%> is : <%= request.getAttribute("result")%> </b> <%} %> <form method="post" action="myPath.spring"> Operand 1 : <input type="text" name="operand1"/> <br> Operand 2 : <input type="text" name="operand2"/> <br> <input type="submit" name="submit" value="add"/> <input type="submit" name="submit" value="subtract"/> </form> </body> </html> <beans> <bean id="myMethodResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> <property name="paramName" value="submit"/> </bean> <bean name="/myPath.spring" class="com.multi.ArithmeticController"> <property name="methodNameResolver" ref="myMethodResolver"/> </bean> </beans>web.xml <web-app> <servlet> <servlet-name>ds</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ds</servlet-name> <url-pattern>*.spring</url-pattern> </servlet-mapping> </web-app> |