图书管理系统各功能实现
1.登录功能
login.jsp的pageContext.request.contextPath这句话表示请求路径,获得部署项目的名字,取得是绝对路径.点击login.jsp超链接按钮后将表单中的数据提交到映射路径/login的UserController中的login类上通过userService接口的调用UserMapper的login方法查询用户信息(将user作为实参),login方法是通过页面传递的用户账号和密码信息查询用户信息,UserController类中也将用户传递来的用户账号和密码信息封装在user中,如果用户不为空将用户信息储存到Session并跳转到后台首页如果为空则在Request域中添加提示信息并转发回登录页面 会话控制Session[对象存储]特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个会话中一直存在下去
2.密码判断方法
写一个CheckPassword方法,正则表达式".\\d+."表示所有非负数小数和整数
//数字
public static final String REG_NUMBER = ".*\\d+.*";
//小写字母
public static final String REG_UPPERCASE = ".*[A-Z]+.*";
//大写字母
public static final String REG_LOWERCASE = ".*[a-z]+.*";
//特殊符号
public static final String REG_SYMBOL = ".*[~!@#$%^&*()_+|<>,.?/:;'\\[\\]{}\"]+.*";
public static boolean checkPasswordRule(String password){
//密码为空或者长度小于8位则返回false
if (password == null || password.length() <8 ) return false;
int i = 0;
if (password.matches(REG_NUMBER)) i++;
if (password.matches(REG_LOWERCASE))i++;
if (password.matches(REG_UPPERCASE)) i++;
if (password.matches(REG_SYMBOL)) i++;
if (i < 3 ) return false;
return true;
}
3.图书信息检索功能
findById根据id查询图书 concat函数用于将指定的字符串参数连接到字符串上动态拼接查询 防止sql注入
selectBorrowed查询借阅但未归还的图书和待归还确认的图书
selectMyBorrowed查询借阅但未归还的图书
4.Bean的装配
Bean的实例化 1.构造方法实例化 2. 静态工厂实例化 3.实例工厂实例化
Bean的装配方式 基于XML的装配(依赖注入)分两种一种是构造方法注入一种是属性setter方法注入
基于注解的装配 自动装配
5.登陆验证
创建登录拦截器类,实现方法:获取Session中的用户信息,如果获取到的用户不为空,说明已经登录 ,直接放行如果用户是请求登录的请求也直接放行,否则将请求转发到登录页面并提示用户登录。
6.图书借阅归还功能
点击借阅按钮后系统会弹出图书借阅的模态框((book_modal)页面,默认是隐藏的aria-hidden = true)并且用findById方法和borrowBook方法当前图书的信息进行更新,随后调用BookMapper的editBook方法将图书信息修改,最后调用my.js的findBookById()方法发送异步请求.将查询到的图书信息回显到模态框中,在图书借阅的模态框中填写预计归还的日期并点击保存提交借阅请求。
如何实现:实现DAO层,在BookMapper中新增两个方法editbook和findById,创建映射文件BookMapper.xml使用update元素编写修改方法,在BookService新增findById和borrowBook方法 在接口实现类重写这两个方法,根据id查询借阅图书的完整信息再再模态框中更新。单击借阅按钮调用my.js的findById方法,随后在填写归还日期后调用my.js的borrow方法,将模态框的表单数据提交到映射路径为/book/borrowBook的控制器中,借阅成功时,borrow方法会异步查询所有的图书信息(开启另外一条线程去数据库里面查询数据)
归还功能 returnBook当前借阅模块根据图书id查询图书信息,判断两次借书的是不是同一个人
boolean rb = book.getBorrower().equals(user.getName());
如果是允许归还,本系统中设置状态status 0表示可借阅 1表示借阅中 2表示归还中 将图书借阅状态修改为2 单击归还,归还按钮绑定了鼠标单击事件会执行my.js的returnBook方法,将归还的图书id作为参数像映射路径/book/returnBook的控制器发送异步请求,并将请求结果的信息展现在页面中,将图书状态修改为归还中。
确认归还 在BookService接口中新增一个方法returnConfirm方法,点击归还确认按钮时,首先通过查询id查出该图书的完整信息,随后清空当前图书的借阅信息.在Controller中新增一个returnConfitm方法将等待归还确认的图书id作为returnConfirm方法的实参.并返回归还确认的结果.
设置控制器类拦截用户请求,来调用业务逻辑层中相应组件的业务逻辑方法来处理用户请求