实验指导书
计算机与通信学院
2014.2
目录
概述 ............................................................................................................................................................................................. 1 实验一 HTML应用(属性、表格、表单及FRAME) ............................................................................................................ 3 实验二 JSP应用(留言板应用) ................................................................................................................................................. 8 实验三 STRUTS2应用(“添加学生信息”项目) .................................................................................................................... 40 实验四 HIBERNATE应用(“学生选课系统”项目) ......................................................................................................... 55 实验五 SPRING应用(SSH整合) ................................................................................................................................... 129 实验六 AJAX应用(AJAX的基础应用) ........................................................................................................................ 131
2
概述
本课程实验教学的目的在于训练学生的能手能力,以期更好地掌握Java EE相关原理及方法,并为后期课程设计及以后从事JAVA体系开发工作打下良好的基础。
实验内容
本门课程必做的实验有6个,共8次,其中Hibernate应用实验和Spring应用实验分别有两次。
1. HTML应用(属性、表格、表单及Frame)
2. JSP应用(留言板应用)
3. Struts2应用(“添加学生信息”项目
4. Hibernate应用(“学生选课系统”项目)
5. Spring应用(SSH整合)
6. Ajax应用(Ajax的基础应用)
实验环境
硬件为个人微机,软件为操作系统WINDOWS XP,Eclipse 3.2+, Java EE SDK6+, MySQL 5+。
1
实验要求
本课程实验教学的要求包括:
1、根据教材中规定的内容在要求的时间内完成实验内容;
2、成功部署实验中要求实现的内容,并能演示;
3、提交实验中规定的开发内容的核心代码;
4、实验代码必须提交到SVN版本管理服务器中;
5、提交实验报告。
2
实验一 HTML应用(属性、表格、表单及Frame)
(实验课时:2 实验性质:设计)
实验名称:HTML应用(属性、表格、表单及Frame)
实验目的和要求:
(1)熟悉HTML语法。
(2)通过实验,熟练掌握MyEclipse 8.X的日常应用。
(3)认真书写实验报告,如实填写各项实验内容。
实验内容和步骤:
(1)打开MyEclipse 8.X IDE。
用鼠标单击“开始”后,将鼠标分别指向程序/MyEclipse,运行该程序。
(2)利用MyEclipse创建工程HTML_DEMO。
(3)运行程序。
(4)在MyEclipse中进行其它操作,熟悉并掌握其使用技巧。
3
实验源代码:
Head.html
Left.html
4
学生成绩查询 学生信息显示 返回开始页面 right.html 5 frame.html table.html见教材P19 – 20页。 form_table.html源代码见教材P22 – 24 页。 补充内容: 1、SVN客户端的安装 2、SVN的常规应用 实验思考题(在实验报告中写出答案) 1. MyEclipse环境中如何配置Web服务器?除Tomcat外,请另外下载Resin Web服务器,并配置好,并在浏览器中验证之。 7 2、SVN的整体架构属于何种类型?与其功能相类似的其它代码管理服务器有哪些?请列举你在本实验过程中出现的关于SVN安装和使用的问题及解决方法。 3、请设计一系列操作步骤,演示同组人员在代码提交时的“冲突”,并观察其现象,并提出解决办法。将上述列举出来。 4、设计实验,验证Servlet接口定义的五个方法的存在。 实验二 JSP应用(留言板应用) (实验课时:2 实验性质:设计) 实验名称:JSP应用(留言板应用) 实验目的和要求: (1)使用MyEclipse 8.X IDE进行JSP应用程序的开发 (2)使用MyEclipse 8.X IDE进行程序的编辑和调试方法: (3)通过实验,熟练掌握JSP语法及JSP相关标签的应用。 (4)通过实验,熟练掌握用Servlet做为控制器,实现用户请求的处理及页面的跳转。 (5)认真书写实验报告,如实填写各项实验内容。 8 实验内容和步骤: 1.在MyEclipse 8.X IDE中建立Web工程; 2. 按书第二章2.3节实现的步骤,完成留言版内容; 3. 运行项目,进入登录界面; 4. 按操作流程运行系统,并针对错误进行调试; 5. 将代码提交到SVN版本服务器中。 实验源代码: ccc.hut.database.DB.java package ccc.hut.database; import java.sql.Connection; //import java.sql.Date; import java.sql.DriverManager; import java.sql.PreparedStatement; 9 import java.sql.ResultSet; import java.util.ArrayList; import ccc.hut.javabean.LyTable; import ccc.hut.javabean.User; public class DB { private static Connection ct; private PreparedStatement pstm; public DB() { try { Class.forName(\"com.mysql.jdbc.Driver\"); ct = DriverManager.getConnection(\"jdbc:mysql://localhost:3306/javaee\ \"root\ } catch(Exception ex) { ex.printStackTrace(); 10 } } public User checkUser(String username, String password) { try { pstm = ct.prepareStatement(\"select * from userTable where username=? and password=?\"); pstm.setString(1, username); pstm.setString(2, password); ResultSet rs = pstm.executeQuery(); User user = new User(); while(rs.next()) { user.setId(rs.getInt(1)); user.setUsername(rs.getString(2)); user.setPassword(rs.getString(3)); 11 return user; } return null; } catch(Exception ex) { ex.printStackTrace(); return null; } } public String getUserName(int id) { String username = null; try { pstm = ct.prepareStatement(\"select username from userTable where id = ?\"); pstm.setInt(1, id); 12 ResultSet rs = pstm.executeQuery(); while(rs.next()) { username = rs.getString(1); } return username; } catch(Exception ex) { ex.printStackTrace(); return null; } } public ArrayList try { ArrayList 13 pstm = ct.prepareStatement(\"select * from lyTable\"); ResultSet rs = pstm.executeQuery(); while(rs.next()) { LyTable ly = new LyTable(); ly.setId(rs.getInt(1)); ly.setUserId(rs.getInt(2)); ly.setDate(rs.getDate(3)); ly.setTitle(rs.getString(4)); ly.setContent(rs.getString(5)); al.add(ly); } return al; } catch(Exception ex) { 14 ex.printStackTrace(); return null; } } // 添加留言 public boolean addInfo(LyTable ly) { try { pstm = ct.prepareStatement(\"insert into lyTable values(?, ?, ?, ?, ?)\"); pstm.setNull(1, java.sql.Types.INTEGER); pstm.setInt(2, ly.getUserId()); pstm.setDate(3, ly.getDate()); pstm.setString(4, ly.getTitle()); pstm.setString(5, ly.getContent()); 15 pstm.executeUpdate(); return true; } catch(Exception ex) { ex.printStackTrace(); return false; } } public boolean insertUser(String username, String pwd) { try { pstm = ct.prepareStatement(\"insert into userTable values(?, ?, ?)\"); pstm.setNull(1, java.sql.Types.INTEGER); pstm.setString(2, username); pstm.setString(3, pwd); 16 pstm.executeUpdate(); return true; } catch(Exception ex) { ex.printStackTrace(); return false; } } } ccc.hut.javabean.LyTable.java package ccc.hut.javabean; import java.sql.Date; //import java.util.Date; public class LyTable { 17 private int id; private int userId; private Date date; private String title; private String content; public int getId() { return id; } public void setId(int id) { this.id = id; } public int getUserId() { return userId; 18 } public void setUserId(int userId) { this.userId = userId; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public String getTitle() { return title; } 19 public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } } ccc.hut.javabean.User.java package ccc.hut.javabean; public class User { 20 private int id; private String username; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { 21 this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } ccc.hut.servlet.AddServlet.java package ccc.hut.servlet; import java.io.IOException; import java.sql.Date; 22 import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import ccc.hut.database.DB; import ccc.hut.javabean.LyTable; import ccc.hut.javabean.User; public class AddServlet extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { req.setCharacterEncoding(\"gb2312\"); res.setCharacterEncoding(\"gb2312\"); String title = req.getParameter(\"title\"); 23 String content = req.getParameter(\"content\"); User user = (User)req.getSession().getAttribute(\"user\"); LyTable ly = new LyTable(); ly.setUserId(user.getId()); ly.setDate(new Date(System.currentTimeMillis())); ly.setTitle(title); ly.setContent(content); if(new DB().addInfo(ly)) { res.sendRedirect(\"success.jsp\"); } } public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { 24 doPost(req, res); } } ccc.hut.servlet.MainServlet.java package ccc.hut.servlet; import java.io.IOException; import java.util.ArrayList; 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 ccc.hut.database.DB; 25 import ccc.hut.javabean.LyTable; import ccc.hut.javabean.User; public class MainServlet extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { req.setCharacterEncoding(\"gb2312\"); res.setCharacterEncoding(\"gb2312\"); String username = req.getParameter(\"username\"); String pwd = req.getParameter(\"pwd\"); DB db = new DB(); HttpSession session = req.getSession(); User user = (User)session.getAttribute(\"user\"); if(user == null) { 26 user = db.checkUser(username, pwd); } session.setAttribute(\"user\ if(user != null) { ArrayList session.setAttribute(\"al\ res.sendRedirect(\"main.jsp\"); } else { res.sendRedirect(\"login.jsp\"); } } public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { 27 doPost(req, res); } } ccc.hut.servlet.RegisterServlet.java package ccc.hut.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import ccc.hut.database.DB; public class RegisterServlet extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) 28 throws ServletException, IOException { req.setCharacterEncoding(\"gb2312\"); res.setCharacterEncoding(\"gb2312\"); String username = req.getParameter(\"username\"); String password = req.getParameter(\"pwd\"); if(new DB().insertUser(username, password)) { res.sendRedirect(\"login.jsp\"); } } public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { doPost(req, res); } 29 } login.jsp <%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"gb2312\"%> 如果没有注册,请单击这里注册! 31 main.jsp <%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"gb2312\"%> <%@ page import=\"ccc.hut.javabean.*\" %> <%@ page import=\"ccc.hut.database.DB\" %> <%@ page import=\"java.util.*\" %> 34 register.jsp <%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"gb2312\"%> liuyan.jsp 36 <%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"gb2312\"%> 38 success.jsp <%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"gb2312\"%> 留言成功!单击这里返回主界面。 实验思考题 39 1、尝试通过调试手段在整个应用运行过程中,在开发环境中获取从浏览器获得的用户输入值,写出调试的过程。 2、尝试给jsp页面设置不同的字符编码,观察页面不同的显示效果。 3、设计实验步骤,验证post和get方法的不同之处。请列举实验步骤。 实验三 Struts2应用(“添加学生信息”项目) (实验课时:2 实验性质:设计) 实验名称:Struts2应用(“添加学生信息”项目) 实验目的和要求: 1. 使用MyEclipse 8.X IDE 进行添加学生信息的开发工作; 2. 通过实例开发,熟练掌握Struts 2标签的应用; 3. 熟练掌握Struts 2的工作流程及相关配置文件的配置; 4. 认真书写实验报告,如实填写各项实验内容。 实验内容和步骤: 1. 使用MyEclipse 8.X IDE 进行D添加学生信息的开发工作。根据书第三章3.7节 40 实例,完成界面开发工作。 2.填写好学生信息后单击“添加”按钮,完成添加。 3.充分应用Struts 2标签,熟练掌握它们的用法、Struts 2的工作流程及配置文件的正确配置。 4.将代码提交到SVN版本服务器中。 实验源代码: ccc.hut.action.SaveAction.java package ccc.hut.action; import ccc.hut.database.DBConn; import ccc.hut.javabean.Student; import com.opensymphony.xwork2.ActionSupport; public class SaveAction extends ActionSupport { private Student xs; public Student getXs() { 41 return xs; } public void setXs(Student xs) { this.xs = xs; } public String execute() throws Exception { DBConn db = new DBConn(); Student stu = new Student(); stu.setXh(xs.getXh()); stu.setXm(xs.getXm()); stu.setXb(xs.getXb()); stu.setZyId(xs.getZyId()); stu.setCssj(xs.getCssj()); 42 stu.setBz(xs.getBz()); if(db.saveStudent(stu)) { return SUCCESS; } else { return ERROR; } } } ccc.hut.database.DBConn.java package ccc.hut.database; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; 43 import ccc.hut.javabean.Student; public class DBConn { private static Connection ct; private PreparedStatement pstm; public DBConn() { try { Class.forName(\"com.mysql.jdbc.Driver\"); ct = DriverManager.getConnection(\"jdbc:mysql://localhost:3306/javaee\ \"root\ } catch(Exception ex) { ex.printStackTrace(); } } 44 // 添加学生 public boolean saveStudent(Student stu) { try { pstm = ct.prepareStatement(\"insert into xsb values(?, ?, ?, ?, ?, ?, ?, ?)\"); pstm.setString(1, stu.getXh()); pstm.setString(2, stu.getXm()); pstm.setString(3, stu.getXb()); pstm.setDate(4, stu.getCssj()); pstm.setInt(5, stu.getZyId()); pstm.setNull(6, java.sql.Types.INTEGER); pstm.setString(7, stu.getBz()); pstm.setNull(8, java.sql.Types.BINARY); pstm.executeUpdate(); 45 return true; } catch(Exception ex) { ex.printStackTrace(); return false; } } } ccc.hut.javabean.Student.java package ccc.hut.javabean; import java.sql.Date; public class Student { private String xh; private String xm; 46 private String xb; private int zyId; public int getZyId() { return zyId; } public void setZyId(int zyId) { this.zyId = zyId; } private Date cssj; public String getXh() { return xh; } public void setXh(String xh) { 47 this.xh = xh; } public String getXm() { return xm; } public void setXm(String xm) { this.xm = xm; } public String getXb() { return xb; } public void setXb(String xb) { this.xb = xb; 48 } public Date getCssj() { return cssj; } public void setCssj(Date cssj) { this.cssj = cssj; } public String getBz() { return bz; } public void setBz(String bz) { this.bz = bz; } 49 private String bz; } struts.xml 50 Struts stu.jsp <%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%> <%@ taglib uri=\"/struts-tags\" prefix=\"s\" %> <%@ taglib uri=\"/struts-dojo-tags\" prefix=\"sx\"%> 51 52 53 success.jsp <%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"utf-8\"%> 添加成功! 实验思考题 54 1、使用单步跟踪的方法,观察struts action对bean的赋值操作;将设置断点的代码列出,并在调试环境中设置表达式,观察其值的变化。将上述过程列举出来。 2、列举你在实验过程中遇到的问题,并指出问题产生的原因,及解决的办法。 3、请找出实验中所用的jsp页面文件在web服务器中对应的java文件,将文件对应列出,并示范性说明jsp文件与java源代码的对应关系。 实验四 Hibernate应用(“学生选课系统”项目) (实验课时:4 实验性质:设计) 实验名称:Hibernate应用(“学生选课系统”项目) 实验目的和要求: (1)理解并学习使用Hibernate框架 (2)通过实验,初步掌握Hibernate对数据库的映射,掌握*.hbm.xml文件的正确配置。 (3)初步掌握Struts2 与Hibernate的整合。 (3)认真书写实验报告,如实填写各项实验内容。 实验内容和步骤: 55 (1) 根据第四章4.2.1小节的步骤,实现对数据库的映射,并进行测试,验证其正确性。 (2) 根据4.5节的内容,完成“学生选课系统”,验证系统登录、个人信息查询、修改个人信息、浏览课程信息等功能 实验源代码: ccc.hut.action.KcAction.java package ccc.hut.action; import java.util.List; import java.util.Map; import ccc.hut.dao.KcDao; import ccc.hut.dao.impl.KcDaoImpl; import ccc.hut.javabean.Kcb; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; 56 public class KcAction extends ActionSupport { public String execute() throws Exception { KcDao kcDao = new KcDaoImpl(); List Map (Map)ActionContext.getContext().get(\"request\"); request.put(\"list\ return SUCCESS; } } ccc.hut.action.LoginAction.java package ccc.hut.action; import java.util.Map; 57 import ccc.hut.dao.LoginDao; import ccc.hut.dao.impl.LoginDaoImpl; import ccc.hut.javabean.Dlb; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport { private Dlb dlb; public Dlb getDlb() { return dlb; } public void setDlb(Dlb dlb) { this.dlb = dlb; } 58 public String execute() throws Exception { LoginDao dlDao = new LoginDaoImpl(); Dlb user = dlDao.validateUser(dlb.getXh(), dlb.getKl()); if(user != null) { Map session.put(\"user\ return SUCCESS; } else { return ERROR; } } } ccc.hut.action.XsAction.java 59 session = package ccc.hut.action; import java.io.File; import java.io.FileInputStream; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.ServletActionContext; import ccc.hut.dao.XsDao; import ccc.hut.dao.ZyDao; import ccc.hut.dao.impl.KcDaoImpl; 60 import ccc.hut.dao.impl.XsDaoImpl; import ccc.hut.dao.impl.ZyDaoImpl; import ccc.hut.javabean.Dlb; import ccc.hut.javabean.Kcb; import ccc.hut.javabean.Xsb; import ccc.hut.javabean.Zyb; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class XsAction extends ActionSupport { private XsDao xsDao; private Xsb xs; private Kcb kc; private File zpFile; // 用于获取照片 61 private Zyb zyb; public XsDao getXsDao() { return xsDao; } public void setXsDao(XsDao xsDao) { this.xsDao = xsDao; } public Xsb getXs() { return xs; } public void setXs(Xsb xs) { this.xs = xs; } 62 public Kcb getKc() { return kc; } public void setKc(Kcb kc) { this.kc = kc; } public File getZpFile() { return zpFile; } public void setZpFile(File zpFile) { this.zpFile = zpFile; } public Zyb getZyb() { 63 return zyb; } public void setZyb(Zyb zyb) { this.zyb = zyb; } public String execute() throws Exception { Map session = (Map)ActionContext.getContext().getSession(); Dlb user = (Dlb)session.get(\"user\"); xsDao = new XsDaoImpl(); Xsb xs = xsDao.getOneXs(user.getXh()); Map request = (Map)ActionContext.getContext().get(\"request\"); request.put(\"xs\ return SUCCESS; } public String getImage() throws Exception { xsDao = new XsDaoImpl(); // 得到照片的字节数组 byte[] zp = xsDao.getOneXs(xs.getXh()).getZp(); HttpServletResponse res = ServletActionContext.getResponse(); res.setContentType(\"image/jpeg\"); // 得到输出流,写到返回给客户端的response中 ServletOutputStream os = res.getOutputStream(); if(zp != null && zp.length>0) { for(int i=0; i } 65 } return NONE; } public String updateXsInfo() throws Exception { Map session = (Map)ActionContext.getContext().getSession(); Dlb user = (Dlb)session.get(\"user\"); xsDao = new XsDaoImpl(); ZyDao zyDao = new ZyDaoImpl(); List zys = zyDao.getAllZy(); Xsb xs = xsDao.getOneXs(user.getXh()); Map request = (Map)ActionContext.getContext().get(\"request\"); request.put(\"zys\ request.put(\"xs\ 66 return SUCCESS; } public String updateXs() throws Exception { xsDao = new XsDaoImpl(); ZyDao zyDao = new ZyDaoImpl(); Xsb stu = new Xsb(); stu.setXh(xs.getXh()); Set list = xsDao.getOneXs(xs.getXh()).getKcs(); stu.setKcs(list); stu.setXm(xs.getXm()); stu.setXb(xs.getXb()); stu.setCssj(xs.getCssj()); stu.setZxf(xs.getZxf()); 67 stu.setBz(xs.getBz()); Zyb zy = zyDao.getOneZy(zyb.getId()); stu.setZyb(zy); if(this.getZpFile() != null) { FileInputStream fis = new FileInputStream(this.getZpFile()); byte[] buffer = new byte[fis.available()]; fis.read(buffer); stu.setZp(buffer); } xsDao.updateXsInfo(stu); return SUCCESS; } public String getXsKcs() throws Exception { 68 Map session = (Map)ActionContext.getContext().getSession(); Dlb user = (Dlb)session.get(\"user\"); String xh = user.getXh(); Xsb xs = new XsDaoImpl().getOneXs(xh); Set list = xs.getKcs(); Map request = (Map)ActionContext.getContext().get(\"request\"); request.put(\"list\ return SUCCESS; } public String deleteKc() throws Exception { Map session = (Map)ActionContext.getContext().getSession(); Dlb user = (Dlb)session.get(\"user\"); String xh = user.getXh(); 69 xsDao = new XsDaoImpl(); Xsb xs2 = xsDao.getOneXs(xh); Set list = xs2.getKcs(); Iterator it = list.iterator(); while(it.hasNext()) { Kcb kc2 = (Kcb)it.next(); if(kc2.getKch().equals(kc.getKch())) { it.remove(); } } xs2.setKcs(list); xsDao.updateXsInfo(xs2); return SUCCESS; 70 } public String selectKc() throws Exception { Map session = (Map)ActionContext.getContext().getSession(); Dlb user = (Dlb)session.get(\"user\"); String xh = user.getXh(); xsDao = new XsDaoImpl(); Xsb xs3 = xsDao.getOneXs(xh); Set list = xs3.getKcs(); Iterator it = list.iterator(); while(it.hasNext()) { Kcb kc3 = (Kcb)it.next(); if(kc3.getKch().equals(kc.getKch())) { return ERROR; 71 } } list.add(new KcDaoImpl().getOneKc(kc.getKch())); xs3.setKcs(list); xsDao.updateXsInfo(xs3); return SUCCESS; } } ccc.hut.dao.KcDao.java package ccc.hut.dao; import java.util.List; import ccc.hut.javabean.Kcb; public interface KcDao { 72 public Kcb getOneKc(String kch); public List } ccc.hut.dao.LoginDao.java package ccc.hut.dao; import ccc.hut.javabean.Dlb; public interface LoginDao { public Dlb validateUser(String xh, String kl); } ccc.hut.dao.XsDao.java package ccc.hut.dao; import ccc.hut.javabean.Xsb; public interface XsDao { 73 public Xsb getOneXs(String xh); public void updateXsInfo(Xsb xs); } ccc.hut.dao.ZyDao.java package ccc.hut.dao; import java.util.List; import ccc.hut.javabean.Zyb; public interface ZyDao { public Zyb getOneZy(Integer zyid); public List } ccc.hut.dao.impl.KcDaoImpl.java package ccc.hut.dao.impl; 74 import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import ccc.hut.dao.KcDao; import ccc.hut.javabean.Kcb; import ccc.hut.javabean.Zyb; import ccc.hut.utils.HibernateSessionFactory; public class KcDaoImpl implements KcDao { public List try { Session session = HibernateSessionFactory.getSession(); Transaction ts = session.beginTransaction(); 75 List ts.commit(); HibernateSessionFactory.closeSession(); return list; } catch(Exception ex) { ex.printStackTrace(); return null; } } public Kcb getOneKc(String kch) { try { Session session = HibernateSessionFactory.getSession(); Transaction ts = session.beginTransaction(); 76 Query qy = session.createQuery(\"from Kcb where kch=?\"); qy.setParameter(0, kch); qy.setMaxResults(1); Kcb kc = (Kcb)qy.uniqueResult(); ts.commit(); session.clear(); return kc; } catch(Exception ex) { ex.printStackTrace(); return null; } } } 77 ccc.hut.dao.impl.LoginDaoImpl.java package ccc.hut.dao.impl; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import ccc.hut.dao.LoginDao; import ccc.hut.javabean.Dlb; import ccc.hut.utils.HibernateSessionFactory; public class LoginDaoImpl implements LoginDao { public Dlb validateUser(String xh, String kl) { try { Session session = HibernateSessionFactory.getSession(); Transaction ts = session.beginTransaction(); 78 Query qy = session.createQuery(\"from Dlb where xh=? and kl=?\"); qy.setParameter(0, xh); qy.setParameter(1, kl); qy.setMaxResults(1); Dlb dlb = (Dlb)qy.uniqueResult(); ts.commit(); if(dlb != null) { return dlb; } else { return null; } } catch(Exception ex) { ex.printStackTrace(); 79 return null; } } } ccc.hut.dao.impl.XsDaoImpl.java package ccc.hut.dao.impl; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import ccc.hut.dao.XsDao; import ccc.hut.javabean.Xsb; import ccc.hut.utils.HibernateSessionFactory; public class XsDaoImpl implements XsDao { 80 public Xsb getOneXs(String xh) { try { Session session = HibernateSessionFactory.getSession(); Transaction ts = session.beginTransaction(); Query qy = session.createQuery(\"from Xsb where xh=?\"); qy.setParameter(0, xh); qy.setMaxResults(1); Xsb xs = (Xsb)qy.uniqueResult(); ts.commit(); session.clear(); return xs; } catch(Exception ex) { ex.printStackTrace(); 81 return null; } } public void updateXsInfo(Xsb xs) { try { Session session = HibernateSessionFactory.getSession(); Transaction ts = session.beginTransaction(); session.update(xs); ts.commit(); HibernateSessionFactory.closeSession(); } catch(Exception ex) { ex.printStackTrace(); } 82 } } ccc.hut.dao.impl.ZyDaoImpl.java package ccc.hut.dao.impl; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import ccc.hut.dao.ZyDao; import ccc.hut.javabean.Xsb; import ccc.hut.javabean.Zyb; import ccc.hut.utils.HibernateSessionFactory; public class ZyDaoImpl implements ZyDao { 83 public List try { Session session = HibernateSessionFactory.getSession(); Transaction ts = session.beginTransaction(); List ts.commit(); HibernateSessionFactory.closeSession(); return list; } catch(Exception ex) { ex.printStackTrace(); return null; } } 84 public Zyb getOneZy(Integer zyid) { try { Session session = HibernateSessionFactory.getSession(); Transaction ts = session.beginTransaction(); Query qy = session.createQuery(\"from Zyb where id=?\"); qy.setParameter(0, zyid); qy.setMaxResults(1); Zyb zy = (Zyb)qy.uniqueResult(); ts.commit(); HibernateSessionFactory.closeSession(); return zy; } catch(Exception ex) { ex.printStackTrace(); 85 return null; } } } ccc.hut.javabean.Dlb.java package ccc.hut.javabean; /** * Dlb entity. @author MyEclipse Persistence Tools */ public class Dlb implements java.io.Serializable { // Fields private Integer id; private String xh; 86 private String kl; // Constructors /** default constructor */ public Dlb() { } /** minimal constructor */ public Dlb(Integer id) { this.id = id; } /** full constructor */ public Dlb(Integer id, String xh, String kl) { this.id = id; this.xh = xh; 87 this.kl = kl; } // Property accessors public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public String getXh() { return this.xh; } public void setXh(String xh) { 88 this.xh = xh; } public String getKl() { return this.kl; } public void setKl(String kl) { this.kl = kl; } } ccc.hut.javabean.Kcb.java package ccc.hut.javabean; import java.util.HashSet; import java.util.Set; /** * Kcb entity. @author MyEclipse Persistence Tools */ public class Kcb implements java.io.Serializable { // Fields private String kch; private String kcm; private Short kxxq; private Integer xs; private Integer xf; private Set xss = new HashSet(); // Constructors public Set getXss() { 90 return xss; } public void setXss(Set xss) { this.xss = xss; } /** default constructor */ public Kcb() { } /** minimal constructor */ public Kcb(String kch) { this.kch = kch; } /** full constructor */ 91 public Kcb(String kch, String kcm, Short kxxq, Integer xs, Integer xf) { this.kch = kch; this.kcm = kcm; this.kxxq = kxxq; this.xs = xs; this.xf = xf; } // Property accessors public String getKch() { return this.kch; } public void setKch(String kch) { this.kch = kch; 92 } public String getKcm() { return this.kcm; } public void setKcm(String kcm) { this.kcm = kcm; } public Short getKxxq() { return this.kxxq; } public void setKxxq(Short kxxq) { this.kxxq = kxxq; } 93 public Integer getXs() { return this.xs; } public void setXs(Integer xs) { this.xs = xs; } public Integer getXf() { return this.xf; } public void setXf(Integer xf) { this.xf = xf; } } 94 ccc.hut.javabean.Xsb.java package ccc.hut.javabean; import java.util.Date; import java.util.HashSet; import java.util.Set; /** * Xsb entity. @author MyEclipse Persistence Tools */ public class Xsb implements java.io.Serializable { // Fields private String xh; private String xm; private String xb; 95 private Date cssj; private Zyb zyb; private Integer zxf; private String bz; private byte[] zp; private Set kcs = new HashSet(); // Constructors public Zyb getZyb() { return zyb; } public void setZyb(Zyb zyb) { this.zyb = zyb; } 96 public Set getKcs() { return kcs; } public void setKcs(Set kcs) { this.kcs = kcs; } /** default constructor */ public Xsb() { } /** minimal constructor */ public Xsb(String xh) { this.xh = xh; } 97 /** full constructor */ public Xsb(String xh, String xm, String xb, Date cssj, Zyb zyb, Integer zxf, String bz, byte[] zp) { this.xh = xh; this.xm = xm; this.xb = xb; this.cssj = cssj; this.zyb = zyb; this.zxf = zxf; this.bz = bz; this.zp = zp; } // Property accessors 98 public String getXh() { return this.xh; } public void setXh(String xh) { this.xh = xh; } public String getXm() { return this.xm; } public void setXm(String xm) { this.xm = xm; } public String getXb() { 99 return this.xb; } public void setXb(String xb) { this.xb = xb; } public Date getCssj() { return this.cssj; } public void setCssj(Date cssj) { this.cssj = cssj; } public Integer getZxf() { return this.zxf; 100 } public void setZxf(Integer zxf) { this.zxf = zxf; } public String getBz() { return this.bz; } public void setBz(String bz) { this.bz = bz; } public byte[] getZp() { return this.zp; } 101 public void setZp(byte[] zp) { this.zp = zp; } } ccc.hut.javabean.Zyb.java package ccc.hut.javabean; /** * Zyb entity. @author MyEclipse Persistence Tools */ public class Zyb implements java.io.Serializable { // Fields private Integer id; private String zym; 102 private Integer rs; private String fdy; // Constructors /** default constructor */ public Zyb() { } /** full constructor */ public Zyb(String zym, Integer rs, String fdy) { this.zym = zym; this.rs = rs; this.fdy = fdy; } // Property accessors 103 public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public String getZym() { return this.zym; } public void setZym(String zym) { this.zym = zym; } public Integer getRs() { 104 return this.rs; } public void setRs(Integer rs) { this.rs = rs; } public String getFdy() { return this.fdy; } public void setFdy(String fdy) { this.fdy = fdy; } } ccc.hut.javabean.Dlb.hbm.xml 105 \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\"> 106 ccc.hut.javabean.kcb.hbm.xml \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\"> 108 class=\"ccc.hut.javabean.Xsb\" 109 ccc.hut.javabean.xsb.hbm.xml \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\"> 110 111 112 class=\"ccc.hut.javabean.Kcb\" 113 ccc.hut.javabean.zyb.hbm.xml \"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\"> 114 ccc.hut.utils.HibernateSessionFactory.java 115 package ccc.hut.utils; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.cfg.Configuration; /** * Configures and provides access to Hibernate sessions, tied to the * current thread of execution. Follows the Thread Local Session * pattern, see {@link http://hibernate.org/42.html }. */ public class HibernateSessionFactory { /** * Location of hibernate.cfg.xml file. * Location should be on the classpath as Hibernate uses 116 * #resourceAsStream style lookup for its configuration file. * The default classpath location of the hibernate config file is * in the default package. Use #setConfigFile() to update * the location of the configuration file for the current session. */ private static String CONFIG_FILE_LOCATION = \"/hibernate.cfg.xml\"; private static final ThreadLocal private static Configuration configuration = new Configuration(); private static org.hibernate.SessionFactory sessionFactory; private static String configFile = CONFIG_FILE_LOCATION; static { try { configuration.configure(configFile); 117 new sessionFactory = configuration.buildSessionFactory(); } catch (Exception e) { System.err .println(\"%%%% Error Creating SessionFactory %%%%\"); e.printStackTrace(); } } private HibernateSessionFactory() { } /** * Returns the ThreadLocal Session instance. Lazy initialize * the * 118 * @return Session * @throws HibernateException */ public static Session getSession() throws HibernateException { Session session = (Session) threadLocal.get(); if (session == null || !session.isOpen()) { if (sessionFactory == null) { rebuildSessionFactory(); } session = (sessionFactory != null) ? sessionFactory.openSession() : null; threadLocal.set(session); } 119 return session; } /** * Rebuild hibernate session factory * */ public static void rebuildSessionFactory() { try { configuration.configure(configFile); sessionFactory = configuration.buildSessionFactory(); } catch (Exception e) { System.err .println(\"%%%% Error Creating SessionFactory %%%%\"); 120 e.printStackTrace(); } } /** * Close the single hibernate session instance. * * @throws HibernateException */ public static void closeSession() throws HibernateException { Session session = (Session) threadLocal.get(); threadLocal.set(null); if (session != null) { session.close(); 121 } } /** * return session factory * */ public static org.hibernate.SessionFactory getSessionFactory() { return sessionFactory; } /** * return session factory * * session factory will be rebuilded in the next call 122 */ public static void setConfigFile(String configFile) { HibernateSessionFactory.configFile = configFile; sessionFactory = null; } /** * return hibernate configuration * */ public static Configuration getConfiguration() { return configuration; } } 123 Hibernate.cfg.xml \"-//Hibernate/Hibernate Configuration DTD 3.0//EN\" \"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd\"> org.hibernate.dialect.MySQLDialect 124 com.mysql.jdbc.Driver Struts.xml 125 126 class=\"ccc.hut.action.XsAction\" method=\"getImage\"> name=\"getXsKcs\" class=\"ccc.hut.action.XsAction\" 127 class=\"ccc.hut.action.XsAction\" method=\"deleteKc\"> name=\"selectKc\" class=\"ccc.hut.action.XsAction\" Jsp页面代码省略。 128 实验思考题 1、尝试使用不同的主键生成策略及对应的配置文件来完成数据持久化; 2、尝试使用不同的底层数据库(MySQL、Microsoft SQL Server)来应用Hibernate完成数据持久化工作。 3、如果相应的Bean对象没有完整的getter/setter方法,在对数据进行持久化时,会有什么错误出现?列举错误提示代码。 实验五 Spring应用(SSH整合) (实验课时:4 实验性质:设计) 实验名称:Spring应用(SSH整合) 实验目的和要求: (1)理解并学习使用Spring框架 (2)通过实验,初步掌握SSH的整合步骤 (3)认真书写实验报告,如实填写各项实验内容。 实验内容和步骤: 129 (1)复习第6章的内容,根据本章介绍的步骤,完成“学生成绩管理系统”,运行项目。 (2)验证登录界面未登录时的自动跳转功能; (3)完成学生信息录入功能; (4)完成学生详细信息查询功能; (5)完成学生成绩查询功能; (6)总结SSH的整合应用步骤。 实验源代码: 见教材P221 – 276页 实验思考题 1、不使用Spring来管理Hibernate的相关配置,应如何处理? 2、SSH的架包冲突会导致什么问题?列举问题,并尝试找出解决方案。 3、设计一个实验,验证在你写的代码中确实使用到了构造注入和设置注入两种方式。写出关键部分的源代码,画出实际运行过程的效果示意图。 130 实验六 Ajax应用(Ajax的基础应用) (实验课时:2 实验性质:设计) 实验名称:Ajax应用(Ajax的基础应用) 实验目的和要求: (1)理解并学习使用Ajax的基本知识 (2)通过实验,初步掌握Ajax的工作原理。 (3)认真书写实验报告,如实填写各项实验内容。 实验内容和步骤: (1) 根据第7章的相关内容,实现Ajax异步机制在项目里的应用,并进行测试,验证其正确性。 实验步骤略。 注:可实验可选做。 131 这里是首页。
添加学生信息
SessionFactory if needed.
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务