由於需要對Hibernate作個了解,所以寫了個簡單的實現
以上是大概目錄
1.新建Hibernate.cfg.xml配置文件

<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="connection.username">root</property> <property name="connection.url"> jdbc:mysql://localhost:3306/hiber?characterEncoding=utf8 </property> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="myeclipse.connection.profile"> mysqlJdbcDriver </property> <property name="connection.password">123456</property> <property name="connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="hbm2ddl.auto">update</property> <mapping resource="/entity/User.hbm.xml"/> </session-factory> </hibernate-configuration>
2.修改web.xml 路徑映射

<?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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>tHIbe</display-name> <servlet> <servlet-name>userServlet</servlet-name> <servlet-class>servlet.userServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>userServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>
3.路徑跳轉的servlet類

package servlet; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.sun.org.apache.bcel.internal.generic.Select; import entity.User; import service.UserService; import service.impl.UserServiceImpl; public class userServlet extends HttpServlet{ /** * */ private static final long serialVersionUID = 1L; UserService userService=new UserServiceImpl(); public void execute(HttpServletRequest request, HttpServletResponse response ) throws IOException{ System.out.println("進入次類"); String path = request.getServletPath(); path = path.substring(0, path.indexOf(".")); request.setCharacterEncoding("utf8"); response.setContentType("text/html;charset=utf8"); if (path.equals("/goReg")) { RequestDispatcher dispatcher=request.getRequestDispatcher("/WEB-INF/jsp/reg.jsp"); try { dispatcher.forward(request, response); } catch (ServletException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else if(path.equals("/reg")){ regUser(request,response); try { request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response); } catch (ServletException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else if(path.equals("/select")){ select(request,response); try { request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response); } catch (ServletException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else if(path.equals("/delete")){ delete(request,response); try { request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response); } catch (Exception e) { e.printStackTrace(); } } } public void regUser(HttpServletRequest req,HttpServletResponse resp){ System.out.println("進行注冊"); String name=req.getParameter("name"); String pwd=req.getParameter("pwd"); User user=new User(); user.setName(name); user.setPwd(pwd); userService.addUser(user); req.setAttribute("user", user); } public void select(HttpServletRequest req,HttpServletResponse resp){ System.out.println("查詢中"); List<User> list=new ArrayList<>(); list=userService.select(); req.setAttribute("list", list); } public void delete(HttpServletRequest req,HttpServletResponse resp){ Integer id=Integer.parseInt(req.getParameter("name")); int result=userService.delete(id); if(result==1){ req.setAttribute("msg", "成功kill"); } System.out.println(result); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("haha "); execute(req,resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub doGet(req, resp); } }
4.新建Hibernate工具類(主要用來在dao的實現類里面創建session、關閉session等)

package util; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtil { private static final SessionFactory sessionFactory; static { try { Configuration config = new Configuration().configure("hibernate.cfg.xml"); sessionFactory = config.buildSessionFactory(); } catch(Throwable e) { throw new ExceptionInInitializerError(e); } } public static final ThreadLocal session = new ThreadLocal(); public static Session currentSession() throws HibernateException { Session s = (Session)session.get(); //Open a new Session,if this Thread has none yet if(s == null || !s.isOpen()) { s = sessionFactory.openSession(); session.set(s); } return s; } public static void closeSession() throws HibernateException { Session s = (Session)session.get(); session.set(null); if(s != null) s.close(); } }
5.dao層實現類代碼參考

package dao.impl; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import dao.UserDao; import entity.User; import util.HibernateUtil; public class UserDaoImpl implements UserDao { @Override public void addUser(User user) { // TODO Auto-generated method stub Session session = HibernateUtil.currentSession(); Transaction tx=session.beginTransaction(); try { session.save(user);//保存次酒類對象 tx.commit();//提交到數據庫 session.close(); } catch (Exception e) { e.printStackTrace(); tx.rollback(); } } @Override public List<User> select() { Session session = HibernateUtil.currentSession(); //Transaction tx=session.beginTransaction(); List<User> list=null; try { String hql="from User";//使用命名參數,推薦使用,易讀。 Query query=session.createQuery(hql); list=query.list(); //tx.commit();//提交到數據庫 session.close(); return list; } catch (Exception e) { e.printStackTrace(); } return list; } @Override public int delete(Integer id) { Session session=HibernateUtil.currentSession(); Transaction tx=session.beginTransaction(); try { User user=(User)session.get(User.class, id); session.delete(user); tx.commit(); session.close(); } catch (Exception e) { e.printStackTrace(); tx.rollback(); return 0; } return 1; } }
6.User實體類的映射文件User.hbm.xml,和數據的關聯文件(需要在Hibernate.cfg.xml配置文件中引入)

<?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 package="entity"> <class name="User" table="user"> <id name="id" column="id"> <generator class="identity"></generator> </id> <property name="name" column="name" unique="true"></property> <property name="pwd" column="pwd"></property> </class> </hibernate-mapping>
7.User實體類(注意要實現 implements Serializable)

package entity; import java.io.Serializable; /** * 持久化user類 * @author Administrator * */ public class User implements Serializable{ private int id; private String name; private String pwd; public User(int id, String name, String pwd) { super(); this.id = id; this.name = name; this.pwd = pwd; } public User() { } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } }
8.jsp頁面

<%@ page language="java" contentType="text/html; charset=UTF-8" 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>主頁</title> <script type="text/javascript"> function dianji(){ window.location.href='select.do' }; function kill(){ window.location.href='delete.do?name=${list.get(1).id}' } function ok(){ var name=document.getElementById("newName").value; window.location.href='update.do?name='+name } </script> </head> <body> 歡迎你:${suser.name},你將走向最強王者之路<br/> 點擊下方按鈕:<br/> <input type="button" value="查詢最強王者" onclick="dianji()"/><br/> 最強王者是:${list.get(1).name}<br/> 看我的<br/> <input type="button" value="kill you!" onclick="kill()"/> <p>${msg}</p> 你已成為最強王者請修改你的名稱:<input type="text" name="name" id="newName" placeholder="請輸入你的新昵稱" /><input type="button" value="確定" onclick="ok()"/> </body> </html>
在項目遇到的問題有:
1.啟動tomcat時 報無法啟動的錯誤,錯誤可能在xml配置文件
2.xml配置的路徑跳轉不能跳轉,同樣的代碼,重新建項目后又可以了,不知道什么原因