Hibernate首个web工程
来源:互联网 发布:小米手环数据修改 编辑:程序博客网 时间:2024/05/01 23:55
Hibernate的前期学习的配置文件基本都是用最简单的配置,只需要:连接数据库,添加表的映射。因此具体的配置就不贴出来了。想了解的可以参考初学Hibernate
这里主要讲Hibernate Web项目的servlet类。
1.前期准备
首先建立一个servlet类EventManagerServlet,因为是最简单的只需要doGet 方法就行。
public class EventManagerServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //TODO }}
1.设置响应编码
如果不设置的话,有可能回出现汉字乱码现象 response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
2.调用的方法
页面需要展示数据,把数据库中表的数据打印出来。为了方便
,就把后台代码和前台代码混合在一起了,实际操作中最好自己新建一个页面进行数据的展示
/** * 打印列表 */ @SuppressWarnings("unused") private void listEvents(PrintWriter out,SimpleDateFormat dateFormatter){ @SuppressWarnings("deprecation") List result = HibernateUtil.getSessionfactory().getCurrentSession().createCriteria(Event.class).list(); if (result.size() > 0) { out.println("<h2>Events in database:</h2>"); out.println("<table border='1'>"); out.println("<tr>"); out.println("<th>Event title</th>"); out.println("<th>Event date</th>"); out.println("</tr>"); Iterator it = result.iterator(); while (it.hasNext()) { Event event = (Event) it.next(); out.println("<tr>"); out.println("<td>" + event.getTitles() + "</td>"); System.out.println(event.getTitles()); out.println("<td>" + dateFormatter.format(event.getDate()) + "</td>"); out.println("</tr>"); } out.println("</table>"); } }
添加数据的时候需要一个表单来进行提交。表单提交的方法如下,一般需要注意action提交的路径。不过现在就一个页面,因此不需要具体的action路径,只需要在提交给当前页面就行,servlet里面会进行判断
/** * 打印表单 */ private void printEventForm(PrintWriter out ){ out.println("<h2>Add new event</h2>"); out.print("<form>"); out.print("Title:<input name = 'eventTitle' length = '50'/></br>"); out.print("Date(e.q.24.12.2009):<input name = 'eventDate' length = '10'/></br>"); out.print("<input type = 'submit' name = 'action' value = 'store'/>"); out.print("</form>"); }
当提交的数据的时候应该有个方法保存到 数据库中。
/** * 保存event */ protected void createAndStoreEvent(String title,Date theDate){ Event event = new Event(); event.setId(UUID.randomUUID()+""); event.setTitles(title); event.setDate(theDate); HibernateUtil.getSession().save(event); }
3.doGet方法
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置响应时的编码格式 response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); //定义日期的格式 SimpleDateFormat dateFormatter = new SimpleDateFormat(); try {// begin 流程开始 //事物开始 HibernateUtil.getSessionfactory().getCurrentSession().beginTransaction(); // process 流程 // Write HTML header PrintWriter out = response.getWriter(); out.println("<html><head><title>Event Manager</title></head><body>"); // Handle actions //判断通过什么方式访问,如果是提交表单的话 if ( "store".equals(request.getParameter("action")) ) { //获取action提交的信息,判断是否有数据 String eventTitle = request.getParameter("eventTitle"); String eventDate = request.getParameter("eventDate"); //无数据 提示信息 if ( "".equals(eventTitle) || "".equals(eventDate) ) { out.println("<b><i>Please enter event title and date.</i></b>"); } else { //有数据则保存数据 createAndStoreEvent(eventTitle, dateFormatter.parse(eventDate)); out.println("<b><i>Added event.</i></b>"); } } // Print page printEventForm(out); listEvents(out, dateFormatter); // Write HTML footer out.println("</body></html>"); out.flush(); out.close(); // end //事物结束 HibernateUtil.getSessionfactory().getCurrentSession().getTransaction().commit(); } catch (Exception ex) { //出现异常回滚事物 HibernateUtil.getSessionfactory().getCurrentSession().getTransaction().rollback(); if (ServletException.class.isInstance(ex)) { throw (ServletException) ex; } else { throw new ServletException(ex); } } }
4.web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app 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"><servlet><servlet-name>Event Manager</servlet-name><servlet-class>org.grgbanking.servlet.EventManagerServlet</servlet-class></servlet><!-- 设置访问路径 --><servlet-mapping><servlet-name>Event Manager</servlet-name><url-pattern>/eventmanager</url-pattern></servlet-mapping></web-app>
5.运行
发布项目,可以采用tomcat来发布,通过下面这个路径访问,其中
/hibernate是你的项目名
/eventmanager是你在web.xml设置的访问路径
http://localhost:8080/hibernate/eventmanager
6.servlet完整的代码
package org.grgbanking.servlet;import java.io.IOException;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Iterator;import java.util.List;import java.util.UUID;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.grgbanking.pojo.Event;import org.grgbanking.util.HibernateUtil;/** * * @author cjyun * @Date 2016年11月23日 */public class EventManagerServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); SimpleDateFormat dateFormatter = new SimpleDateFormat(); try {// begin HibernateUtil.getSessionfactory().getCurrentSession().beginTransaction(); // process // Write HTML header PrintWriter out = response.getWriter(); out.println("<html><head><title>Event Manager</title></head><body>"); // Handle actions if ( "store".equals(request.getParameter("action")) ) { String eventTitle = request.getParameter("eventTitle"); String eventDate = request.getParameter("eventDate"); if ( "".equals(eventTitle) || "".equals(eventDate) ) { out.println("<b><i>Please enter event title and date.</i></b>"); } else { createAndStoreEvent(eventTitle, dateFormatter.parse(eventDate)); out.println("<b><i>Added event.</i></b>"); } } // Print page printEventForm(out); listEvents(out, dateFormatter); // Write HTML footer out.println("</body></html>"); out.flush(); out.close(); // end HibernateUtil.getSessionfactory().getCurrentSession().getTransaction().commit(); } catch (Exception ex) { HibernateUtil.getSessionfactory().getCurrentSession().getTransaction().rollback(); if (ServletException.class.isInstance(ex)) { throw (ServletException) ex; } else { throw new ServletException(ex); } } } /** * 打印表单 */ private void printEventForm(PrintWriter out ){ out.println("<h2>Add new event</h2>"); out.print("<form>"); out.print("Title:<input name = 'eventTitle' length = '50'/></br>"); out.print("Date(e.q.24.12.2009):<input name = 'eventDate' length = '10'/></br>"); out.print("<input type = 'submit' name = 'action' value = 'store'/>"); out.print("</form>"); } /** * 打印列表 */ @SuppressWarnings("unused") private void listEvents(PrintWriter out,SimpleDateFormat dateFormatter){ @SuppressWarnings("deprecation") List result = HibernateUtil.getSessionfactory().getCurrentSession().createCriteria(Event.class).list(); if (result.size() > 0) { out.println("<h2>Events in database:</h2>"); out.println("<table border='1'>"); out.println("<tr>"); out.println("<th>Event title</th>"); out.println("<th>Event date</th>"); out.println("</tr>"); Iterator it = result.iterator(); while (it.hasNext()) { Event event = (Event) it.next(); out.println("<tr>"); out.println("<td>" + event.getTitles() + "</td>"); System.out.println(event.getTitles()); out.println("<td>" + dateFormatter.format(event.getDate()) + "</td>"); out.println("</tr>"); } out.println("</table>"); } } /** * 保存event */ protected void createAndStoreEvent(String title,Date theDate){ Event event = new Event(); event.setId(UUID.randomUUID()+""); event.setTitles(title); event.setDate(theDate); HibernateUtil.getSession().save(event); }}
HibernateUtil工具类为
package org.grgbanking.util;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.junit.runner.RunWith;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;/** * * @author cjyun * @date 2016年11月22日 */public class HibernateUtil { private static final SessionFactory sessionFactory = buildSessionFactory(); private static SessionFactory buildSessionFactory() { try { return new Configuration().configure().buildSessionFactory(); } catch (Throwable ex) { System.err.println("Initial SssionFactory creation failed." + ex); throw new ExceptionInInitializerError(ex); } } public static SessionFactory getSessionfactory() { return sessionFactory; }}
0 1
- Hibernate首个web工程
- 第一个hibernate工程
- springmvc + hibernate构建web工程
- 02hibernate第一个工程
- Hibernate读书笔记-----部署第一个hibernate工程
- Maven工程聚合,多个Java工程、web工程聚合
- Maven工程聚合,多个Java工程、web工程聚合
- 用spring和hibernate构建web工程
- springmvc + hibernate构建web工程(二)
- 非web工程下 spring+Hibernate整合
- 【非Web工程】Spring + C3P0 + Hibernate + Mysql
- Hibernate基础之给java web工程加入Hibernate支持
- 我的第一个maven web工程
- Ubuntu Apache部署多个web工程
- Spring+Hibernate+Struts+MyEclipse构件J2EE Web 工程
- 手动编译Java Web 的Hibernate的工程
- MyEclipse创建Java Web工程并添加Hibernate支持
- Hibernate的基本架构和第一个简单工程(2)
- solrCloud+tomcat+zookeeper配置
- OpenStack基础环境 [一]
- Android 7.1.1开发者第二预览版发布:更接近完全体
- 算法#21--两数求和
- Modbus通讯协议学习 - 认识篇
- Hibernate首个web工程
- py
- 模态非模态对话框
- 一些Drupal的How to细节处理
- Oracle 12C ORA-01792: maximum number of columns in a table or view is 1000
- MYSQL关于 NO DATABACE SELECT 报错的解决办法
- 【ARM-Linux开发】Linux链接
- 使用@JsonFormat引起的时间比正常时间慢8小时解决方法
- 5-2 Windows消息队列 (25分)