学生选课系统项目介绍及需求
第一天 笔记:
数据库基础知识主键:Primary Key ,在表中唯一确定该条记录的字段
外键:Foreign Key ,引用(参照)另外一个表中的主键字段
图书表
id 图书名称类别 价格
1 Java编程思想 1 50
2 Hibernate入门 1 60
3 成功有方法2 30
id是主键,类别是外键,
主表(在关联关系中,包含主键字段的表叫主表),从表(在关联关系中,包含外键字段的表叫从表)
图书表是从表(因为它包含类别的外键)
图书类别表是主表(因为它包含了类别的主键)
图书类别表
id 名称
1 计算机
2 励志
3 地理
4 历史
表设计不合理,会产生的问题
1.重复问题,2.删除问题 3.修改的问题
满足三范式
多表关联查询
select 图书名称,名称,价格 from 图书表,图书类别表 where 图书表.类别=图书类别表.id
select a.图书名称,b.名称 as 图书类别,a.价格 from 图书表 a,图书类别表 b where a.类别=b.id
curricula 数据库
=========================================
为了降低复杂性,不考虑上课时间问题
1.学生在同一时间不能同时上两门课程
2.教师在同一时间不能讲授两门课程
3.同一个教室在同一时间不可能开两门课程
不考虑学生班级的问题,认为一个年级只有一个班级。
任何一个学生,可以选任何一个老师的课。
========================================
实体(entity)= 模型(model) = 对象(object)
学生
Student(id,name,sex,pwd,phone,grade,photo)
紧急联系人
Contact(id,name,sex,relation,phone)
教室
room(id,name,address)
课程
class(id,name,type,hours)
教师
teacher(id,name,sex,phone)
双向关系和单向关系 联系人和学生
1.学生-紧急联系人(一对一)
站在学生角度:getContact(),站在联系人角度:getStudent()
2.学生-课程(多对多):一个学生可以选择多个课程,一个课程,可以被多个学生选择。
站在学生角度:getClasses(),站在课程角度:getStudents()
=======================================================================
3.老师-课程(一对多):一个老师,可以上多门课程,一门课程只能一个老师上。
站在老师角度:getClasses() 站在课程角度:getTeacher()
4.教室-课程(一对多):一个教室,可以上多门课程,一门课程只能在一个教室上。
站在教室角度:getClasses(),站在课程角度:getRoom()
学生和老师不直接产生关系
学生和教室不直接产生关系
教室和教师不直接产生关系
第二天 笔记:
注册功能:通过注册增加学生
学生注册时,只需要输入用户名和密码,其他信息在修改页面上输入。
管理员可以增加课程,增加教师,为课程指定教师。
学生可以选课。
Student(id,name,sex,pwd,phone,grade,photo)
1. 主页面 - main.jsp
注册(register.jsp)
登录(login.jsp) (修改信息-modify.jsp)
选课(choose.jsp)
进入后台管理(admin.jsp)
main.jsp
<body>
主页面
<br/>
<br/>
<a href="${pageContext.request.contextPath}/admin.jsp">进入后台管理</a>
<br/>
<br/>
<a href="${pageContext.request.contextPath}/register.jsp">注册</a> <a href="${pageContext.request.contextPath}/login.jsp">登录</a> <a href="${pageContext.request.contextPath}/choose.jsp">选课</a>
</body>
register.jsp
<body>
注册
<br/>
<br/>
<form method="post" action="">
<table>
<tr><td>用户名:</td><td><input type="text"/></td></tr>
<tr><td>密码:</td><td><input type="password"/></td></tr>
<tr>
<td>重复密码:</td>
<td><input type="password"/></td>
</tr>
<tr>
<td>性别</td>
<td><input type="radio" value="男" checked>
男
<input type="radio" value="女">
女</td>
</tr>
<tr>
<td>年级:</td>
<td>
<select >
<option value="一年级">一年级</option>
<option value="二年级">二年级</option>
<option value="三年级">三年级</option>
<option value="四年级">四年级</option>
</select></td>
</tr>
<tr><td colspan="2"><input type="submit" value="提交"/></td></tr>
</table>
</form>
<br/>
<br/>
<a href="${pageContext.request.contextPath}/main.jsp">返回主页</a>
</body>
login.jsp
<body>
登录
<br/>
<br/>
<form action="" method="post">
<table>
<tr><td>用户名:</td><td><input type="text"/></td></tr>
<tr><td>密码:</td><td><input type="password" /></td></tr>
<tr><td colspan="2"><input type="submit" value="提交"/></td></tr>
</table>
</form>
<br/>
<br/>
<a href="${pageContext.request.contextPath}/main.jsp">返回主页</a>
</body>
admin.jsp
<body>
后台管理
<br/>
<br/>
<br/>
<br/>
<a href="${pageContext.request.contextPath}/main.jsp">返回主页</a>
</body>
choose.jsp
<body>
选课
<br/>
<br/>
<a href="${pageContext.request.contextPath}/main.jsp">返回主页</a>
</body>
重复密码不提交,在表单变量中,就不能指定其name属性。
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="/xml/ns/j2ee"
xmlns:xsi="/2001/XMLSchema-instance"
xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Struts Blank</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
======================================================================
HibernateUtil.java
package common;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;public class HibernateUtil {private static SessionFactory sessionFactory;private static SessionFactory buildSessionFactory() {try {Configuration configuration = new Configuration();configuration.configure("hibernate.cfg.xml");ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);return sessionFactory;} catch (Throwable ex) {throw new ExceptionInInitializerError(ex);}}public static SessionFactory getSessionFactory() {if (sessionFactory == null)sessionFactory = buildSessionFactory();return sessionFactory;}public static Session openSession() {return getSessionFactory().openSession();}}
Student.java
package model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;@Entitypublic class Student {private int id;private String name;private String pwd;private String phone;private String grade;private String photo;@Id@GeneratedValuepublic 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;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getGrade() {return grade;}public void setGrade(String grade) {this.grade = grade;}public String getPhoto() {return photo;}public void setPhoto(String photo) {this.photo = photo;}}
Student.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="model"><class name="Student" table="student"><id name="id" column="id"><generator class="native"/></id><property name="name"></property><property name="pwd" column="pwd" type="string" length="50"></property><property name="phone" length="50"></property><property name="photo" length="150"></property></class></hibernate-mapping>
hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!-- Database connection settings --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/curricula</property> <property name="connection.username">root</property> <property name="connection.password">12345678</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property><!-- Drop and re-create the database schema on startup --><property name="hbm2ddl.auto">update</property><mapping class="model.Student"/></session-factory></hibernate-configuration>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><constant name="struts.devMode" value="true" /> </struts>
==================================================================
hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!-- Database connection settings --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/curricula</property> <property name="connection.username">root</property> <property name="connection.password">12345678</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property><!-- Drop and re-create the database schema on startup --><property name="hbm2ddl.auto">update</property><mapping class="model.Student"/> //配置数据库</session-factory></hibernate-configuration>
第三天 笔记:
HQL语法
select count(*) from users
SQL:查找数据库记录
HQL=Hibernate Query Language
查找对象
/xinyu0100/article/details/5385989
/content/11/0419/15/1861654_110769193.shtm
java.lang.NoSuchMethodException: action.StudentAction.check()
没有这个方法
<s:radio/> 标签
/struts2-radio-button-label-s-radio-use-and-set-the-default-value.html
<s:select/> 标签
/q3498233/article/details/7057230
上传文件的表单设置
enctype="multipart/from-data" method="post"
<img id="image" name="image" src="" />
<input type="file" name="file" οnchange="setImage(this)"/>
</body>
<script language="javascript">
function setImage(obj){
image.src = obj.value;
}
</script>
设置图片宽度
只设置宽度,将会按比例缩放
<style type="text/css">
#pic
{
width:300px;
}
</style>
添加错误信息显示的div id="msg"
1.判断旧密码是否正确
action:checkpwd
/s/blog_4f925fc30100la36.html
$.get,$.post,$.ajax
同步和异步
同步:命令发出以后,等待命令执行完毕,再继续执行后面的命令。
默认是异步。
2.上传文件保存的问题
File image;
String imageContentType
String imageFileName
快捷键 Alt+Shift+S r
修改信息的action为modify
1.为上传的图片生成唯一的名字
根据日期,上传文件的名字(扩展名),来计算目录名
Calendar cal=Calendar.getInstance();
int hour=cal.get(Calendar.HOUR_OF_DAY); 24小时制,12小时用HOUR
上传文件存放格式
uploadfiles//03/1512005.jpg
getRealPath的说明
/jxst051665/article/details/4350994
创建目录和生成文件名的代码
=============================================================
//如果保存上传文件的根目录不存在,创建根目录
//如果保存上传文件的根目录不存在,创建根目录
String fileName="uploadfiles";
HttpServletRequest req=ServletActionContext.getRequest();
fileName=req.getServletContext().getRealPath("")+fileName;
File file=new File(fileName);
if(!file.exists())
{
file.mkdir();
}
Calendar cal=Calendar.getInstance();
//如果年的目录不存在,创建年的目录
int year=cal.get(Calendar.YEAR);
fileName=fileName + "\\" + year;
file=new File(fileName);
if(!file.exists())
{
file.mkdir();
}
//如果月份不存在,创建月份的目录
int month=cal.get(Calendar.MONTH)+1;
fileName=fileName+"\\";
if(month<10)
{
fileName=fileName+"0";
}
fileName=fileName+month;
file=new File(fileName);
if(!file.exists())
{
file.mkdir();
}
//生成文件名的日部分
int day=cal.get(Calendar.DAY_OF_MONTH);
fileName=fileName+"\\";
if(day<10)
{
fileName=fileName+"0";
}
fileName=fileName+day;
//生成文件名的小时部分
int hour=cal.get(Calendar.HOUR_OF_DAY);
if(hour<10)
{
fileName=fileName+"0";
}
fileName=fileName+hour;
//生成文件名的分钟部分
int minute=cal.get(Calendar.MINUTE);
if(minute<10)
{
fileName=fileName+"0";
}
fileName=fileName+minute;
//生成文件名的秒部分
int second=cal.get(Calendar.SECOND);
if(second<10)
{
fileName=fileName+"0";
}
fileName=fileName+second;
//生成文件名的毫秒部分
int millisecond=cal.get(Calendar.MILLISECOND);
if(millisecond<10)
{
fileName=fileName+"0";
}
if(millisecond<100)
{
fileName=fileName+"0";
}
fileName=fileName+millisecond;
//生成文件的扩展名部分
fileName=fileName+ imageFileName.substring(imageFileName.indexOf(".")) ;
System.out.println(fileName);
=============================================================
2.保存上传的文件
3.设置student的photo属性
4.保存student的信息
saveOrUpdate
5.返回主页面
两个问题自己去实现
1.修改的时候,不想修改图片。
2.修改图片时,应该先删除之前的图片。
进一步完善用户基本信息修改的问题
1.不想修改密码的问题。
2.不想修改图片的问题。
3.修改图片时,如果之前已经上传过图片,应该先删除之前的图片。
/xinyu0100/article/details/5385989
==========================================================================
第四天 笔记:
添加session为空的判断
Student(id,name,sex,pwd,phone,grade,photo)
紧急联系人
Contact(id,name,sex,relation,phone)
1.学生-紧急联系人(一对一)
站在学生角度:getContact(),站在联系人角度:getStudent()
1.编写联系人的页面
<body>
<form action="" method="post">
<table>
<tr><td>姓名:</td><td><input type="text"/></td></tr>
<tr><td>性别:</td><td><input type="text"/></td></tr>
<tr><td>关系:</td><td><input type="text"/></td></tr>
<tr><td>电话:</td><td><input type="text"/></td></tr>
<tr><td colspan="2"><input type="submit" value="提交"/></td></tr>
</table>
</form>
<br/>
<br/>
<a href="${pageContext.request.contextPath}/main.jsp">返回主页</a>
</body>
2.添加超链接,指向联系人页面
3.分析一下数据库表的关系
在学生表中,增加一个外键cid,指向Contact 的 id
Student(id,cid,name,sex,pwd,phone,grade,photo) 从表
Contact(id,name,sex,relation,phone)主表
4.实现3的功能,hibernate代码应该怎么写?
如果想在student表中增加指向contact表的一个字段,那么就在Student类中增加一个属性Contact
@OneToOne
@JoinColumn(name="cid") alt+/
单向关系
双相关系
@OneToOne(mappedBy="contact")
=================================功能已全部实现=================================
action 包
ContactAction.java
package action;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;import dao.ContactDAO;import dao.StudentDAO;import model.Contact;import model.Student;public class ContactAction extends ActionSupport {private Contact contact;private ContactDAO dao =new ContactDAO();private StudentDAO sdao =new StudentDAO();public Contact getContact() {return contact;}public void setContact(Contact contact) {this.contact = contact;}public String update() {//保存contactreturn updateit();}public String modify(){return updateit();}private String updateit() {dao.update(contact);HttpServletRequest request= ServletActionContext.getRequest();HttpSession session= request.getSession();Student student= (Student) session.getAttribute("STUDENT");student.setContact(contact);//contact.setStudent(student);//这种得不到uid(保存谁就要设置谁)//保存studentsdao.update(student);return "main";}}
CourseAction.java
package action;import java.io.IOException;import java.io.PrintWriter;import java.util.Iterator;import java.util.List;import java.util.Set;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;import common.Pager;import dao.CourseDAO;import dao.RoomDAO;import dao.StudentDAO;import dao.TeacherDAO;import model.Course;import model.Room;import model.Student;import model.Teacher;public class CourseAction {private RoomDAO rdao =new RoomDAO();private CourseDAO dao = new CourseDAO();private TeacherDAO tdao =new TeacherDAO();private Teacher teacher;private Course course;private Room room;public Room getRoom() {return room;}public void setRoom(Room room) {this.room = room;}public Teacher getTeacher() {return teacher;}public void setTeacher(Teacher teacher) {this.teacher = teacher;}private int page;public int getPage() {return page;}public void setPage(int page) {this.page = page;}public Course getCourse() {return course;}public void setCourse(Course course) {this.course = course;}public String main(){prepareDate();return "coursemain";}private void prepareDate() {HttpServletRequest request= ServletActionContext.getRequest();//显示所有教室信息if(page==0)//不传页码时,默认显示第0页{page=1;}Pager pager =new Pager();dao.initpage(pager);//若果当前页大于总页数,就让他等于总页数if(page>pager.getPageCount()){page=pager.getPageCount();}if(ServletActionContext.getContext().get("ADD")!=null){page=pager.getPageCount();}pager.setPageNo(page);StringBuilder str =new StringBuilder();List<Course> list=dao.getcourse(pager);//用类调用时为了少定义变量//判断是否有教室if(list.size()>0){ActionContext ax= ServletActionContext.getContext();ax.put("TEACHERS", tdao.getteacher());ax.put("ROOMS", rdao.getRooms(pager));ax.put("COURSE", list);//构建分页导航按钮int btns=pager.getBtnCount();btns=btns/2;int start =page-btns;int end =page+btns;if(start<1){start=1;end =start +2*btns;}if(end>pager.getPageCount()){start =end -2*btns;end=pager.getPageCount();}if(start<1){start =1;}for(int i=start;i<=end;i++){str.append("<a href='"+request.getContextPath() +"/course/main?page=" +i+"'>");if(i==page){str.append("<font color ='red'><b>");str.append(i);str.append("</b></font>");}else{str.append(i);}str.append("</a>");str.append("");}str.append("<br>");ax.put("NAVBAR", str.toString());//保存数据System.out.println(str.toString());}}public String imain(){prepareDate();return "initmain";}public String cmain() throws IOException{//如果没有登录跳转到login.jsp//办法一//Object object= ActionContext.getContext().getSession().get("STUDENT");//if(object==null)//{//HttpServletResponse response= ServletActionContext.getResponse();//HttpServletRequest request= ServletActionContext.getRequest();//response.sendRedirect(request.getContextPath()+"/login.jsp");//return null;//}//办法二HttpServletResponse response= ServletActionContext.getResponse();HttpServletRequest request= ServletActionContext.getRequest();Object object= request.getSession().getAttribute("STUDENT");if(object==null){response.sendRedirect(request.getContextPath()+"/login.jsp");return null;}prepareDate();return "choosemain";}public String update(){return updateIt();}private String updateIt() {if(course.getId()==0){ServletActionContext.getContext().put("ADD", 1);}dao.update(course);return main();}public String modify(){return updateIt();}public String delet(){dao.deletcourse(course);return null;}public String get(){course= dao.get(course);HttpServletResponse response= ServletActionContext.getResponse();response.setCharacterEncoding("utf-8");try {PrintWriter out =response.getWriter();out.print(course.getId()+"!"+course.getName()+"!"+course.getType()+"!"+course.getHours());} catch (IOException e) {e.printStackTrace();}return null;}public String updateTeacher(){teacher=tdao.get(teacher);course=dao.get(course);course.setTeacher(teacher);dao.update(course);return null;}public String updateRoom(){room =rdao.get(room);course=dao.get(course);course.setRoom(room);dao.update(course);return null;}public String checkesSelect(){Student student= (Student) ActionContext.getContext().getSession().get("STUDENT");Set<Course> courses= student.getCourses();Iterator<Course> it= courses.iterator();boolean flag=false;while(it.hasNext()){Course courseit= it.next();if(courseit.getId()==course.getId()){flag=true;break;}}HttpServletResponse response= ServletActionContext.getResponse();try {PrintWriter out= response.getWriter();out.print(flag);} catch (IOException e) {e.printStackTrace();}return null;}public String checkit(){//Student没有与数据库中的Student关联,要去关联Student student= (Student) ActionContext.getContext().getSession().get("STUDENT");StudentDAO sdao =new StudentDAO();student= sdao.check(student);//course=dao.get(course);//Set<Course> courses= student.getCourses();Iterator<Course> it= courses.iterator();boolean flag=false;Course courseit=null;while(it.hasNext()){courseit= it.next();if(courseit.getId()==course.getId()){flag=true;break;}}if(flag)//有选择这门课就删除{student.getCourses().remove(courseit);}else//没有这门课就添加{student.getCourses().add(course);}sdao.update(student);return null;}}
RoomAction.java
package action;import java.io.IOException;import java.io.PrintWriter;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;import common.Pager;import dao.RoomDAO;import model.Room;public class RoomAction extends ActionSupport{RoomDAO dao=new RoomDAO();private int page;public int getPage() {return page;}public void setPage(int page) {this.page = page;}private Room room;public String main(){HttpServletRequest request=ServletActionContext.getRequest();//准备需要显示的数据if(page==0){page=1;}Pager pager =new Pager();dao.initpage(pager);//如果当前页大于总页数,就让他等于总页数if(page>pager.getPageCount()){page=pager.getPageCount();}if(ServletActionContext.getContext().get("ADD")!=null){page=pager.getPageCount();}pager.setPageNo(page);StringBuilder str=new StringBuilder();List<Room>list=dao.getRooms(pager); //当前页数if(list.size()>0){ActionContext ctx=ServletActionContext.getContext();ctx.put("ROOMS",list);//每页显示多少 分页导航按钮int btns=pager.getBtnCount();btns=btns/2;int start=page-btns;int end=page+btns;if(start<1){start=1;end=start+2*btns;}if(end>pager.getPageCount()){start=end-2*btns;end=pager.getPageCount();}if(start<1){start=1;}for(int i=start;i<=end;i++){str.append("<a href='" + request.getContextPath() + "/room/main?page=" + i + "'>");if(i==page){str.append("<font color ='red'><b>");str.append(i);str.append("</b></font>");}else{str.append(i);}str.append("</a>");str.append("");}str.append("<br>");ctx.put("NAVBAR", str.toString());//保存数据System.out.println(str.toString());}return "roommain";}public Room getRoom() {return room;}public void setRoom(Room room) {this.room = room;}public String update(){//添加room为零 修改大于0return updateIt();}private String updateIt() {if(room.getId()==0){ServletActionContext.getContext().put("ADD", 1);}dao.update(room);return main();}public String modify(){return updateIt();}public String delet(){dao.delet(room);return null;}public String get(){room=dao.get(room);HttpServletResponse response=ServletActionContext.getResponse();response.setCharacterEncoding("utf-8");try {PrintWriter out=response.getWriter();out.print(room.getId() + "!" + room.getName() + "!" + room.getAddress());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}}
StudentAction.java
package action;import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.util.Calendar;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import mons.io.FileUtils;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;import dao.StudentDAO;import model.Student;public class StudentAction {private Student student;private File image;private String imageFileName;private String imageContentType;StudentDAO dao=new StudentDAO();public Student getStudent() {return student;}public File getImage() {return image;}public void setImage(File image) {this.image = image;}public String getImageFileName() {return imageFileName;}public void setImageFileName(String imageFileName) {this.imageFileName = imageFileName;}public String getImageContentType() {return imageContentType;}public void setImageContentType(String imageContentType) {this.imageContentType = imageContentType;}public void setStudent(Student student) {this.student = student;}//处理方法public String add(){dao.update(student);return "main";}public String check(){Student stud=dao.check(student); //表单上的传进去if(stud==null) //如果为空就转 login{return "login";}/*HttpServletRequest request=ServletActionContext.getRequest();HttpSession session=request.getSession();session.setAttribute("STUDENT", stud);*/ActionContext.getContext().getSession().put("STUDENT", stud); //把信息存到 sessionreturn "main";}public String checkpwd() throws IOException{String result="0";if(dao.checkpwd(student)){result="1";}HttpServletResponse response=ServletActionContext.getResponse();PrintWriter out=response.getWriter();out.print(result);return null;}public String update() throws IOException{return updateit();}public String modify() throws IOException{return updateit();}private String updateit() throws IOException {HttpServletRequest req=ServletActionContext.getRequest();if(image!=null){//如果保存上传文件的根目录不存在,创建根目录String fileName="uploadfiles";String url=fileName;fileName=req.getServletContext().getRealPath("")+fileName; //得到网站根目录File file=new File(fileName); //包装文件夹if(!file.exists()){file.mkdir();}Calendar cal=Calendar.getInstance();//如果年的目录不存在,创建年的目录int year=cal.get(Calendar.YEAR);fileName=fileName + "\\" + year;url=url+"\\"+year;file=new File(fileName);if(!file.exists()){file.mkdir();}//如果月份不存在,创建月份的目录int month=cal.get(Calendar.MONTH)+1;fileName=fileName+"\\";url=url+"\\";if(month<10){fileName=fileName+"0";}fileName=fileName+month;url=url+month;file=new File(fileName);if(!file.exists()){file.mkdir();}//生成文件名的日部分int day=cal.get(Calendar.DAY_OF_MONTH);fileName=fileName+"\\";url=url+"\\";if(day<10){fileName=fileName+"0";}fileName=fileName+day;url=url+day;//生成文件名的小时部分int hour=cal.get(Calendar.HOUR_OF_DAY);if(hour<10){fileName=fileName+"0";}fileName=fileName+hour;url=url+hour;//生成文件名的分钟部分int minute=cal.get(Calendar.MINUTE);if(minute<10){fileName=fileName+"0";}fileName=fileName+minute;url=url+minute;//生成文件名的秒部分int second=cal.get(Calendar.SECOND);if(second<10){fileName=fileName+"0";}fileName=fileName+second;url=url+second;//生成文件名的毫秒部分int millisecond=cal.get(Calendar.MILLISECOND);if(millisecond<10){fileName=fileName+"0";}if(millisecond<100){fileName=fileName+"0";}fileName=fileName+millisecond;url=url+millisecond;//生成文件的扩展名部分String extension=imageFileName.substring(imageFileName.indexOf(".")) ; //计算.的位置fileName=fileName+extension;url=url+extension;file=new File(fileName);FileUtils.copyFile(image, file);//获取之前照片图片路径,如果不为空,将文件删除String oldurl=dao.getUrl(student);if(oldurl!=null){String oldfile=req.getServletContext().getRealPath("")+oldurl;File myfile=new File(oldfile);if(myfile.exists()){myfile.delete();}}System.out.println(fileName);student.setPhoto(url); //没有照片无法执行}dao.update(student);HttpSession session=req.getSession();session.setAttribute("STUDENT", student);return "main";}}
TeacherAction.java
package action;import java.io.IOException;import java.io.PrintWriter;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;import common.Pager;import dao.TeacherDAO;import model.Teacher;public class TeacherAction {private Teacher teacher;private int page;public int getPage() {return page;}public void setPage(int page) {this.page = page;}private TeacherDAO dao = new TeacherDAO();public Teacher getTeacher() {return teacher;}public void setTeacher(Teacher teacher) {this.teacher = teacher;}public String main(){HttpServletRequest request= ServletActionContext.getRequest();//显示所有教室信息if(page==0)//不传页码时,默认显示第0页{page=1;}Pager pager =new Pager();dao.initpage(pager);//若果当前页大于总页数,就让他等于总页数if(page>pager.getPageCount()){page=pager.getPageCount();}if(ServletActionContext.getContext().get("ADD")!=null){page=pager.getPageCount();}pager.setPageNo(page);StringBuilder str =new StringBuilder();List<Teacher> list=dao.getteacher(pager);//用类调用时为了少定义变量//判断是否有教室if(list.size()>0){ActionContext ax= ServletActionContext.getContext();ax.put("TEACHERS", list);//构建分页导航按钮int btns=pager.getBtnCount();btns=btns/2;int start =page-btns;int end =page+btns;if(start<1){start=1;end =start +2*btns;}if(end>pager.getPageCount()){start =end -2*btns;end=pager.getPageCount();}if(start<1){start =1;}for(int i=start;i<=end;i++){str.append("<a href='"+request.getContextPath() +"/teacher/main?page=" +i+"'>");if(i==page){str.append("<font color ='red'><b>");str.append(i);str.append("</b></font>");}else{str.append(i);}str.append("</a>");str.append("");}str.append("<br>");ax.put("NAVBAR", str.toString());//保存数据System.out.println(str.toString());}return "teachermain";}public String update(){return updateIt();}private String updateIt() {if(teacher.getId()==0){ServletActionContext.getContext().put("ADD", 1);}dao.update(teacher);return main();}public String modify(){return updateIt();}public String delet(){dao.deletteacher(teacher);return null;}public String get(){teacher= dao.get(teacher);HttpServletResponse response= ServletActionContext.getResponse();response.setCharacterEncoding("utf-8");try {PrintWriter out =response.getWriter();out.print(teacher.getId()+"!"+teacher.getName()+"!"+teacher.getSex()+"!"+teacher.getPhone());} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}}
common包
HibernateUtil.java
package common;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.boot.registry.StandardServiceRegistryBuilder;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;public class HibernateUtil {private static SessionFactory sessionFactory;private static SessionFactory buildSessionFactory() {try {Configuration configuration = new Configuration();configuration.configure("hibernate.cfg.xml");ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);return sessionFactory;} catch (Throwable ex) {throw new ExceptionInInitializerError(ex);}}public static SessionFactory getSessionFactory() {if (sessionFactory == null)sessionFactory = buildSessionFactory();return sessionFactory;}public static Session openSession() {return getSessionFactory().openSession();}}
Pager.java
package common;public class Pager {//当前页private int pageNo;//总页数private int pageCount;//每页的记录条数private int pageSize=3;//分页按钮个数private int btnCount=4;public int getPageNo() {return pageNo;}public void setPageNo(int pageNo) {this.pageNo = pageNo;}public int getPageCount() {return pageCount;}
package dao;import org.hibernate.Session;import common.HibernateUtil;import model.Contact;public class ContactDAO {Session session;public void update(Contact contact){session =HibernateUtil.openSession();session.beginTransaction();session.saveOrUpdate(contact); //修改添加同时存在session.getTransaction().commit();session.close();}}
public void setPageCount(int pageCount) {this.pageCount = pageCount;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}public int getBtnCount() {return btnCount;}public void setBtnCount(int btnCount) {this.btnCount = btnCount;}}
dao包
ContactDAO.java
package dao;import org.hibernate.Session;import common.HibernateUtil;import model.Contact;public class ContactDAO {Session session;public void update(Contact contact){session =HibernateUtil.openSession();session.beginTransaction();session.saveOrUpdate(contact); //修改添加同时存在session.getTransaction().commit();session.close();}}
CourseDAO.java
package dao;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import common.HibernateUtil;import common.Pager;import model.Course;public class CourseDAO {Session session;public void update(Course course){session = HibernateUtil.openSession();session.beginTransaction();session.saveOrUpdate(course);session.getTransaction().commit();session.close();}@SuppressWarnings("unchecked")public List<Course> getcourse(Pager pager)//修改为pager{//所有教室的信息String hql=" from Course";session = HibernateUtil.openSession();Query query =session.createQuery(hql);//返回当前页记录(pager.getpageNo()-1当前页,pager.getPageSize()记录数)//意思是从第几条记录开始显示query.setFirstResult((pager.getPageNo()-1)*pager.getPageSize());//最多显示多少条query.setMaxResults(pager.getPageSize());//当前页的数据List<Course> list=query.list();session.close();//关闭session;return list;}@SuppressWarnings("unchecked")public void initpage(Pager pager){String hql=" from Course";session = HibernateUtil.openSession();Query query =session.createQuery(hql);List<Course> list =query.list();//计算总页数pager.setPageCount(list.size()/pager.getPageSize());if(list.size()%pager.getPageSize()>0){pager.setPageCount(pager.getPageCount()+1);}session.beginTransaction().commit();session.close();}public void deletcourse(Course course){session = HibernateUtil.openSession();session.beginTransaction();session.delete(course);session.getTransaction().commit();session.close();}public Course get( Course course){session = HibernateUtil.openSession();session.beginTransaction();String hql="from Course where id=:id";Query query =session.createQuery(hql).setProperties(course);Course r =(Course) query.uniqueResult();session.getTransaction().commit();session.close();return r;}}
RoomDAO.java
package dao;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import common.HibernateUtil;import common.Pager;import model.Course;import model.Room;public class RoomDAO {Session session;public void update(Room room){session = HibernateUtil.openSession();session.beginTransaction();session.saveOrUpdate(room);session.getTransaction().commit();session.close();}//返回值 教室@SuppressWarnings("unchecked")public List<Room> getRooms(Pager pager)//修改为pager{//所有教室的信息String hql=" from Room";session = HibernateUtil.openSession();Query query =session.createQuery(hql);//返回当前页记录(pager.getpageNo()-1当前页,pager.getPageSize()记录数)//意思是从第几条记录开始显示query.setFirstResult((pager.getPageNo()-1)*pager.getPageSize());//最多显示多少条query.setMaxResults(pager.getPageSize());//当前页的数据List<Room> list=query.list();session.close();//关闭session;return list;}@SuppressWarnings("unchecked")public void initpage(Pager pager){String hql=" from Room";session = HibernateUtil.openSession();Query query =session.createQuery(hql);List<Room> list =query.list();//计算总页数pager.setPageCount(list.size()/pager.getPageSize());if(list.size()%pager.getPageSize()>0){pager.setPageCount(pager.getPageCount()+1);}session.beginTransaction().commit();session.close();}public void delet(Room room){session = HibernateUtil.openSession();session.beginTransaction(); //开启事物session.delete(room);session.getTransaction().commit(); //提交//关闭session;session.close();}@SuppressWarnings("unchecked")public List<Room> getroom(){//所有教室的信息String hql=" from Room";session = HibernateUtil.openSession();Query query =session.createQuery(hql);//当前页的数据List<Room> list=query.list();//关闭session;session.close(); return list;}public Room get(Room room){session = HibernateUtil.openSession();session.beginTransaction(); //开启事物String hql="from Room where id=:id";Query query =session.createQuery(hql).setProperties(room);Room r=(Room) query.uniqueResult();session.getTransaction().commit(); //提交session.close();return r;}}
StudentDAO.java
package dao;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import org.hibernate.Transaction;import common.HibernateUtil;import model.Student;public class StudentDAO {Session session;public void update(Student student){session=HibernateUtil.openSession(); //打开sessionTransaction ts=session.beginTransaction(); //把事物存起来session.saveOrUpdate(student); //把student 存一下 或者修改mit(); //提交一下session.close();}public Student check(Student student) //查询 写到数据库中需要{session=HibernateUtil.openSession(); //打开sessionString hql="from Student where name=:name and pwd=:pwd";//Query query=session.createQuery(hql);//第一种办法/*query.setString("name",student.getName());query.setString("pwd",student.getPwd());*///第二种办法//query.setProperties(student);Query query=session.createQuery(hql).setProperties(student);@SuppressWarnings("unchecked")List<Student>list=query.list(); //获取执行完的列表student=null;//存到sessionif(list.size()>0) {student=list.get(0);}return student;}public boolean checkpwd(Student student){String hql="from Student where id=:id and pwd=:pwd";session=HibernateUtil.openSession();Query query=session.createQuery(hql).setProperties(student);@SuppressWarnings("unchecked")List<Student>list=query.list(); //获取执行完的列表session.close();return list.size()>0?true:false; //大于0代表找到}public String getUrl(Student student){String hql="select photo from Student where id=:id"; //得到名字是多个Session session=HibernateUtil.openSession();Query query=session.createQuery(hql).setProperties(student);@SuppressWarnings("unchecked")List<String>list=query.list(); //获取执行完的列表session.close();return list.get(0);}@SuppressWarnings("unchecked")public Student get(Student student){session =HibernateUtil.openSession();String hql="from Student where id=:id";Query query=session.createQuery(hql).setProperties(student);List<Student>list=query.list();student=null;if (list.size()>0) {student=list.get(0);}return student;}}
TeacherDAO.java
package dao;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import common.HibernateUtil;import common.Pager;import model.Teacher;public class TeacherDAO {Session session;public void update(Teacher teacher){session = HibernateUtil.openSession();session.beginTransaction();session.saveOrUpdate(teacher);session.getTransaction().commit();session.close();}@SuppressWarnings("unchecked")public List<Teacher> getteacher(Pager pager)//修改为pager{//所有教室的信息String hql=" from Teacher";session = HibernateUtil.openSession();Query query =session.createQuery(hql);//返回当前页记录(pager.getpageNo()-1当前页,pager.getPageSize()记录数)//意思是从第几条记录开始显示query.setFirstResult((pager.getPageNo()-1)*pager.getPageSize());//最多显示多少条query.setMaxResults(pager.getPageSize());//当前页的数据List<Teacher> list=query.list();session.close();//关闭session;return list;}@SuppressWarnings("unchecked")public List<Teacher> getteacher()//修改为pager{//所有教室的信息String hql=" from Teacher";session = HibernateUtil.openSession();Query query =session.createQuery(hql);List<Teacher> list=query.list();session.close();//关闭session;return list;}@SuppressWarnings("unchecked")public void initpage(Pager pager){String hql=" from Teacher";session = HibernateUtil.openSession();Query query =session.createQuery(hql);List<Teacher> list =query.list();//计算总页数pager.setPageCount(list.size()/pager.getPageSize());if(list.size()%pager.getPageSize()>0){pager.setPageCount(pager.getPageCount()+1);}session.beginTransaction().commit();session.close();}public void deletteacher(Teacher teacher){session = HibernateUtil.openSession();session.beginTransaction();session.delete(teacher);session.getTransaction().commit();session.close();}public Teacher get( Teacher teacher){session = HibernateUtil.openSession();session.beginTransaction();String hql="from Teacher where id=:id";Query query =session.createQuery(hql).setProperties(teacher);Teacher r =(Teacher) query.uniqueResult();session.getTransaction().commit();session.close();return r;}}
package model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.OneToOne;@Entitypublic class Contact {private int id;private String name;private String sex;private String relation;private String phone;private Student student; @Id@GeneratedValuepublic int getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getRelation() {return relation;}public void setRelation(String relation) {this.relation = relation;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}@OneToOne(mappedBy="contact")//public Student getStudent() {return student;}public void setStudent(Student student) {this.student = student;}}
package model;import java.util.HashSet;import java.util.Set;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToMany;import javax.persistence.ManyToOne;/*** * @author Administrator**/@Entitypublic class Course {private int id;private String name;private String type;private String hours;private Teacher teacher;private Room room;private Set<Student> students=new HashSet<Student>(); //中间表 初始化@Id@GeneratedValuepublic 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 getType() {return type;}public void setType(String type) {this.type = type;}public String getHours() {return hours;}public void setHours(String hours) {this.hours = hours;}@ManyToOne@JoinColumn(name="tid" )public Teacher getTeacher() {return teacher;}public void setTeacher(Teacher teacher) {this.teacher = teacher;}@ManyToOne@JoinColumn(name="rid" )public Room getRoom() {return room;}public void setRoom(Room room) {this.room = room;}@ManyToMany(mappedBy="courses") //多对多public Set<Student> getStudents() {return students;}public void setStudents(Set<Student> students) {this.students = students;}}
Room.java
Course.java
package model;import java.util.Set;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.OneToMany;@Entitypublic class Room {private int id;private String name;private String address;private Set<Course> courses;@Id@GeneratedValuepublic 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 getAddress() {return address;}public void setAddress(String address) {this.address = address;}@OneToMany(mappedBy="room")public Set<Course> getCourses() {return courses;}public void setCourses(Set<Course> courses) {this.courses = courses;}}
Student.java
package model;import java.util.HashSet;import java.util.Set;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.JoinTable;import javax.persistence.ManyToMany;import javax.persistence.OneToOne;@Entitypublic class Student {private int id;private String name;private String pwd;private String phone;private String grade;private String photo;private String sex;private Contact contact;private Set<Course> courses =new HashSet<Course>(); //中间表@Id@GeneratedValuepublic 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;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getGrade() {return grade;}public void setGrade(String grade) {this.grade = grade;}public String getPhoto() {return photo;}public void setPhoto(String photo) {this.photo = photo;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}@OneToOne@JoinColumn(name="cid",unique=true) //unique=true 保证唯一 一对一public Contact getContact() {return contact;}public void setContact(Contact contact) {this.contact = contact;}@ManyToMany@JoinTable(name="student_course", //中间表joinColumns=@JoinColumn(name="sid"), //字段名inverseJoinColumns=@JoinColumn(name="cid")//字段名) public Set<Course> getCourses() {return courses;}public void setCourses(Set<Course> courses) {this.courses = courses;}}
Teacher.java
package model;import java.util.HashSet;import java.util.Set;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.JoinTable;import javax.persistence.ManyToMany;import javax.persistence.OneToOne;@Entitypublic class Student {private int id;private String name;private String pwd;private String phone;private String grade;private String photo;private String sex;private Contact contact;private Set<Course> courses =new HashSet<Course>(); //中间表@Id@GeneratedValuepublic 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;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getGrade() {return grade;}public void setGrade(String grade) {this.grade = grade;}public String getPhoto() {return photo;}public void setPhoto(String photo) {this.photo = photo;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}@OneToOne@JoinColumn(name="cid",unique=true) //unique=true 保证唯一 一对一public Contact getContact() {return contact;}public void setContact(Contact contact) {this.contact = contact;}@ManyToMany@JoinTable(name="student_course", //中间表joinColumns=@JoinColumn(name="sid"), //字段名inverseJoinColumns=@JoinColumn(name="cid")//字段名) public Set<Course> getCourses() {return courses;}public void setCourses(Set<Course> courses) {this.courses = courses;}}
test包
MyApp.java
package test;import java.util.HashSet;import java.util.Set;import org.hibernate.Session;import org.hibernate.Transaction;import org.junit.Test;import common.HibernateUtil;import model.Course;import model.Room;import model.Student;import model.Teacher;public class MyApp {@Testpublic void Mytest(){Course cou =new Course();cou.setName("数333学");cou.setType("代33数");cou.setHours("3330");Teacher tea =new Teacher();tea.setName("张3");tea.setPhone("13234567890");tea.setSex("男3");Room room=new Room();room.setName("第3一教室");room.setAddress("3a205");cou.setTeacher(tea);cou.setRoom(room);Session session= HibernateUtil.openSession();session.beginTransaction();session.save(room);session.save(tea);session.save(cou);session.getTransaction().commit();session.close();}@Testpublic void teatManyToMany(){Session session=HibernateUtil.openSession();session.beginTransaction();Student student =new Student();student.setId(39); //39号学生Course course1=new Course();course1.setId(2); //2号课程Course course2 =new Course();course2.setId(3); //3号课程// Set<Course> courses=new HashSet<Course>();// courses.add(course1);// courses.add(course2);// 方法一// student.setCourses(courses);student.getCourses().add(course1); //在student 必须初始化 才可以 //private Set<Course> courses =new HashSet<Course>(); //中间表student.getCourses().add(course2);session.saveOrUpdate(student);session.getTransaction().commit();session.close();}}
TestMapping.java
package test;import org.hibernate.Session;import org.hibernate.Transaction;import org.junit.Test;import common.HibernateUtil;import model.Student;public class TestMapping {@Testpublic void myTest(){Session session = HibernateUtil.openSession();Student s=new Student();s.setName("Mike");s.setPhone("18724737098");s.setPwd("12345678");s.setGrade("Grade Two");Transaction tx=session.beginTransaction();session.save(s);mit();}}
===============================上面是后端代码=========================
contact.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><constant name="struts.devMode" value="true" /><package name="contact" namespace="/contact" extends="all"><action name="*" class="action.ContactAction" method="{1}"></action></package></struts>
course.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><constant name="struts.devMode" value="true" /><package name="course" namespace="/course" extends="all"><action name="*" class="action.CourseAction" method="{1}"><result name="coursemain">/course.jsp</result><result name="initmain">/init.jsp</result><result name="choosemain">/choose.jsp</result></action></package></struts>
hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><!-- Database connection settings --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/curricula</property> <property name="connection.username">root</property> <property name="connection.password">12345678</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property><!-- Drop and re-create the database schema on startup --><property name="hbm2ddl.auto">update</property><mapping class="model.Student"/><mapping class="model.Contact"/><mapping class="model.Room"/><mapping class="model.Teacher"/><mapping class="model.Course"/></session-factory></hibernate-configuration>
room.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><constant name="struts.devMode" value="true" /><package name="room" namespace="/room" extends="all"><action name="*" class="action.RoomAction" method="{1}"><result name="roommain">/room.jsp</result></action></package></struts>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><constant name="struts.devMode" value="true" /><include file="student.xml"></include><include file="contact.xml"></include><include file="room.xml"></include><include file="teacher.xml"></include><include file="course.xml"></include><package name="all" namespace="/" extends="struts-default"><interceptors> <interceptor-stack name="myStack"> <interceptor-ref name="defaultStack"/> <interceptor-ref name="tokenSession"><!--token 转走 tokenSession 不转走 --><param name="includeMethods">update</param> <!-- 只拦截 update方法 --></interceptor-ref> </interceptor-stack> <!-- 上面是配置拦截器 --></interceptors> <default-interceptor-ref name="myStack"/><global-results ><result name="main">/main.jsp</result><result name="invalid.token">/error.jsp</result><!-- 发生错误 转到 error --></global-results></package></struts>
Student.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="model"><class name="Student" table="student"><id name="id" column="id"><generator class="native"/></id><property name="name"></property><property name="pwd" column="pwd" type="string" length="50"></property><property name="phone" length="50"></property><property name="photo" length="150"></property></class></hibernate-mapping>
student.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><constant name="struts.devMode" value="true" /><package name="student" namespace="/student" extends="all"><action name="*" class="action.StudentAction" method="{1}"><result name="login" >/login.jsp</result></action></package></struts>
teacher.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><constant name="struts.devMode" value="true" /><package name="teacher" namespace="/teacher" extends="all"><action name="*" class="action.TeacherAction" method="{1}"><result name="teachermain">/teacher.jsp</result></action></package></struts>
================================以上为配置文件========================
admin.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>后台管理</title></head><body>后台管理<br/><br/><a href="${pageContext.request.contextPath}/room/main">教室管理</a> | <a href="${pageContext.request.contextPath}/teacher/main">教师管理</a> |<a href="${pageContext.request.contextPath}/course/main">课程管理</a> |<a href="${pageContext.request.contextPath}/course/imain">课程初始化</a> |<br/><br/><a href="${pageContext.request.contextPath}/main.jsp">返回主页</a></body></html>
choose.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@taglib uri="/struts-tags" prefix="s"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jquery-easyui-1.5.3/themes/icon.css"><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jquery-easyui-1.5.3/themes/default/easyui.css"><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jquery-easyui-1.5.3/demo/demo.css"><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/stytel.css"><script type="text/javascript" src="${pageContext.request.contextPath}/jsilb/jquery-1.11.1.js"></script><script type="text/javascript" src="${pageContext.request.contextPath}/jquery-easyui-1.5.3/jquery.easyui.min.js"></script><script type="text/javascript">$(function(){$(".selsetit").each(function(i, e) {$.post("${pageContext.request.contextPath}/course/checkesSelect",{"course.id":e.lang},function(data){eval("e.checked=" +data); //把一个字符串变成一个命令 });});$(".selsetit").click(function(){$.post("${pageContext.request.contextPath}/course/checkit",{"course.id":this.lang});});});</script></head><body><div id="showSelected" class="easyui-window" title="修改课程信息" data-options="modal:true,closed:true,iconCls:'icon-save'" style="width:500px;height:300px;padding:10px;"></div><br/><s:if test="#COURSE!=null"><table class="bordered"><tr><th>序号</th><th>课程名称</th><th>课程类型</th><th>课程学时</th><th>授课老师</th><th>上课教室</th><th>选择</th></tr><s:iterator value="#COURSE" id="mycourse" status="st"><tr><td>${st.index+1 }</td><td>${mycourse.name }</td><td>${mycourse.type }</td><td>${mycourse.hours }</td><td >${mycourse.teacher.name }</td><td >${mycourse.room.name }</td><td ><input type="checkbox" class="selsetit" lang="${mycourse.id }"></td></tr></s:iterator></table>${NAVBAR }<br><br></s:if><a href="${pageContext.request.contextPath}/main.jsp">返回主页</a></body></html>
contact.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@taglib uri="/struts-tags" prefix="s" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>修改学生信息页面</title><script type="text/javascript" src="${pageContext.request.contextPath}/jsilb/jquery-1.11.1.js"></script><script type="text/javascript">$(function(){if($("[name='contact.sex']:checked").length==0){$("[name='contact.sex']:eq(0)").attr("checked",true);}});</script></head><body><!-- session过期判断 --><s:if test="#session.STUDENT==null"><jsp:forward page="login.jsp"></jsp:forward></s:if><form action="${pageContext.request.contextPath}/contact/modify" method="post"><input type="hidden" name="contact.id" value="${STUDENT.contact.id}" ><table><tr><td>姓名:</td><td><input type="text" name="contact.name" value="${STUDENT.contact.name}"/></td></tr><tr><td>性别:</td><s:radio list="#{'男':'男','女':'女'}" name="contact.sex" value="#session.STUDENT.contact.sex"/></tr><tr><td>关系:</td><td><input type="text" name="contact.relation" value="${STUDENT.contact.relation }"/></td></tr><tr><td>电话:</td><td><input type="text" name="contact.phone" value="${STUDENT.contact.phone }"/></td></tr><tr><td colspan="2"><input type="submit" value="提交"/></td></tr></table></form><br/><br/><a href="${pageContext.request.contextPath}/main.jsp">返回主页</a></body></html>
course.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@taglib uri="/struts-tags" prefix="s"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jquery-easyui-1.5.3/themes/icon.css"><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jquery-easyui-1.5.3/themes/default/easyui.css"><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jquery-easyui-1.5.3/demo/demo.css"><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/stytel.css"><script type="text/javascript" src="${pageContext.request.contextPath}/jsilb/jquery-1.11.1.js"></script><script type="text/javascript" src="${pageContext.request.contextPath}/jquery-easyui-1.5.3/jquery.easyui.min.js"></script><script type="text/javascript">$(function(){$("[type='submit']").click(function(){if($("[name='course.name']").val().length==0){$("[name='course.name']").focus();$("#msg").html("请输入课程名称!");return false;}if($("[name='course.type']").val().length==0){$("[name='course.type']").focus();$("#msg").html("请输入课程类型!");return false;}if($("[name='course.hours']").val().length==0){$("[name='course.hours']").focus();$("#msg").html("请输入课程学时!");return false;}});$(".delet").click(function(){var flag=confirm("你真的要删除课程的信息吗?");if(!flag){return;}$.post("${pageContext.request.contextPath}/course/delet",{"course.id":this.lang},function(data){location.href="${pageContext.request.contextPath}/course/main?page="+$("#page").val();});});$(".modify").click(function(){$.post("${pageContext.request.contextPath}/course/get",{"course.id":this.lang},function(data){var msg=data.split("!");$("#w [name='course.id']").val(msg[0]);$("#w [name='course.name']").val(msg[1]);$("#w [name='course.type']").val(msg[2]);$("#w [name='course.hours']").val(msg[3]);});$('#w').window('open');});$("#save").click(function(){$.post("${pageContext.request.contextPath}/course/modify",{"course.id":$("#w [name='course.id']").val(),"course.name":$("#w [name='course.name']").val(),"course.type":$("#w [name='course.type']").val(),"course.hours":$("#w [name='course.hours']").val(),},function(){$('#w').window('close');location.href="${pageContext.request.contextPath}/course/main?page="+$("#page").val();});});});</script></head><body><input type="hidden" id="page" value="${page }"><div id="w" class="easyui-window" title="修改课程信息" data-options="modal:true,closed:true,iconCls:'icon-save'" style="width:500px;height:200px;padding:10px;"><input type="hidden" name="course.id">课程名称:<input type="text" name="course.name"> <br/>课程类型:<input type="text" name="course.type"><br/>课程学时:<input type="text" name="course.hours"><br/><input type="button" id="save" value="保存"></div><form method="post" action="${pageContext.request.contextPath}/course/update">课程名称:<input type="text" name="course.name"> <br/>课程类型:<input type="text" name="course.type"><br/>课程学时:<input type="text" name="course.hours"><br/><s:token></s:token><input type="submit" value="提交"></form><div id="msg"></div><br/><s:if test="#COURSE!=null"><table class="bordered"><tr><th>序号</th><th>课程名称</th><th>课程类型</th><th>课程学时</th><th>删除</th><th>修改</th></tr><s:iterator value="#COURSE" id="mycourse" status="st"><tr><td>${st.index+1 }</td><td>${mycourse.name }</td><td>${mycourse.type }</td><td>${mycourse.hours }</td><td><input type="button" class="delet" lang="${mycourse.id}" value="删除"></td><td><input type="button" class="modify" lang="${mycourse.id}" value="修改"></td></tr></s:iterator></table>${NAVBAR }<br><br></s:if><a href="${pageContext.request.contextPath}/main.jsp">返回主页</a></body></html>
error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>出错!!!</body></html>
init.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@taglib uri="/struts-tags" prefix="s"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jquery-easyui-1.5.3/themes/icon.css"><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jquery-easyui-1.5.3/themes/default/easyui.css"><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jquery-easyui-1.5.3/demo/demo.css"><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/stytel.css"><script type="text/javascript" src="${pageContext.request.contextPath}/jsilb/jquery-1.11.1.js"></script><script type="text/javascript" src="${pageContext.request.contextPath}/jquery-easyui-1.5.3/jquery.easyui.min.js"></script><script type="text/javascript">$(function(){//-------------------------老师设置---------------------//var cell="";//在点击老师单元格时触发此事件$(".teachercell").click(function(){cell=this;//把course id接受到,存到掩藏变量中$("#tw [name='course.id']").val(this.lang); //把course id 设置进去了//根据course id得到course name,显示在窗口中$.post("${pageContext.request.contextPath}/course/get",{"course.id":this.lang}, function(data){$("#courseName").html(data.split("!")[1]);});$('#tw').window('open');});//在选择老师的时候触发$(".selectteacher").click(function(){$("#tw [name='teacher.id']").val(this.lang); //把teacher id 设置进去了});//保存设置的时候触发$("#saveteacher").click(function(){$.ajaxSetup({async:false}); //var teacherName="";//获得老师的名字$.post("${pageContext.request.contextPath}/teacher/get",{"teacher.id":$("#tw [name='teacher.id']").val()},function(data){teacherName=data.split("!")[1];});//为课程设置老师,把老师的姓名写到列表中老师单元格$.post("${pageContext.request.contextPath}/course/updateTeacher",{"course.id":$("#tw [name='course.id']").val(),"teacher.id":$("#tw [name='teacher.id']").val()},function(data){cell.innerHTML=teacherName; //设置好的教师名字设置到课程列表中 $('#tw').window('close');});});//-------------------------教室设置------------------------------------------$(".roomcell").click(function(){cell=this;//把course id接受到,存到掩藏变量中$("#rw [name='course.id']").val(this.lang);//根据course id得到course name,显示在窗口中$.post("${pageContext.request.contextPath}/course/get",{"course.id":this.lang}, function(data){$("#courseNameroom").html(data.split("!")[1]);});$('#rw').window('open');});//在选择教室的时候触发$(".selectroom").click(function(){$("#rw [name='room.id']").val(this.lang);});//保存设置的时候触发$("#saveRoom").click(function(){$.ajaxSetup({async:false});//改为同步 var roomName="";//获得教室的名字$.post("${pageContext.request.contextPath}/room/get",{"room.id":$("#rw [name='room.id']").val()},function(data){roomName=data.split("!")[1];});//为课程设置教室,把教室的名字写到列表中教室单元格$.post("${pageContext.request.contextPath}/course/updateRoom",{"course.id":$("#rw [name='course.id']").val(),"room.id":$("#rw [name='room.id']").val()},function(data){cell.innerHTML=roomName;$('#rw').window('close');});});});</script></head><body><input type="hidden" id="page" value="${page}"><div id="tw" class="easyui-window" title="修改课程信息" data-options="modal:true,closed:true,iconCls:'icon-save'" style="width:500px;height:300px;padding:10px;"><input type="hidden" name="course.id"><input type="hidden" name="teacher.id"><input type="hidden" name="teacher.name"><br>你正在为课程[<span id="courseName"></span>]设置教师...<br><table class="bordered"><tr><th>选择</th><th>序号</th><th>姓名</th><th>性别</th><th>电话号码</th></tr><s:iterator value="#TEACHERS" id="myteachers" status="st"><tr><td><input type="radio" name="teacher" class="selectteacher" lang="${myteachers.id }"></td><td>${st.index+1 }</td><td>${myteachers.name }</td><td>${myteachers.sex }</td><td>${myteachers.phone }</td></tr></s:iterator></table><br><input type="button" id="saveteacher" value="保存教师信息"></div><div id="rw" class="easyui-window" title="修改课程信息" data-options="modal:true,closed:true,iconCls:'icon-save'" style="width:500px;height:300px;padding:10px;"><input type="hidden" name="course.id"><input type="hidden" name="room.id"><br>你正在为[<span id="courseNameroom"></span>]设置教室...<br><table class="bordered"><tr><th>选择</th><th>序号</th><th>名称</th><th>位置</th></tr><s:iterator value="#ROOMS" id="myroom" status="st"><tr><td><input type="radio" name="room" class="selectroom" lang="${myroom.id }"></td><td>${st.index+1 }</td><td>${myroom.name }</td><td>${myroom.address }</td></tr></s:iterator></table><br><input type="button" id="saveRoom" value="保存教室信息"></div><br/><s:if test="#COURSE!=null"><table class="bordered"><tr><th>序号</th><th>课程名称</th><th>课程类型</th><th>课程学时</th><th>授课老师</th><th>上课教室</th></tr><s:iterator value="#COURSE" id="mycourse" status="st"><tr><td>${st.index+1 }</td><td>${mycourse.name }</td><td>${mycourse.type }</td><td>${mycourse.hours }</td><td class="teachercell" lang="${mycourse.id }">${mycourse.teacher.name }</td><td class="roomcell" lang="${mycourse.id }">${mycourse.room.name }</td></tr></s:iterator></table>${NAVBAR }<br><br></s:if><a href="${pageContext.request.contextPath}/main.jsp">返回主页</a></body></html>
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>登录<br/><br/><form action="${pageContext.request.contextPath}/student/check" method="post"><table><tr><td>用户名:</td><td><input type="text" name="student.name"/></td></tr><tr><td>密码:</td><td><input type="password" name="student.pwd"/></td></tr><tr><td colspan="2"><input type="submit" value="提交"/></td></tr></table></form><br/><br/><a href="${pageContext.request.contextPath}/main.jsp">返回主页</a></body></html>
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@taglib uri="/struts-tags" prefix="s"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>主页面<br/><s:if test="#session.STUDENT==null">未登录</s:if><s:else>当前登录用户名:${STUDENT.name},<a href="${pageContext.request.contextPath}/modify.jsp">修改个人信息</a><a href="${pageContext.request.contextPath}/contact.jsp">紧急联系人信息</a></s:else><br/><a href="${pageContext.request.contextPath}/admin.jsp">进入后台管理</a><br/><br/><a href="${pageContext.request.contextPath}/register.jsp">注册</a> <a href="${pageContext.request.contextPath}/login.jsp">登录</a> <a href="${pageContext.request.contextPath}/course/cmain">选课</a></body></html>
modify.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@taglib uri="/struts-tags" prefix="s"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><style type="text/css">#pic{width:300px;}</style><script type="text/javascript" src="${pageContext.request.contextPath}/jsilb/jquery-1.11.1.js"></script><script type="text/javascript" src="${pageContext.request.contextPath}/upload/uploadPreview.min.js"></script><script type="text/javascript">$(function(){/* $("[name='image']").change(function(){$("#pic").attr("src", $(this).val());}); */new uploadPreview({ UpBtn: "image", DivShow: "mypic", ImgShow: "pic",Width:"300",Height:"200"});$("[type='submit']").click(function(){//验证旧密码是否正确//提交方式var myurl="${pageContext.request.contextPath}/student/checkpwd";var flag=true;$.ajax({type:"POST",async:false, //同步 默认异步url:myurl,data:{"student.id":"${STUDENT.id}","student.pwd":$("#oldPwd").val()},//请求完要做的事success: function(data){if(data=="0"){ $("#msg").html("旧密码输入错误!");flag=false;}}});if(!flag){return flag;}//两次密码不一致 或者没有输入if($.trim($("[name='student.pwd']").val()).length==0){$("#msg").html("请输入新密码!");return false;}var p1=$("[name='student.pwd']").val(); //旧密码var p2=$("#pwd1").val();if(p1!=p2){$("#msg").html("两次密码输入不一致!");return false;}return true;});});</script></head><body>修改<br/><br/><s:if test="#session.STUDENT==null"><jsp:forward page="${pageContext.request.contextPath}/login.jsp"></jsp:forward></s:if><table width="1013"><tr><td width="351"><form method="post" enctype="multipart/form-data" action="${pageContext.request.contextPath}/student/modify"><table><tr><td>用户名:</td><td><input type="text" name="student.name" value="${STUDENT.name}"/><input type="hidden" name="student.id" value="${STUDENT.id}"></td></tr><tr><td>旧密码:</td><td><input type="password" id="oldPwd" /></td></tr><tr><td>新密码:</td><td><input type="password" name="student.pwd" value="${STUDENT.pwd}"/></td></tr><tr><td>重复新密码:</td><td><input type="password" id="pwd1" value="${STUDENT.pwd}"/></td></tr><tr><td>性别</td><td><s:radio list="#{'男':'男','女':'女'}" name="student.sex" value="#session.STUDENT.sex"/></td></tr><tr><td>年级:</td><td><s:select name="student.grade" list="#{'一年级':'一年级','二年级':'二年级','三年级':'三年级','四年级':'四年级'}" value="#session.STUDENT.grade"></s:select></td></tr><tr><td>上传照片:</td><td><input type="file" name="image" id="image"/><input type="hidden" name="student.photo" value="${STUDENT.photo}"></td></tr><tr><td>电话号码:</td><td><input type="text" name="student.phone" value="${STUDENT.phone}"/></td></tr><tr><td colspan="2"><input type="submit" value="提交"/></td></tr></table></form></td><td width="725"><div id="mypic"><s:if test="#session.STUDENT.photo==null"><img src="images/22.jpg" id="pic" /></s:if><s:else><img src="${STUDENT.photo}" id="pic" /></s:else></div></td></tr></table></body><br/><div id="msg">1</div><br/><a href="${pageContext.request.contextPath}/main.jsp">返回主页</a></html>
register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@taglib uri="/struts-tags" prefix="s"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body>注册<br/><br/><form method="post" action="${pageContext.request.contextPath}/student/add"><table><tr><td>用户名:</td><td><input type="text" name="student.name" value="${STUDENT.name}"/></td></tr><tr><td>密码:</td><td><input type="password" name="student.pwd" /></td></tr><tr><td>重复密码:</td><td><input type="password" id="pwd1"/></td></tr><tr><td>性别</td><td><input type="radio" value="男" checked name="student.sex">男<input type="radio" value="女" name="student.sex">女</td></tr><tr><td>年级:</td><td><label for="select"></label><select name="student.grade"><option value="一年级">一年级</option><option value="二年级">二年级</option><option value="三年级">三年级</option><option value="四年级">四年级</option></select></td></tr><tr><td colspan="2"><input type="submit" value="提交"/></td></tr></table></form><br/><br/><a href="${pageContext.request.contextPath}/main.jsp">返回主页</a></body></html>
room.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@taglib uri="/struts-tags" prefix="s"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jquery-easyui-1.5.3/themes/icon.css"><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jquery-easyui-1.5.3/themes/default/easyui.css"><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jquery-easyui-1.5.3/demo/demo.css"><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/stytel.css"><script type="text/javascript" src="${pageContext.request.contextPath}/jsilb/jquery-1.11.1.js"></script><script type="text/javascript" src="${pageContext.request.contextPath}/jquery-easyui-1.5.3/jquery.easyui.min.js"></script><script type="text/javascript">$(function(){$("[type='submit']").click(function(){if($("[name='room.name']").val().length==0){$("[name='room.name']").focus();$("#msg").html("请输入教室名称!");return false;}if($("[name='room.address']").val().length==0){$("[name='room.address']").focus();$("#msg").html("请输入教室位置!");return false;}});$(".delet").click(function(){var flag=confirm("你真的要删除教室的信息吗?");if(!flag){return;}$.post("${pageContext.request.contextPath}/room/delet",{"room.id":this.lang},function(data){location.href="${pageContext.request.contextPath}/room/main?page="+$("#page").val();});});$(".modify").click(function(){//修改教室信息 $.post("${pageContext.request.contextPath}/room/get",{"room.id":this.lang},function(data){var msg=data.split("!");$("#w [name='room.id']").val(msg[0]);$("#w [name='room.name']").val(msg[1]);$("#w [name='room.address']").val(msg[2]);});$('#w').window('open');});$("#save").click(function(){$.post("${pageContext.request.contextPath}/room/modify",{"room.id":$("#w [name='room.id']").val(),"room.name":$("#w [name='room.name']").val(),"room.address":$("#w [name='room.address']").val(),},function(){$('#w').window('close');//location.href="${pageContext.request.contextPath}/room/main?page="+$("#page").val()";location.href="${pageContext.request.contextPath}/room/main?page="+$("#page").val();});}); });</script></head><body><input type="hidden" id="page" value="${page }"><div id="w" class="easyui-window" title="修改教室信息" data-options="modal:true,closed:true,iconCls:'icon-save'" style="width:500px;height:200px;padding:10px;"><input type="hidden" name="room.id">教室名称:<input type="text" name="room.name"> <br/>教室位置:<input type="text" name="room.address"><br/><input type="button" id="save" value="保存"></div><form method="post" action="${pageContext.request.contextPath}/room/update">教室名称:<input type="text" name="room.name"> <br/>教室位置:<input type="text" name="room.address"><br/><s:token></s:token><input type="submit" value="提交"></form><div id="msg"></div><br/><s:if test="#ROOMS!=null"><table class="bordered"><tr><th>序号</th><th>教室名称</th><th>教室位置</th><th>删除</th><th>修改</th></tr><s:iterator value="#ROOMS" id="myroom" status="st"><tr><td>${st.index+1 }</td><td>${myroom.name }</td><td>${myroom.address }</td><td><input type="button" class="delet" lang="${myroom.id}" value="删除"></td><td><input type="button" class="modify" lang="${myroom.id}" value="修改"></td></tr></s:iterator></table>${NAVBAR}<br><br></s:if><a href="${pageContext.request.contextPath}/main.jsp">返回主页</a></body></html>
teacher.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@taglib uri="/struts-tags" prefix="s"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jquery-easyui-1.5.3/themes/icon.css"><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jquery-easyui-1.5.3/themes/default/easyui.css"><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/jquery-easyui-1.5.3/demo/demo.css"><link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/stytel.css"><script type="text/javascript" src="${pageContext.request.contextPath}/jsilb/jquery-1.11.1.js"></script><script type="text/javascript" src="${pageContext.request.contextPath}/jquery-easyui-1.5.3/jquery.easyui.min.js"></script><script type="text/javascript">$(function(){$("[type='submit']").click(function(){if($("[name='teacher.name']").val().length==0){$("[name='teacher.name']").focus();$("#msg").html("请输入教师名称!");return false;}if($("[name='teacher.sex']").val().length==0){$("[name='teacher.sex']").focus();$("#msg").html("请输入教师性别!");return false;}if($("[name='teacher.phone']").val().length==0){$("[name='teacher.phone']").focus();$("#msg").html("请输入教师电话!");return false;}});$(".delet").click(function(){var flag=confirm("你真的要删除教师的信息吗?");if(!flag){return;}$.post("${pageContext.request.contextPath}/teacher/delet",{"teacher.id":this.lang},function(data){location.href="${pageContext.request.contextPath}/teacher/main?page="+$("#page").val();});});$(".modify").click(function(){$.post("${pageContext.request.contextPath}/teacher/get",{"teacher.id":this.lang},function(data){var msg=data.split("!");$("#w [name='teacher.id']").val(msg[0]);$("#w [name='teacher.name']").val(msg[1]);$("#w [name='teacher.sex']").val(msg[2]);$("#w [name='teacher.phone']").val(msg[3]);});$('#w').window('open');});$("#save").click(function(){$.post("${pageContext.request.contextPath}/teacher/modify",{"teacher.id":$("#w [name='teacher.id']").val(),"teacher.name":$("#w [name='teacher.name']").val(),"teacher.sex":$("#w [name='teacher.sex']").val(),"teacher.phone":$("#w [name='teacher.phone']").val(),},function(){$('#w').window('close');location.href="${pageContext.request.contextPath}/teacher/main?page="+$("#page").val();});});});</script></head><body><input type="hidden" id="page" value="${page }"><div id="w" class="easyui-window" title="修改教师信息" data-options="modal:true,closed:true,iconCls:'icon-save'" style="width:500px;height:200px;padding:10px;"><input type="hidden" name="teacher.id">教师姓名:<input type="text" name="teacher.name"> <br/>教师性别:<input type="text" name="teacher.sex"><br/>教师电话:<input type="text" name="teacher.phone"><br/><input type="button" id="save" value="保存"></div><form method="post" action="${pageContext.request.contextPath}/teacher/update">教师姓名:<input type="text" name="teacher.name"> <br/>教师性别:<input type="text" name="teacher.sex"><br/>教师电话:<input type="text" name="teacher.phone"><br/><s:token></s:token><input type="submit" value="提交"></form><div id="msg"></div><br/><s:if test="#TEACHERS!=null"><table class="bordered"><tr><th>序号</th><th>教师姓名</th><th>教师性别</th><th>教师电话</th><th>删除</th><th>修改</th></tr><s:iterator value="#TEACHERS" id="myteacher" status="st"><tr><td>${st.index+1 }</td><td>${myteacher.name }</td><td>${myteacher.sex }</td><td>${myteacher.phone }</td><td><input type="button" class="delet" lang="${myteacher.id}" value="删除"></td><td><input type="button" class="modify" lang="${myteacher.id}" value="修改"></td></tr></s:iterator></table>${NAVBAR }<br><br></s:if><a href="${pageContext.request.contextPath}/main.jsp">返回主页</a></body></html>
test.jsp
<%@page import="common.HibernateUtil"%><%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><%out.print(HibernateUtil.openSession());%></body></html>
===============================以上为jsp页面=================================