JSP+Servlet培训班作业管理系统[16]–校长角色之课程浏览功能实现

点此查看本系列文章目录、源代码、配套视频教程

1. 本章任务

校长角色除了要完成人员管理之外,我们还希望校长可以查看所有课程信息。

注意课程是由教师发布的,校长只能查看,但是不能新增、修改、删除。

其实该功能与人员浏览几乎一模一样,我们以记流水账的形式再描述下,加深大家的开发印象。

2. 为校长添加菜单

public class Constants {
	// 用于保存角色及对应的菜单信息
	public static HashMap<String, String[][]> roleMenuMap = new HashMap<String, String[][]>();
	// 使用static代码块对roleMenuMap进行初始化
	static {
		// 校长拥有的菜单
		roleMenuMap.put("master", new String[][] { { "人员管理", "userManage.jsp" }, { "课程查看", "courseView.jsp" } });
	}
}

3. 跳转课程浏览页时携带课程数据

修改RouteServlet.java

    else if (childPage.equals("courseView.jsp")) {
			CourseDao courseDao=new CourseDao();
			request.setAttribute("courses", courseDao.getCourses());
		}

4. 添加course.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!-- 使用c:标签需要添加本行代码 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>courseView.jsp</title>
<link href="css/content.css" type="text/css" rel="stylesheet" />
</head>
<body>
	<div id="content_top">课程浏览</div>
	<div id="content_mid">
		<table class="table_theme1">
			<thead>
				<tr>
					<th>课程编号</th>
					<th>课程名称</th>
					<th>授课教师</th>
				</tr>
			</thead>
			<c:forEach items="${course}" var="item">
				<tr>
					<td>${item.courseId}</td>
					<td>${item.courseName}</td>
					<td>${item.courseUser}</td>
				</tr>
			</c:forEach>
		</table>
	</div>
</body>
</html>

5. 存在的问题

此处存在一个问题,就是courseUser存储的是用户的id,而我们界面上显示的时候,无疑是更想要得到用户的名字。

此处可以给Course类添加一个courseUserName冗余字段,注意该字段不参与insert/update等更新操作,只是查询时冗余出用户姓名而已。

6. 联表查询用户姓名

6.1 修改Course类

/**
 * 课程类
 */
public class Course {
	private int courseId;
	private int courseUser;
	private String courseName;

	/**
	 * 冗余字段,仅用于查询
	 */
	private String courseUserName;

	// 省略get set方法
}

6.2 修改CourseDao

修改CourseDao的getCourses方法和makeOneCourse方法,联表查询出用户姓名。

	/**
	 * 获取全部
	 */
	public List<Course> getCourses() {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		List<Course> courses = new ArrayList<Course>();
		try {
			conn = DbUtils.getConnection();
			String sql = "select c.*,u.user_name from course c left join user u on c.course_user=u.user_id";
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
			while (rs.next()) {
				courses.add(makeOneCourse(rs));
			}
		} catch (SQLException e) {
		} finally {
			DbUtils.releaseConnection(rs, ps, conn);
		}
		return courses;
	}

	/**
	 * 获取一个
	 */
	public Course makeOneCourse(ResultSet rs) throws SQLException {
		Course course = new Course();
		course.setCourseId(rs.getInt("course_id"));
		course.setCourseName(rs.getString("course_name"));
		course.setCourseUser(rs.getInt("course_user"));
		course.setCourseUserName(rs.getString("user_name"));
		return course;
	}

6.3 修改courseView.jsp

用户名部分显示姓名:

    <table class="table_theme1">
			<thead>
				<tr>
					<th>课程编号</th>
					<th>课程名称</th>
					<th>授课教师</th>
				</tr>
			</thead>
			<c:forEach items="${courses}" var="item">
				<tr>
					<td>${item.courseId}</td>
					<td>${item.courseName}</td>
					<td>${item.courseUserName}</td>
				</tr>
			</c:forEach>
		</table>

7. 总结

处理联表查询的方式有很多,本章采取了一种比较简单方法,可能不够正规,或者性能不够好。

但是管他的呢,我们这个入门课程,采用这样的技术就够了。

看下效果如下,大功告成也!!
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
一、项目简介 本项目是一套基于JavaWeb的作业提交与批改系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 项目都经过严格调试,确保可以运行! 二、技术实现 ​后台框架:JSPServlet、JDBC ​数据库:MySQL 开发环境:JDK、Eclipse、Tomcat 三、系统功能作业提交与批改系统采用B/S结构,使用JAVA开发语言,以MySQL作为后台数据库,系统分为前台界面和后台管理。 系统共包含三种角色:管理员、教师、学生,具体功能如下: (1) 班级信息管理模块:在该模块中定义了班级信息的管理,其功能包括班级信息的录入、查询、删除、打印等操作。 (2) 教师信息管理模块:在该模块中定义了教师信息的管理,其功能包括教师信息的录入、查询、删除、打印等操作。 (3) 学生信息管理模块:在该模块中定义了学生信息的管理,其功能包括学生信息的录入、查询、删除、打印等操作。 (4) 公告信息管理模块:在该模块中定义了公告信息的管理,其功能包括公告信息的录入、查询、删除等操作。 (5) 留言信息管理模块:在该模块中定义了留言信息的管理,其功能包括留言信息的查询、删除等操作。 (6) 资料信息管理模块:在该模块中定义了资料信息的管理,其功能包括资料信息的录入、查询、删除等操作。 (7) 系统管理模块:在该模块中定义了管理员信息的管理,其功能包括管理员的查询,增加和删除等功能操作。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员大阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值