Javaweb学生管理系统期末设计

186 阅读5分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

学生管理-描述文档

有需要参考的可以进入,项目下载地址一:功能描述 该项目实现了以下功能:  页面包括展示信息和管理信息两部分,并且实现了图片验证登录  通过连接数据库并执行SQL语句实现对数据库的增、删、查、改  使用DBUtils数据库工具(QueryRunner)  页面基本美观且合理  设置了过滤器解决乱码问题,并实现了退出返回主页 下面是部分截图: 1.主页 在这里插入图片描述 2.登录界面 在这里插入图片描述 3.登录成功 登陆时调用登录doLogin,该Servlet完成相应的逻辑操作(判断用户名、密码、验证码是否为空)、并且调用相应的BaseDao数据库访问层的相应组件,完成登陆校验,然后将结果返回给视图层 ,视图层提供给用户,以界面的形式展示。 在这里插入图片描述 4.修改 在这里插入图片描述 5.查看 在这里插入图片描述 6.添加 在这里插入图片描述 7.删除 在这里插入图片描述 二:实现方法 ①实现该项目涉及的知识有: HTML,CSS,JavaScript,MySQL数据库,JSP指令,JSP对象,JavaBean,JDBC,EL和JSTL,Servlet,Filter过滤器等最基本的知识。使用了JavaBean+JSP+Servlet开发模型,就是Model+View+Controller,即MVC设计模式。 在这里插入图片描述 ②主要的思想和方法 • 继承HTTPServlet父类重写 doGet() 和doPost()方法 • 使用request.getParameter(String str); 获取前台(页面)的数据(获取参数) • 给前台页面设置值用:request.setAttribute(String args, Object obj); • Jsp重定向,使用的是HttpServletResponese对象中response.sendRedirect(Sting location)方法。是一个响应对象的方法,调用这个方法,表明整个请求已经结束。 • 请求转发,是javax.servlet.RequestDispatcher接口的forward(“”)方法来实现的。 ③设计流程: Servlet -> Service(业务类) -> DAO -> database 当浏览器提交请求到 Tomcat Web 服务器的时候,对应的 Servlet 的doGet/doPost 方法会被调用,接着在 Servlet 中调用 Service类,然后在 Service 类中调用DAO类,最后在 DAO 中访问数据库获取相应的数据。 在这里插入图片描述 **④实现该项目我所做的基本步骤:**需求分析,软件设计,编码及实现,美化以及完善。 首先需要搭建数据库,实现学生和老师实体类,这里不做具体描述。 1.数据库操作的基类BaseDao,实现连接、查询、释放资源,下面是部分代码:

try {
			Class.forName("com.mysql.jdbc.Driver");
			String url = "jdbc:mysql://localhost:3306/Student";
			String username = "root";
	    	String password = "123";
connection = DriverManager.getConnection(url, username, password);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
			return false;
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}

2.定义学生操作的接口StudentDao,下面是部分代码:

public interface StudentDao {
	//获取所有学生信息
	public List<Student> getAllStudent();
	//获取指定学生信息
	public Student getStudentMoreInfo(Student student);
	//添加学生
	public int addStudent(Student student);
	//删除学生
	public int delStudent(Student student);
	//修改学生信息
	public int modifyStudent(Student student);
}

3.实现接口StudentDao,获取所有学生信息部分代码:

List<Student> list = new ArrayList<Student>();
		String sql = "select `id`,`name`,`gradeId`,`age`,`sex`,`profile` from student ";
		Object[] params = {};
		ResultSet rs = this.executeQuerySQL(sql, params);
		try {
			while (rs.next()) {
				Student stu = new Student();
				stu.setId(rs.getInt("id"));
				stu.setAge(rs.getInt("age"));
				stu.setGradeId(rs.getInt("gradeId"));
				stu.setSex(rs.getString("sex"));
				stu.setName(rs.getString("name"));
				stu.setProfile(rs.getString("profile"));
				list.add(stu);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}

下图为查询方法以及步骤: 在这里插入图片描述 4. 实现接口StudentDao,获取指定学生信息部分代码:

Student stu = new Student();
String sql = "select `name`,`gradeId`,`age`,`sex`,`profile` from student where `id`=?";
Object[] params = { student.getId() };
ResultSet rs = this.executeQuerySQL(sql, params);
try {
	while (rs.next()) {
		stu.setAge(rs.getInt("age"));
		stu.setGradeId(rs.getInt("gradeId"));
		stu.setSex(rs.getString("sex"));
		stu.setName(rs.getString("name"));
		stu.setProfile(rs.getString("profile"));
	}
} catch (SQLException e) {
	e.printStackTrace();
}

5 实现接口StudentDao,添加学生部分代码:

int row = 0;
		String sql = "insert into student(`id`,`name`,`age`,`sex`,`gradeId`,`profile`) values(?,?,?,?,?,?)";
		Object[] params = {student.getId(),student.getName(),student.getAge(),student.getSex(),student.getGradeId(),student.getProfile()};
		row = this.executeUpdateSQL(sql, params);
		if(row>0){
			System.out.println("增加学生成功");
		}else{
			System.out.println("增加学生失败");
		}
		return row;

删除学生和添加学生操作类似,这里不再做具体描述。 6. 下面是处理登录的Servlet,用来处理登录请求,部分代码如下:

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String userName = request.getParameter("username");
		String password = request.getParameter("password");
		String checkCode = request.getParameter("check_code");
		String savedCode = (String) request.getSession().getAttribute(
				"check_code");
if(userName!=null && !userName.equals("")&& checkCode.equals(savedCode)){
			UserService uerService = new UserServiceimp();
			User user = new User();
			user.setUsername(userName);
			user.setPassword(password);
			if(uerService.findUser(user)){//存在这个用户,可以正常访问学生信息
				request.getSession().setAttribute("user", user);
				response.sendRedirect("/Student/pages/stuList.jsp");
}else {//不存在这个用户,给出提示,转回登录页面
				String message = "用户名或密码错误";
				request.getSession().setAttribute("msg", message);
				response.sendRedirect("/Student/login.jsp");
			}
		}else {
			//判断验证码是否正确
			String message = "验证码输入错误!!!";
			request.getSession().setAttribute("msg", message);
			response.sendRedirect("/Student/login.jsp");
		}
			}

7. 下面是addStudent Servlet类实现添加学生到数据库的部分代码,其他不做详细描述:

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String name = request.getParameter("stuName");
		String sex = request.getParameter("sex");
		int age = Integer.parseInt(request.getParameter("stuAge"));
		String gradeName = request.getParameter("stuGrade");
		String profile = request.getParameter("showProfile");
		
		
		GradeService gService = new GradeServiceimp();
		Grade grade = gService.getGrade(gradeName);
		
		Student stu = new Student();
		stu.setName(name);
		stu.setAge(age);
		stu.setSex(sex);
		stu.setProfile(profile);
		stu.setGradeId(grade.getGradeId());
		
		StudentService studentService = new StudentServiceimp();
			
			String opr = request.getParameter("opr");//根据传的opr参数决定是添加学生还是修改学生信息
			int n = 0;
			if(opr.equals("addStu")){ //添加
				n = studentService.addStudent(stu);
			}else if(opr.equals("modifyStu")){//修改
				int id = Integer.parseInt(request.getParameter("stuId"));
				stu.setId(id);
				n = studentService.modifyStudent(stu);
			}			
			if(n>0){
				response.sendRedirect("/Student/pages/stuList.jsp");
			}else{
				response.sendRedirect("/Student/pages/addStu.jsp");
			}
		}

此外,jsp中使用了css来统一控制样式,用JavaScript在本地处理一些简单的判断,例如:

<script type="text/javascript">
	function validate_form() {
		var name = document.getElementById("username").value;
		var password = document.getElementById("password").value;
		if (name == null || name == "") {
			alert("姓名不能为空");
			return false;
		}
		if (password == null || password == "") {
			alert("密码不能为空");
			return false;
		}
		return true;
	}

三、项目小结 总的来说从这个实验中我学到了不少的东西,比如如何将web的MVC设计模式付诸于现实等等,并且我还将这学期学的专业核心课《软件工程》运用到了这个项目,非常的开心。虽然有很多问题都不是很会,通过查阅资料或者看了课本后,我还是大概知道了,我学会了独立解决问题的能力,遇到的问题主要是如何实现对数据库增、删、查、改,通过对书上的例子以及网上查阅资料,最后还是大概懂了,我深知自己还有很多不足的地方,路漫漫其修远兮,吾将上下而求索。我从这个项目中学到的还有很多,非常的充实。