您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页Java EE技术 实验指导书

Java EE技术 实验指导书

来源:五一七教育网
Java EE技术

实验指导书

计算机与通信学院

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

在框架中显示页面

<p>6<p><body><p>此网页使用了框架,但你的浏览器不支持。<p></body><p>

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 findLyInfo() {

try {

ArrayList al = new 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 al = db.findLyInfo();

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\"%>

简易留言板

30

用户登录
登录名:
密码:

如果没有注册,请单击这里注册!

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.*\" %>

留言板信息

32

<%

ArrayList al = (ArrayList)session.getAttribute(\"al\");

Iterator it = al.iterator();

while(it.hasNext()) {

LyTable ly = (LyTable)it.next();

%>

33

<%

}

%>

所有留言信息
留言人姓名留言时间留言标题留言内容
<%=new DB().getUserName(ly.getUserId())%><%= ly.getDate().toString() %><%= ly.getTitle() %><%= ly.getContent() %>


34

register.jsp

<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"gb2312\"%>

留言板

35

用户注册
登录名:
密码:

liuyan.jsp

36

<%@ page language=\"java\" import=\"java.util.*\" pageEncoding=\"gb2312\"%>

留言板

37

填写留言信息
留言标题
留言内容

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

/success.jsp

/stu.jsp

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

label=\"性别\" >
displayFormat=\"yyyy-mm-dd\">

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 list = kcDao.getAllKc();

Map request =

(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 (Map)ActionContext.getContext().getSession();

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; ios.write(zp[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 getAllKc();

}

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 getAllZy();

}

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 getAllKc() {

try {

Session session = HibernateSessionFactory.getSession();

Transaction ts = session.beginTransaction();

75

List list = session.createQuery(\"from Kcb order by kch\").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 getAllZy() {

try {

Session session = HibernateSessionFactory.getSession();

Transaction ts = session.beginTransaction();

List list = session.createQuery(\"from Zyb\").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

fetch=\"select\" cascade=\"all\" lazy=\"false\">

姓名

性别

111

出生时间

总学分

112

备注

照片

column=\"KCH\">

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 threadLocal = 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 SessionFactory if needed.

*

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

name=\"connection.url\">jdbc:mysql://localhost:3306/javaee

root

124

com.mysql.jdbc.Driver

mySql

Struts.xml

125

/main.jsp

/login.jsp

/xsInfo.jsp

name=\"getImage\"

126

class=\"ccc.hut.action.XsAction\"

method=\"getImage\">

method=\"updateXsInfo\">

/updateXsInfo.jsp

method=\"updateXs\">

/updateXs_success.jsp

method=\"getXsKcs\">

name=\"getXsKcs\" class=\"ccc.hut.action.XsAction\"

/xsKcs.jsp

name=\"deleteKc\"

127

class=\"ccc.hut.action.XsAction\"

method=\"deleteKc\">

/deleteKc_success.jsp

/allKc.jsp

method=\"selectKc\">

name=\"selectKc\" class=\"ccc.hut.action.XsAction\"

/selectKc_success.jsp

/selectKc_fail.jsp

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

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务