学生选课系统项目介绍及需求

第一天 笔记:

数据库基础知识
主键: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@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""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() {//保存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 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);  //把信息存到 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 存一下 或者修改ts.commit();                             //提交一下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;@Entity
public 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**/
@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@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;
@Entity
public 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;@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@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;@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@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);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="data: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页面=================================

学生选课系统项目介绍及需求相关推荐

  1. 学生选课系统项目完整演示图

    学生选课系统项目完整演示图 1.2

  2. java选课系统代码mysql_Java swing mysql实现的学生选课系统项目源码附带视频运行教程...

    大家好,今天给大家演示一下由Java swing实现的一款简单的学生选课系统,数据库采用的是mysql,实现了简单的选课功能,后面的课程中我们会出Java web版的学生选课系统,今天先看Java s ...

  3. 大家介绍一篇学生选课系统的设计与实现

    项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等.这里根据疫情当下,你 ...

  4. SpringBoot+Vue项目学生选课系统

    文末获取源码 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclip ...

  5. 学生选课系统——数据库应用项目

    设 计 任 务 书 设计题目: 学生选课系统的数据库设计 课程名称: 数据库课设设计  设 计 任 务 书 1.目的和要求: 本次设计是<数据库原理及应用>课程的综合实践.通过对<数 ...

  6. javaWeb项目学生选课系统完整源码附带数据库

    项目介绍 学生选课系统,也可以说教务管理系统,功能比较多,可做课程设计和毕业设计参考,角色分为学生,老师,管理员,分别对应不同的操作 学生:注册登录,修改信息,查看选课信息,查看成绩,查看公告,课程信 ...

  7. C小项目 —— 学生选课系统

    C小项目 -- 学生选课系统 #include<stdio.h> #include<windows.h> #include<stdlib.h> #include&l ...

  8. Web开发项目——学生选课系统

    Web开发项目--学生选课系统完整项目代码+数据库文件(采用springMVC三层架构+MySQL) 学生登录界面 欢迎界面,可进行功能选择个人信息查询 密码修改,修改后数据库数据也会变化 根据教授该 ...

  9. python开发项目:学生选课系统

    程序要求: 1.创建北京.上海两所学校(分析:通过学校类实例化两个学校实例) 2.创建Linux.python.go三个课程,Linux\go在北京开,Linux在上海开(创建Linux.python ...

最新文章

  1. 利用fnd_conc_global.set_req_globals设置子请求的Parent Request ID
  2. (原創) 深入探討blocking與nonblocking (SOC) (Verilog)
  3. 【直播预告】阿里云服务网格 ASM 产品易用性改善实践与思考
  4. python实现离线翻译_10分钟教你用Python实现微信翻译机器人
  5. 揭秘一线互联网企业 前端JavaScript高级面试
  6. Android中级之网络数据解析一之Json解析
  7. 测试:fiddler使用
  8. Linux安装与配置
  9. c 语言从文件中读取字符串数组,C从文本文件读取到数组/字符串
  10. Fixjs——显示基类DisplayObject
  11. [转载]Qt之自定义界面(二)添加最小化、关闭按钮、添加背景_vortex_新浪博客...
  12. 分析JQ作者的类实现过程
  13. WPF datagrid 加入图片
  14. 独家揭秘阿里云SQL Server AlwaysOn集群版重大突破
  15. 滴滴业务中台构建实践,首次曝光
  16. 立体栅格地图_具有立体效果的地图制作
  17. python导入mysqldb_Python导入MySQLdb库
  18. 翻斗式塑料雨量传感器
  19. 粥 淡薄之中滋味长
  20. EPSON RC+ 7.0 使用记录一

热门文章

  1. springboot启动失败的原因及其解决方法
  2. maven打包war包
  3. 为什么我从Flutter转投Electron的怀抱?
  4. [UE4] 常用控制台命令
  5. mac更改管理员密码
  6. 2020北京考研英语一80+经验
  7. kube-proxy 切换为ipvs模式
  8. 大数据之数据仓库建设(三)
  9. 校园江湖 第三节 风起云涌
  10. 白细胞膜囊泡包裹在金纳米粒表面|DNA纳米结构的细胞膜囊泡|靶向细胞膜的多肽药物外泌体纳米载药