JSP+SSM的图书馆管理系统Case分析
图书馆管理系统的功能要求如下:
1,实现学生信息的输入;2,实现图书信息的输入;3,实现图书的查询功能;4,实现学生信息的查询功能;5,实现图书的借出和归还功能。这个系统的角色其实只有两个,一个是学生,一个是管理员。结合实际生活可以分析这两个角色的功能,学生角色:查询图书信息;自己借阅书籍列表;管理员角色:书籍借出和归还。
在带高级 Web 课程设计时,一个同学选用了 JSP+Servlet 技术模型来实现书籍管理系统。他在JSP页面里面的各种 Service的手动生成时候发现了依赖问题,跟他在一起讨论了几个小时后来我就把他的后端改造成了SSM 模式的。但是前端仍然保留成 JSP,也算是一个不彻底的不伦不类的改造。但是对于本科学生而言,这个改造对于他完成课设 Project来说是足够的。
十年前我读本科时候,系里面还没有正式的高级 Web 课程,那个时候还是以 C++ 和 Java 的这种基础课为主。反观现在的学生要幸福很多,资料视频多到爆炸,Github 上的 Project 满天飞。现在要实现一个Web系统,方案选型实在是五花八门,八仙过海各显神通了。但是对于怎么训练本科学生循序渐进地掌握Web技术,也是需要深入地思考。据我所知,在实践的时候有别的学校老师规定学生不能使用框架来实现,也是有一定的道理。
改造后的整个 Project 的 Structure 如下图所示。
在JSP中获取后端Spring管理的Service实例类的方法在login-do.jsp如下:
<%@ page import="com.keshe.pojo.Student" %>
<%@ page import="com.keshe.service.LoginServiceImpl" %>
<%@ page import="com.keshe.service.LoginService" %>
<%@ page import="com.keshe.dao.LoginDaoImpl" %>
<%@ page import="com.keshe.dao.LoginDao"%>
<%@ page import="org.springframework.web.context.WebApplicationContext" %>
<%@ page import="org.springframework.web.context.support.WebApplicationContextUtils" %>
<%-- Created by IntelliJ IDEA. User: Chaos Date: 2022/6/9 Time: 14:39 To change
this template use File | Settings | File Templates. --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
Integer Snum=Integer.valueOf(request.getParameter("uid"));
Integer Pwd= Integer.valueOf(request.getParameter("pwd"));
WebApplicationContext wac =
WebApplicationContextUtils.getRequiredWebApplicationContext(config.getServletContext());
LoginService ls = (LoginService)wac.getBean(LoginService.class);//注入Bean的名称
student = new Student();
student.setSnum(Snum);
student.setPwd(Pwd);
Student stu=ls.login(student);
if(stu==null){
System.out.println(1L);
response.sendRedirect("login.jsp");
}else{
System.out.println(2L); //
Integer flag=stu.getSnum()>>2;
} %>
</body>
</html>
由于 LoginService 在后端是用注解由 Spring 自动生成和管理的,没有在 xml 中显示配置 bean 的 id 和实例,因此直接采用 (LoginService) wac.getBean(LoginService.class) 也就是 byType 这种方式来获取这个bean。
整个代码上传至 Github:https://github.com/chenxofhit/ModernWebClassDesignDemo1.git,数据库脚本缺失,补起来很简单。注意运行的环境JDK为“openjdk version “11.0.9.1” 2020-11-04”,Tomcat version 为8且不能使用10,否则启动项目会报错。