SSH框架搭建的选课系统

本文是博主首次尝试使用SSH框架搭建选课系统的实践过程,记录了遇到的挑战和解决方案。在开发过程中,博主遇到了Hibernate连接MySQL的问题,最终选择MyEclipse进行开发。系统设计了课程、学生、教师和选课表等数据库表,使用Bootstrap进行前端布局,并利用bootstrap-table、modal、x-editable等插件。在多表查询时,博主通过新建bean映射类解决了数据封装问题。此外,详细介绍了SSH框架在控制层、业务层和持久层的作用,以及系统的主要功能,包括管理员和学生的操作等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是一门课程——web应用开发技术的作业
也是我第一次接触javaweb,由于博主有太多课程作业要完成了,所以做之前也没有好好看过教程,在不精通原理的情况下就开始着手做了,实在是招架不及,故很多地方会显得不规范和粗糙,毕竟是第一次,能实现就得了。见谅。

博主一开始还慢悠悠跟着一个教程用eclipse配置ssh框架(花了近两天时间?罪过阿),结果出现各种奇怪的问题,调试了半天还是无果,hibernate死活连不上mysql,我觉得可能是jdk9和hibernate3之间不太兼容的问题?

故下载了myeclipse,然而jdk1.9获取不到激活序列 ,下了个1.8重新配置,myeclipse总算是下好了。

接着一切还算顺利。这里我先会记录一下遇到的问题。

1、hibernate使用save在数据库中添加数据,这不同于查询,像添、改、删这些操作,都需要采用提交事务才能够对数据库进行操作:

 Session session = getSession();
		Transaction transaction = session.beginTransaction();
		//储存学生信息
		session.save(student);
		//提交事务
		transaction.commit();
		//关闭session
		session.close();

2、数据库设计
在第三次实验中,我简单地实现了学生选课退课以及查看课程的功能,数据库中设计了三个表,分别为课程表、学生表、学生选课表。课程表中的信息包括了一些额外的内容(任课教师,上课教室,时间),其实这三个属性都不应该放置在课程表中,而应该再设计一个教师表和课程安排表,教师表中单独存放教师的所有信息,课程安排表中单独存放课程的安排情况包括:任课教师编号、课程编号、上课教室、课程时间等。

每种课程的课程安排可以是多种多样的,一门课可以由多个老师任课,也可分配在不同的教室。

3、hibernate进行多表查询如何处理结果集??
最近一直在思考PO和VO的问题。
VO(value object) 值对象
通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.个人觉得同DTO(数据传输对象),在web上传递。

PO(persistant object) 持久对象
在o/r映射的时候出现的概念,如果没有o/r映射,没有这个概念存在了。通常对应数据模型(数据库),本身还有部分业务逻辑的处理。可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。

BO(business object) 业务对象
从业务模型的角度看,见UML元件领域模型中的领域对象。封装业务逻辑的java对象,通过调用DAO方法,结合PO,VO进行业务操作。

遇到的问题是,我必须查询教师表、课程安排表、课程表这三个表,读取我想要显示在前端的属性,包括课程表中的所有属性、任课教师编号对应的教师名称、上课时间、上课地点。

而且由于考虑到后续课程表的实现,我将排课表的时间属性分为Cday和Cindex,分别代表上课时间在星期几的第几节课。

那么就更不能直接显示数据库映射的PO类属性了。

在网上查了一些资料,似乎没有找到规范的说明。于是准备自己瞎摸索了。我的解决方法是新建了一个bean映射类,将需要显示的数据封装在此类内,最重要的是构造函数,因为数据库进行查找时将会根据此类的构造函数进行传值,并将查询结果转化为对象。

由于在数据库中的排课时间格式为:Cday:1-7代表星期一-星期日
Cindex :1-12 代表第几节课,一般课程都会占1节以上,故用英文逗号符分割,比如1,2就代表第1,2节课。

package com.zy.domain;

//VO类,应该包括需要在前端显示的课程属性和课程安排信息
//包括 课程编号 课程名称 课程类型 开课学院 课程学分 任课老师姓名  上课地点 上课时间
public class CourseVo {
   
      private String cid;
      private String cname;
      private String ctype;
      private String cacademy;
      private int ccredit;
      private String tname;
      private String clocation;
      private String cday;
      private String cindex;
      
      //test
      private String ctime;
      
      
	public CourseVo(String cid, String cname, String ctype, String cacademy, int ccredit, String tname,
			String clocation, String cday
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值