web application by java based on jsp, servlet and hibernate
2015-11-11 18:44
633 查看
Project Description:
This Web Application is developed to save user data to a database Fields. In this project, JSP is the interface, Hibernate and PostgreSQL are the data base, and Servlet is the controller.Tools:
JavaHibernate
PostgreSQL
Tomcat
Project Structure:
Step 1: Create Dynamic Web Project
Step 2 : Add Jar files for PostgreSQL and Hibernate:
Step 3 : Create hibernate.cfg.xml file in src directory:
The file hibernate.cfg.xml
is used to configure the data base for the project.
hibernate.cfg.xml :
<?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">org.postgresql.Driver</property> <property name="hibernate.connection.password">password</property> <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/userdata</property> <property name="hibernate.connection.username">postgres</property> <property name="hbm2ddl.auto">update</property> <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider</property> <property name="show_sql">true</property> <property name="current_session_context_class">thread</property> <mapping class="org.webapp.data.UserDetails"/> </session-factory> </hibernate-configuration>
Step 4 :Create web.xml file for JSP and Servlet configuration in WEB-INF
web.xml :<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" metadata-complete="true" version="3.1"> <servlet> <description>User Data Input</description> <display-name>User Data Input</display-name> <servlet-name>UserServlet</servlet-name> <servlet-class>org.webapp.servlets.UserServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UserServlet</servlet-name> <url-pattern>/UserServlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>userInput.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>MoreUserServlet</servlet-name> <servlet-class>org.webapp.servlets.MoreUserServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MoreUserServlet</servlet-name> <url-pattern>/MoreUserServlet</url-pattern> </servlet-mapping> <servlet> <servlet-name>UserDataServlet</servlet-name> <servlet-class>org.webapp.servlets.UserDataServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>UserDataServlet</servlet-name> <url-pattern>/UserDataServlet</url-pattern> </servlet-mapping> </web-app>
Step 6 : Create the jsp and css files in WebContent
style.css :@CHARSET "ISO-8859-1";
#container .small{
color:#666666;
display:block;
font-size:11px;
font-weight:normal;
text-align:right;
width:140px;
}
#container input{
float:left;
font-size:12px;
padding:4px 2px;
border:solid 1px burlywood;
width:200px;
margin:2px 0 20px 10px;
border-radius: 5px;
}
#container button{
clear:both;
margin-left:150px;
width:125px;
height:31px;
background:#666666;
text-align:center;
line-height:31px;
color:#FFFFFF;
font-size:11px;
font-weight:bold;
border-radius: 5px;
}
table, tr, td{
border-radius: 5px;
border:solid 1px;
padding: 5px;
width: max-content;
}
userInput.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>User Data Input Form</title> <style type="text/css"> h3{font-family: Calibri; font-size: 22pt; font-style: normal; font-weight: bold; color:#0099cc; text-align: center; text-decoration: underline } table{font-family: Calibri; color:white; font-size: 11pt; font-style: normal;width: 50%; text-align:; background-color: #0099cc; border-collapse: collapse; border: 2px solid navy} table.inner{border: 0px} </style> </head> <body> <h3> User Data Input Form</h3> <form method="post" action="UserServlet"> <table align="center" cellpadding="10"> <tr> <td>*User Name :</td> <td><input type="text" name="username" maxlength="30"></td> <td>user name cannot be empty</td> </tr> <tr> <td>Age :</td> <td><input type="text" name="age" maxlength="3"></td> </tr> <tr> <td>Sex :</td> <td> <select name="sex"> <option value="Male">Male</option> <option value="Female">Female</option> </select> </td> </tr> <tr> <td>Active :</td> <td> <select name="active"> <option value="Yes">Yes</option> <option value="No">No</option> </select> </td> </tr> <tr> <td>Tags :</td> <td><input type="text" name="tags" maxlength="100"></td> </tr> <tr> <td colspan="2" align="center"> <button type="submit">Submit</button> <button type="reset">Reset</button> </td> </tr> </table> </form> </body> </html>
confirm.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>User Data Input Confirmation</title> <style type="text/css"> h3{font-family: Calibri; font-size: 22pt; font-style: normal; font-weight: bold; color:#0099cc; text-align: center; text-decoration: underline } table{font-family: Calibri; color:white; font-size: 11pt; font-style: normal;width: 20%; text-align:; background-color: #0099cc; border-collapse: collapse; border: 2px solid navy} table.inner{border: 0px} </style> </head> <body> <H3>User Add Success</H3> <form method="post" action="MoreUserServlet"> <table align="center" cellpadding="10"> <tr><td colspan="2" align="center"> <button type="submit">More User Data</button> </td></tr> </table> </form> <BR/> <form method="post" action="UserDataServlet"> <table align="center" cellpadding="10"> <tr><td colspan="2" align="center"> <button type="submit">Display User Data</button> </td></tr> </table> </form> </body> </html>
dataCheck.jsp :
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@page import="java.util.List"%>
<%@page import="org.webapp.service.UserDetailsService"%>
<%@page import="org.webapp.data.UserDetails"%>
<%@page import="org.webapp.data.Gender"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel="stylesheet" type="text/css" href="css/style.css"/>
<title>User Details Data</title>
</head>
<body>
<div id="container">
<table align="center">
<thead>
<tr>
<t
d89f
h>User ID</th>
<th>User Name</th>
<th>Age</th>
<th>Sex</th>
<th>Active</th>
<th>Tags</th>
</tr>
</thead>
<tbody>
<%
List<UserDetails> users = UserDetailsService.getListOfUsers();
for (UserDetails u : users) {
%>
<tr>
<td><%=u.getUserId()%></td>
<td><%=u.getUsername()%></td>
<td><%=u.getAge()%></td>
<td><%=u.getSex()%></td>
<td><%=u.isActive()%></td>
<td><%=u.getTags()%></td>
</tr>
<%}%>
</tbody>
</table>
<br/>
</div>
</body>
</html>
Step 7 : Create Data Object files
UserDetails.java :package org.webapp.data; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class UserDetails { @Id @GeneratedValue(strategy=GenerationType.AUTO) private int userId; private String username; private Gender sex; private int age; private boolean active; private String tags; public UserDetails(String username, Gender sex, int age, boolean active, String tags) { super(); this.username = username; this.sex = sex; this.age = age; this.active = active; this.tags = tags; } public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Gender getSex() { return sex; } public void setSex(Gender sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public boolean isActive() { return active; } public void setActive(boolean active) { this.active = active; } public String getTags() { return tags; } public void setTags(String tags) { this.tags = tags; } }
Gender.java :
<span style="color:#000000;">package org.webapp.data; public enum Gender { male, female; } </span>
Step 8 : Create service class for Hibernate :
HibernateUtil.java :package org.webapp.service; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { // Create the SessionFactory from standard (hibernate.cfg.xml) // config file. sessionFactory = new Configuration().configure().buildSessionFactory(); } catch (Throwable ex) { // Log the exception System.err.println("Initial SessionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionFactory() { return sessionFactory; } }
UseDetailsService.java :
package org.webapp.service; import java.util.ArrayList; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.webapp.data.Gender; import org.webapp.data.UserDetails; public class UserDetailsService { // initialize an user and add into database public static void createUserDetails(String username, Gender sex, int age, boolean active, String tags ) { UserDetails user = new UserDetails(username, sex, age, active, tags); Transaction trns = null; Session session = HibernateUtil.getSessionFactory().openSession(); try { trns = session.beginTransaction(); session.save(user); session.getTransaction().commit(); } catch (RuntimeException ex) { if (trns != null) { trns.rollback(); } ex.printStackTrace(); } finally { session.flush(); session.close(); } } // add user into database public static void createUserDetails(UserDetails user) { Transaction trns = null; Session session = HibernateUtil.getSessionFactory().openSession(); try { trns = session.beginTransaction(); session.save(user); session.getTransaction().commit(); } catch (RuntimeException ex) { if (trns != null) { trns.rollback(); } ex.printStackTrace(); } finally { session.flush(); session.close(); } } // return the list of user from database public static List<UserDetails> getListOfUsers() { List<UserDetails> users = new ArrayList<>(); Session session = HibernateUtil.getSessionFactory().openSession(); Transaction trns = null; try { trns = session.beginTransaction(); Query query = session.createQuery("from UserDetails"); users = (List<UserDetails>) query.list(); trns.commit(); } catch (Exception ex) { if(trns != null) { trns.rollback(); } ex.printStackTrace(); } finally { session.close(); } return users; } // return the user with specified userId public static UserDetails getUserbyUserId(int userId) { Session session = HibernateUtil.getSessionFactory().openSession(); Transaction trns = null; UserDetails user = null; try { trns = session.beginTransaction(); Query query = session.createQuery("from UserDetails where userId = '"+userId+"' "); user = (UserDetails) query.uniqueResult(); trns.commit(); } catch (Exception ex) { if(trns != null) { trns.rollback(); } ex.printStackTrace(); } finally { session.close(); } return user; } }
Step 9 : Create Servlet Class :
UserServlet.javapackage org.webapp.servlets;
import java.io.IOException;
import javax.persistence.Entity;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.RequestDispatcher;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.webapp.data.Gender;
import org.webapp.data.UserDetails;
import org.webapp.service.UserDetailsService;
/**
* Servlet implementation class UserServlet
*/
@Entity
@WebServlet("UserServlet")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public UserServlet() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username").trim();
String sexString = request.getParameter("sex");
String ageString = request.getParameter("age").trim();
String activeString = request.getParameter("active");
String tags = request.getParameter("tags").trim();
if (username.equals("")) {
RequestDispatcher rdp = request.getRequestDispatcher("/userInput.jsp");
rdp.forward(request, response);
} else {
Gender sex;
int age;
boolean active;
if(sexString.equals("Male")) {
sex = Gender.male;
} else {
sex = Gender.female;
}
try {
age = Integer.parseInt(ageString);
} catch (NumberFormatException ex) {
age = 0;
}
if (activeString.equals("Yes")) {
active = true;
} else {
active = false;
}
// add user into data base
UserDetailsService.createUserDetails(username, sex, age, active, tags);
RequestDispatcher rdp = request.getRequestDispatcher("/confirm.jsp");
rdp.forward(request, response);
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
MoreUserServlet.java :
package org.webapp.servlets; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.webapp.service.UserDetailsService; /** * Servlet implementation class MoreUserServlet */ @WebServlet("/MoreUserServlet") public class MoreUserServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public MoreUserServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub RequestDispatcher rdp = request.getRequestDispatcher("/userInput.jsp"); rdp.forward(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); } }
UserDataServlet.java :
package org.webapp.servlets;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class UserDataServlet
*/
@WebServlet("/UserDataServlet")
public class UserDataServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public UserDataServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
RequestDispatcher rdp = request.getRequestDispatcher("/dataCheck.jsp");
rdp.forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
Run the Web Application:
right click on the project, Run as -> Run on Server (select Tomcat) -> FinishUser Data Input Page :
Confirm Page :
User Data Display Page :
Junit Test:
An Junit test case from checking the user data input can be stored in database.UserDataJunit.java :
package org.webapp.test;
import org.webapp.data.UserDetails;
import org.webapp.service.UserDetailsService;
public class UserDataJunit {
public UserDetails addUser(UserDetails user) {
UserDetailsService.createUserDetails(user);
int userId = user.getUserId();
return UserDetailsService.getUserbyUserId(userId);
}
}
UserJunitTest.java :
package org.webapp.test;
import static org.junit.Assert.*;
import org.junit.Test;
import org.webapp.data.UserDetails;
public class UserJunitTest {
@Test
public void userAdded() {
UserDataJunit test = new UserDataJunit();
UserDetails user = new UserDetails();
user.setUsername("test");
UserDetails userAdd = test.addUser(user);
assertEquals(user.getUserId(), userAdd.getUserId());
assertEquals(user.getUsername(), userAdd.getUsername());
}
}
Conclusion:
The Application is the basic Demo for Java Web App develop by integrating JSP, Servlet and Hibernate. The function is to put user information into data base.Further improvements are:
improve web page interface (Done)
add function to display the information in data base (Done)
use Spark framework to achieve the same function
相关文章推荐
- 【转】IOS --- OC与Swift混编
- cocos2dx android 5.0系统崩溃问题
- Android基于G-Sensor的计步算法
- Zabbix 实现微信短信告警
- cocos2d-x mruby学习笔记--扩展2(mruby code)
- 【Android入门】——模拟器的创建及常见问题汇总
- Android学习路线图
- android studio 提示"Gradle project sync failed."
- Unity修改自动生成的代码模板
- 024.ArrayList中方法详解
- ios学习笔记(一)
- Android获取设备电池信息,玩些新花样
- 【MDCC2015】 平台与技术-Android专场总结
- iOS开发——生命周期
- Android 代码里动态设置TextView/Button等的文字颜色Seletor
- 如何防止Unity3D代码被反编译?
- Android工具类—— android 从SIM卡获取联系人信息
- Unity有哪些让做项目事半功倍的插件值得推荐?
- 企业级应用发布流程
- Android:详情界面左右滑动看更多,ViewPager动态添加Fragment,仿51job详情界面