web application by java based on jsp, servlet and hibernate
来源:互联网 发布:学霸养成软件 编辑:程序博客网 时间:2024/05/01 04:23
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:
- Java
- Hibernate
- 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><th>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;@Entitypublic 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 exceptionSystem.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 databasepublic 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 databasepublic 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 databasepublic 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 userIdpublic 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.java
package 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 baseUserDetailsService.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 stubdoGet(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 stubRequestDispatcher 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 stubdoGet(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 stubRequestDispatcher 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 stubdoGet(request, response);}}
Run the Web Application:
right click on the project, Run as -> Run on Server (select Tomcat) -> Finish
User 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 {@Testpublic 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
- web application by java based on jsp, servlet and hibernate
- An IMS Application Example Based on SIP Servlets and VoiceXML
- web-based application architecture
- Restful application based on Cherrypy
- Step-by-Step:Installation and Configuration of a secure web application using MySQL,OpenSA Web Server, Tomcat and OpenSSL,on a N
- java web与servlet jsp
- Handling Form-based File Upload with Java Servlet or JSP
- XML, XSLT, Java, and JSP: A Case Study in Developing a Web Application
- A Fingerprint Orientation Model Based on 2D Fourier expansion (FOMFE) and Its Application
- A dynamic niching clustering algorithm based on individual-connectedness and its application to colo
- java web之路 jsp application对象
- Java Web开发速学宝典(JSP+Servlet+Struts 2 + Hibernate + Spring)源代码下载
- Java Web开发速学宝典(JSP+Servlet+Struts 2 + Hibernate + Spring)源代码下载
- 新书出版:Java Web开发技术大全——JSP+Servlet+Struts 2+Hibernate+Sp
- Java Web开发速学宝典(JSP+Servlet+Struts 2 + Hibernate + Spring)源代
- Application Logger Based on .Net Remoting
- SSH based on Web Technology
- Spring 3 MVC Framework Based Hello World Web Application Example Using Maven, Eclipse IDE And Tomcat
- 第四章 Controller接口控制器详解(6)——跟着开涛学SpringMVC
- Bootstar常用样式表
- ubuntu14.04 安装JDK1.8
- Android——分别获取导航栏、状态栏高度
- spark+hive win7开发环境配置
- web application by java based on jsp, servlet and hibernate
- BAT解密:互联网技术发展之路(3)- 牛逼公司的技术架构都是这个范
- 常用设计模式(三)——工厂设计模式
- android监听应用安装,如判断是新安装的应用,还是覆盖安装的应用
- [LeetCode]Merge k Sorted Lists
- 在Windows Server 2008如何安装Subversion
- BAT解密:互联网技术发展之路(4)- 存储层技术剖析
- 第四章 Controller接口控制器详解(7 完)——跟着开涛学SpringMVC
- Android Canvas API总结和使用方法