Spring Hibernate Integration Login Example using MySQL database and Tomcat Web Server.
A short description of how Spring MVC works (source : http://www.javacodegeeks.com)
When a request is sent to the Spring
MVC Framework the following sequence of events happen.
- The “DispatcherServlet” first receives the request
- The “DispatcherServlet” consults the “HandlerMapping” and invokes the "Controller" associated with the request
- The "Controller" process the request by calling the appropriate service methods and returns a “ModeAndView” object to the “DispatcherServlet”. The “ModeAndView” object contains the model data and the view name
- The “DispatcherServlet” sends the view name to a “ViewResolver” to find the actual “View” to invoke
- The “DispatcherServlet” passes the model object to the “View” to render the result
- The “View” with the help of the model data renders the result and return it back to the user
First create a table called 'loginbean' and insert some values.
create table loginbean( empid int(10) not null primary key, name varchar(50) not null, desk_extn int(4), password varchar(15) not null );insert into loginbean values(12345,'S L N V Praveen',1234,'praveen');
The directory structure as follows (Eclipse IDE)
Add the required jar files to the build path and WEB-INF/lib folder from spring/hibernate framework.
Java build path:
WEB-INF/lib:
Now create a bean called LoginBean
LginBean.java
LginBean.java
package com.shlogin.sample; public class LoginBean { private Integer empId; private String empName; private int deskExtn; private String password; public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName; } public int getDeskExtn() { return deskExtn; } public void setDeskExtn(int deskExtn) { this.deskExtn = deskExtn; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getEmpId() { return empId; } public void setEmpId(Integer empId) { this.empId = empId; } }Now define the hbm file.
LoginBean.hbm.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.shlogin.sample.LoginBean" table="loginbean"> <id name="empId" column="empid" type="int"> <generator class="assigned" /> </id> <property name="empName" column="name" type="string" /> <property name="deskExtn" column="desk_extn" type="int" /> <property name="password" column="password" type="string" /> </class> </hibernate-mapping>
Other source files
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app> <display-name>springhibernate</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <servlet> <servlet-name>context</servlet-name> <servlet-class> org.springframework.web.context.ContextLoaderServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- Spring context loading ends--> <servlet> <servlet-name>login</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>login</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <taglib> <taglib-uri>/spring</taglib-uri> <taglib-location>/WEB-INF/spring.tld</taglib-location> </taglib> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
login-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="loginFormValidator" class="com.shlogin.sample.LoginFormValidator"/> <bean id="loginController" class="com.shlogin.sample.LoginController"> <property name="sessionForm"><value>true</value></property> <property name="commandName"><value>loginBean</value></property> <property name="commandClass"><value>com.shlogin.sample.LoginBean</value></property> <property name="validator"><ref bean="loginFormValidator"/></property> <property name="formView"><value>login</value></property> <property name="successView"><value>success</value></property> <property name="failureView"><value>failure</value></property> <property name="logindao"><ref bean="logindao"/></property> </bean> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="urlMap"> <map> <entry key="/login/loginPage.do"><ref bean="loginController"/></entry> </map> </property> </bean> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property> <property name="prefix"><value>/WEB-INF/jsp/</value></property> <property name="suffix"><value>.jsp</value></property> </bean> </beans>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost:3306/user</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value></value> </property> </bean> <bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="myDataSource" /> </property> <property name="mappingResources"> <list> <value>/com/shlogin/sample/LoginBean.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop> <prop key="hibernate.show_sql">true</prop> </props> </property> </bean> <bean id="logindao" class="com.shlogin.sample.LoginDAO"> <property name="sessionFactory"> <ref bean="mySessionFactory" /> </property> </bean> </beans>
login.jsp
<%@ taglib prefix="core" uri="http://java.sun.com/jstl/core" %> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> <html> <head><title>Spring Hibernate Example</title></head> <body> <center> <h1>Login Page</h1> <br/> <form method="post" action="/springHibernateLogin/login/loginPage.do"> <table width="70%" border="1"> <tr> <td align="center" bgcolor="lightblue">Employee Login</td> </tr> <tr> <td> <table border="0" width="100%"> <tr> <td width="33%" align="right">EmpId: </td> <td width="66%" align="left"> <spring:bind path="loginBean.empId"> <input type="text" name="empId" value="<core:out value="${status.value}"/>"/> </spring:bind> </td> </tr> <tr> <td colspan="2" align="center"> <spring:hasBindErrors name="loginBean"> <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="loginBean.password"> <input type="password" name="password" /> </spring:bind> </td> </tr> <tr> <td colspan="2" align="center"> <spring:hasBindErrors name="loginBean"> <font color="red"><core:out value="${status.errorMessage}"/></font> </spring:hasBindErrors> </td> </tr> <tr> <td align="center" colspan="2"> <input type="submit" align="middle" value="Login"> </td> </tr> </table> </td> </tr> </table> </form> </center> </body> </html>
failure.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Failed</title> </head> <body> <h3>Failed to Login...!!!</h3> <a href="/springHibernateLogin/login/loginPage.do"><h4>Back</h4></a> </body> </html>success.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>success</title> <script language="javascript" type="text/javascript"> window.history.forward(1); </script> </head> <body> <form action="/springHibernateLogin/login/loginPage.do"> <h3>Hello...<c:out value="${name}" /></h3> <input type="submit" value="Logout" /></form> </body> </html>
LoginController.java
package com.shlogin.sample; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.validation.BindException; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.SimpleFormController; @Controller public class LoginController extends SimpleFormController { private LoginDAO logindao; private String failureView; public Object formBackingObject(HttpServletRequest request) throws ServletException { LoginBean backingObject = new LoginBean(); System.out.println("formBackingObject"); return backingObject; } public ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws ServletException { LoginBean user = (LoginBean)command; System.out.println("user name : " user.getEmpId()); System.out.println("dept name : " user.getPassword()); boolean result = getLogindao().checkUser(user); System.out.println("result = " result); if(result) { request.setAttribute("name", getLogindao().getUser()); return new ModelAndView("success"); } else return new ModelAndView("failure"); } // returns the logindao public LoginDAO getLogindao() { return logindao; } public void setLogindao(LoginDAO logindao) { this.logindao = logindao; } public final void setFailureView(String failureView) { this.failureView = failureView; } protected final String getFailureView() { return (failureView); } }
LoginDAO.java
package com.shlogin.sample; import java.util.Iterator; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; public class LoginDAO { private SessionFactory sessionFactory; String name = ""; public void setUser(String name) { this.name = name; } public String getUser() { return name; } public boolean checkUser(LoginBean loginBean) { System.out.println("in checkUser method"); Session session = getSessionFactory().openSession(); System.out.println(session); boolean result = false; try { String SQL_QUERY ="from LoginBean loginbean where empid = ? and password = ?"; Query query = session.createQuery(SQL_QUERY); query.setInteger(0, loginBean.getEmpId()); query.setString(1, loginBean.getPassword()); for(Iterator it=query.iterate();it.hasNext();){ LoginBean loginbean=(LoginBean)it.next(); System.out.println("ID: " loginBean.getEmpId()); name = loginbean.getEmpName(); System.out.println("FirstName: " name); setUser(name); result = true; } } catch(Exception e) { e.printStackTrace(); } return result; } /* * returns the sessionFactory */ public SessionFactory getSessionFactory() { return sessionFactory; } public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } }
LoginFormValidator.java
package com.shlogin.sample; import org.springframework.validation.Errors; import org.springframework.validation.Validator; public class LoginFormValidator implements Validator{ public boolean supports(Class clazz) { return clazz.equals(LoginBean.class); } public void validate(Object obj, Errors errors) { LoginBean user = (LoginBean) obj; if (user.getEmpId()== null && user.getPassword().trim().length() <= 0) { System.out.println("EmpId and Password fields required"); errors.rejectValue("empId", "error.login.not-specified", null,"Value required"); } else { System.out.println("user obj : " user); System.out.println(user.getEmpId()); if (user.getEmpId()== null) { System.out.println("EmpId null value"); errors.rejectValue("empId", "error.login.invalid-user", null, "Employee Id Required"); } if (user.getPassword().trim().length() <= 0) { System.out.println("Password null value"); errors.rejectValue("password", "error.login.invalid-dept", null, "Password is Required"); } } } }
On running the above application:
on successful login :Happy coding...!!!
No comments:
Post a Comment