Wednesday, September 14, 2011

Spring MVC MultiActionController - simple login application

Hello All,

Here i am posting simple Spring MVC example with IOC(setter , Constructor Injection).

Follow the steps to execute the program in your eclipse.

Step1 : Open Eclipse - Create new Dynamic Web Project

Step2 : After creating Project, open web.xml which is there inside created project.

edit Web.xml and add the below code.

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>spring-features</display-name>

<servlet>
<servlet-name>springweb</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>springweb</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>

</web-app>


Step 3: As per above web.xml code- the servlet name as springweb so As per spring mvc we have to create xml file called springweb-servlet.xml under WEB-INF






Step 4: Inside springweb-servlet.xml , we have to put configuration details for the controller's, jsp pages., IOC information. as mentioned below.







<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd;





<!-- no 'id' required, HandlerMapping beans are automatically detected by the DispatcherServlet -->





<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">



<property name="mappings">



<props>



<prop key="login.htm">loginController</prop>



<prop key="success.htm">loginController</prop>



</props>



</property>



</bean>




<bean id="loginController" class="com.siva.controller.LoginController">



<property name="name" value="siva"/>



<property name="age" value="27"/>



<constructor-arg type="int" value="27"/>



<constructor-arg type="java.lang.String" value="raju"/>



</bean>



<bean id="jspViewResolver" 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>



</beans>




Step 5: Create LoginForm.java inside src folder- under any package





package com.siva.form;
import java.io.Serializable;
public class LoginForm implements Serializable {




private static final long serialVersionUID = 1L;
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;
}
}







Step 6: Create LoginController which extends MultiActionController,





package com.siva.controller;




import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
import com.siva.form.LoginForm;




public class LoginController extends MultiActionController {




public LoginForm loginForm;
private String name;
private String age;




public LoginController(){
}




//This is constructor type setting in IOC - Check on springweb-servlet.xml for further reference.
//If you are still confusing the Study IOC basics.




public LoginController (String name1 , int age1)
{
System.out.println("Name------" + name1);
System.out.println("Age------" + age1);
}




/**
* This method has been called when ever the user enter login.htm under project.
* In this GetName, getAge methods are one way of IOC through set methods. We set the values
* in springweb-servlet.xml as a property and value. So when ever we called respective get methods
* we will get the results from the springweb-servlet.xml.
*/




public ModelAndView login(HttpServletRequest request, HttpServletResponse response, LoginForm form) {




ModelAndView mav = new ModelAndView();
System.out.println("Name for the set IOC " + getName());
System.out.println("Age for the set IOC " + getAge());
mav.addObject("loginForm",form);
mav.addObject("login");
return mav;
}




/**
* This method also will after enter the username and password in login page.
* It will check whether user name is 'siva' and password is 'raju'. if it's true then
* it will redirect to the success page. otherwise it will remain in the same page
*/




public ModelAndView success(HttpServletRequest request, HttpServletResponse response, LoginForm form){
ModelAndView mav = new ModelAndView();
//User Enter name and password
System.out.println("UserName----" + form.getUserName());
System.out.println("Password-----" + form.getPassword());




// Injected name and age through IOC
System.out.println("Name for the set IOC " + getName());
System.out.println("Age for the set IOC " + getAge());
mav.addObject("loginForm",form);
if(form.getUserName() != null && form.getUserName().equalsIgnoreCase("siva") &&
form.getPassword() != null && form.getPassword().equalsIgnoreCase("raju")) {
mav.setViewName("success");
}
else{
mav.setViewName("login");
}
return mav;
}
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAge() {
return age;
}

public void setAge(String age) {
this.age = age;
}
}







Step 7 : Create login.jsp, success.jsp . Place these 2 jsp pages under WEB-INF/jsp/




login.jsp




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



<form:form commandName="loginForm" id="loginForm"



action="success.htm" method="POST" >



Username <form:input path="userName"/> </br>



Password <form:input path="password"/></br> <



input type="submit" value="Login"/>



</form:form>



</body>



</html>







success.jsp




success







Step 8: Add required jar's

commons-beanutils-1.7.0.jar
commons-digester-1.8.jar
commons-lang-2.4.jar

commons-logging-1.1.1.jar

commons-pool-1.3.jar

commons-validator-1.3.1.jar

j2ee.jar

jstl-1.1.0.jar

log4j-1.2.15.jar

spring-2.5.6.jar

spring-beans.jar

spring-context.jar

spring-modules-validation.jar

spring-security-core-2.0.4.jar

spring-web.jar

spring-webmvc.jar

standard.jar


all the above jar's can be used to run the application.

Step 9: Now right click on the project- Run As - Run on Server-

select the appropriate server, and run the application.

Step 10: These are the steps to run simple MVC MultiActionController example.



Get the source code from this link
DOWNLOAD SOURCE CODE

4 comments:

  1. i am new in spring, i want to run your tutorial
    Q1, .... /login.html
    how to servlet mapping it. where are it is bean.
    Q2. how to use login & success methods of LoginController Class in servlet

    amjadict07@gmail.com

    thanks for your share

    ReplyDelete
  2. I am new to spring mvc 2.5. I have two forms in one jsp. how to configure Controller in bean configuration file using xml configuration using spring 2.5 mvc

    ReplyDelete
  3. I am a bit confused about the mapping of a click on the button and its corresponding method call. I mean where have you defined that when one enters login.htm under project login method is called and when one successfully logins, success method of LoginController is called? Had there been more methods how those will be mapped?

    ReplyDelete

  4. What's up to every one, it's in fact a nice for me to pay a quick visit this website, it contains helpful Information. paypal login my account

    ReplyDelete

Contact Form

Name

Email *

Message *