Following are the required files to execute the Hibernate Web Application.
- User.java
- user.hbm.xml
- Success.java
- UserControllerServlet.java
- UserDAO.java
- hibernate.cfg.xml
- web.xml
- register.jsp
User.java
[java]package com.jwt.hibernate.bean;
public class User {
private int id;
private String userName;
private String password1;
private String email;
private String phone;
private String city;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword1() {
return password1;
}
public void setPassword1(String password1) {
this.password1 = password1;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
[/java]
Set and Get methods are a pattern of data encapsulation. Instead of accessing class member variables directly, one can define get methods to access these variables, and set methods to modify them. By encapsulating them in this manner, one can have control over the public interface.
user.hbm.xml
[java]<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.jwt.hibernate.bean.User" table="USER">
<id name="id">
<generator class="assigned"></generator>
</id>
<property column="USER_NAME" name="userName" type="java.lang.String" />
<property column="PASSWORD" name="password1" type="string" />
<property column="EMAIL" name="email" type="java.lang.String" />
<property column="PHONE" name="phone" type="java.lang.String" />
<property column="CITY" name="city" type="java.lang.String" />
</class>
</hibernate-mapping>
[/java]
The
generator class subelement of id utilized to produce the unique identifier for the objects of persistence class. There are numerous generator classes characterized in the Hibernate Framework. All the generator classes actualizes the
org.hibernate.id.IdentifierGenerator interface.
Success.java
[java]package com.jwt.hibernate.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Success extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer = response.getWriter();
writer.println("<html>" + "<body bgcolor='red'>" + "<center>"
+ "SPlesson Authors Log In Form" + "</center>" + "<center>"
+ "Details Added Successfully" + "</center>" +"</body>"
+ "</html>");
}
}
[/java]
In
doGet(), the parameters are appended to the URL and sent along with the header information.
doPost() shall be used when comparatively large amount of sensitive data has to be sent. Examples are sending data after filling up a form or sending login id and password.
UserControllerServlet.java
[java]package com.jwt.hibernate.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.jwt.hibernate.dao.UserDAO;
public class UserControllerServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String userName = request.getParameter("userName");
String password = request.getParameter("password1");
String email = request.getParameter("email");
String phone = request.getParameter("phone");
String city = request.getParameter("city");
HttpSession session = request.getSession(true);
try {
UserDAO userDAO = new UserDAO();
userDAO.addUserDetails(userName, password, email, phone, city);
response.sendRedirect("Success");
} catch (Exception e) {
e.printStackTrace();
}
}
}
[/java]
doPost() shall be used when comparatively large amount of sensitive data has to be sent. Examples are sending data after filling up a form or sending login id and password.
request.getParameter() method in the servlet class, to retrieve the input values from HTML page. The
sendRedirect() method works at client side, It always sends a new request, It can be used within and outside the server.
UserDAO.java
[java]package com.jwt.hibernate.dao;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.jwt.hibernate.bean.User;
public class UserDAO {
public void addUserDetails(String userName, String password, String email,
String phone, String city) {
try {
// 1. configuring hibernate
Configuration configuration = new Configuration().configure();
// 2. create sessionfactory
SessionFactory sessionFactory = configuration.buildSessionFactory();
// 3. Get Session object
Session session = sessionFactory.openSession();
// 4. Starting Transaction
Transaction transaction = session.beginTransaction();
User user = new User();
user.setUserName(userName);
user.setPassword1(password);
user.setEmail(email);
user.setCity(city);
user.setPhone(phone);
session.save(user);
transaction.commit();
System.out.println("\n\n <b>SPlessons Authors Log In Form</b> \n");
System.out.println("\n\n Details Added Successfully, Thank You \n");
} catch (HibernateException e) {
System.out.println(e.getMessage());
System.out.println("Please Check the Details.");
}
}
}
[/java]
hibernate.cfg.xml
[java]<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test_db</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="show_sql">true</property>
<property name="format_sql">true</property>
<property name="hbm2ddl.auto">create </property>
<mapping resource="com/jwt/hibernate/bean/user.hbm.xml" />
</session-factory>
</hibernate-configuration>
[/java]
Properties |
Description |
hibernate.connection.driver_class |
The JDBC driver class. |
hibernate.dialect |
This property makes Hibernate generate the suitable SQL for the picked database. |
hibernate.connection.url |
The JDBC URL to the database instance. |
hibernate.connection.username |
The database username. |
hibernate.connection.password |
The database password. |
hibernate.connection.pool_size |
Limits the number of connections waiting in the Hibernate database connection pool. |
hibernate.connection.autocommit |
Allows autocommit mode to be used for the JDBC connection. |
web.xml
[java]<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>HibernateWebApp</display-name>
<servlet>
<display-name>User</display-name>
<servlet-name>User</servlet-name>
<servlet-class>com.jwt.hibernate.controller.UserControllerServlet</servlet-class>
</servlet>
<servlet>
<display-name>Success</display-name>
<servlet-name>Success</servlet-name>
<servlet-class>com.jwt.hibernate.controller.Success</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>User</servlet-name>
<url-pattern>/register</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Success</servlet-name>
<url-pattern>/Success</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>register.jsp</welcome-file>
</welcome-file-list>
</web-app>[/java]
register.jsp
[java]<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<!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=UTF-8">
<title>Registration Form</title>
</head>
<body>
<h1>Registration Form</h1>
<form action="register" method="post">
<table cellpadding="3pt">
<tr>
<td>User Name :</td>
<td><input type="text" name="userName" size="30" /></td>
</tr>
<tr>
<td>Password :</td>
<td><input type="password" name="password1" size="30" /></td>
</tr>
<tr>
<td>Confirm Password :</td>
<td><input type="password" name="password2" size="30" /></td>
</tr>
<tr>
<td>email :</td>
<td><input type="text" name="email" size="30" /></td>
</tr>
<tr>
<td>Phone :</td>
<td><input type="text" name="phone" size="30" /></td>
</tr>
<tr>
<td>City :</td>
<td><input type="text" name="city" size="30" /></td>
</tr>
</table>
<input type="submit" value="Register" />
</form>
</body>
</html>[/java]
Output:
After compiling the code in the server following login will be generated where user details needs to be entered.
When above data is valid following page will be displayed.
Following message will be printed in console of the server.
Following data will be stored in the database table.