学生选课系统项目介绍及需求
第一天 笔记:
数据库基础知识主键: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="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<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;
@Entity
public class Student {
private int id;
private String name;
private String pwd;
private String phone;
private String grade;
private String photo;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
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"
"http://www.hibernate.org/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"
"http://www.hibernate.org/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"
"http://struts.apache.org/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"
"http://www.hibernate.org/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
查找对象
http://blog.csdn.net/xinyu0100/article/details/5385989
http://www.360doc.com/content/11/0419/15/1861654_110769193.shtm
java.lang.NoSuchMethodException: action.StudentAction.check()没有这个方法
<s:radio/> 标签
http://www.itzhai.com/struts2-radio-button-label-s-radio-use-and-set-the-default-value.html
<s:select/> 标签
http://blog.csdn.net/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
http://blog.sina.com.cn/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/2015/03/15122018005.jpg
getRealPath的说明
http://blog.csdn.net/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.修改图片时,如果之前已经上传过图片,应该先删除之前的图片。
http://blog.csdn.net/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() {
//保存contact
return 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(保存谁就要设置谁)
//保存student
sdao.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为零 修改大于0
return 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 block
e.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 org.apache.commons.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); //把信息存到 session
return "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 block
e.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(); //打开session
Transaction ts=session.beginTransaction(); //把事物存起来
session.saveOrUpdate(student); //把student 存一下 或者修改
ts.commit(); //提交一下
session.close();
}
public Student check(Student student) //查询 写到数据库中需要
{
session=HibernateUtil.openSession(); //打开session
String 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;//存到session
if(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;
@Entity
public class Contact {
private int id;
private String name;
private String sex;
private String relation;
private String phone;
private Student student;
@Id
@GeneratedValue
public 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
*
*/
@Entity
public 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
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String 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;
@Entity
public class Room {
private int id;
private String name;
private String address;
private Set<Course> courses;
@Id
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String 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;
@Entity
public 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
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
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;
@Entity
public 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
@GeneratedValue
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
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 {
@Test
public 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();
}
@Test
public 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 {
@Test
public 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);
tx.commit();
}
}
===============================上面是后端代码=========================
contact.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/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"
"http://struts.apache.org/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"
"http://www.hibernate.org/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"
"http://struts.apache.org/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"
"http://struts.apache.org/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"
"http://www.hibernate.org/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"
"http://struts.apache.org/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"
"http://struts.apache.org/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" "http://www.w3.org/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" "http://www.w3.org/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" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>修改学生信息页面</title>
<script type="text/javascript" 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" "http://www.w3.org/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" "http://www.w3.org/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" "http://www.w3.org/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" "http://www.w3.org/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" "http://www.w3.org/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" "http://www.w3.org/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" "http://www.w3.org/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" "http://www.w3.org/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" "http://www.w3.org/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" "http://www.w3.org/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页面=================================