1、项目背景
在学习完ssm相关知识后,有了基础能力就想通过完成一个javaweb项目来巩固自己所学知识以及在具体开发过程中找出自己的不足因此便完成了书评网信息系统。
2、项目功能
手机端网站
首页
书籍详情页
评论区
登陆界面
后台管理登陆界面
书籍管理
短评管理
3、项目使用技术
开发平台: java 、idea、maven
技术栈:spring、springMvc、Mybatis、MyBatis-Plus、FreeMaker、BootStrap、LayUI
4、 主要技术点
SSM整合配置
Mybatis-Plus配置与应用
Boostrap UI框架入门
Kaptcha验证码组件使用
package com.imooc.reader.controller;
import com.google.code.kaptcha.Producer;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;
// 验证码
@Controller
public class KaptchaController {
@Resource
private Producer kaptchaProducer;
@GetMapping("/verify_code")
public void createVerifyCode(HttpServletRequest request , HttpServletResponse response) throws IOException {
//响应立即过期
response.setDateHeader("Expires",0);
//不缓存任何图片数据
response.setHeader("Cache-Control" , "no-store,no-cache,must-revalidate");
response.setHeader("Cache-Control" , "post-check=0,pre-check=0");
response.setHeader("Pragma" , "no-cache");
response.setContentType("image/png");
//生成验证码字符文本
String verifyCode = kaptchaProducer.createText();
request.getSession().setAttribute("kaptchaVerifyCode",verifyCode);
BufferedImage image = kaptchaProducer.createImage(verifyCode);//创建验证码图片
ServletOutputStream out = response.getOutputStream();
ImageIO.write(image, "png", out);//输出图片流
out.flush(); //立即输出
out.close(); // 关闭流
}
}
Spring Task任务调度
package com.imooc.reader.task;
import com.imooc.reader.service.BookService;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
/**
* 完成自动计算任务
*/
@Component
public class ComputeTask {
@Resource
private BookService bookService;
//任务调度 cson表达式
@Scheduled(cron = "0 * * * * ?")
public void updateEvaluation(){
bookService.updateEvaluation();
System.out.println("已更新所有图书评分");
}
}
拦截器的使用
package com.imooc.reader.interceptor;
import com.imooc.reader.enity.Member;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
// 拦截后台管理系统页面,必须进行登陆
public class LoginInterceptor implements HandlerInterceptor {
//方法执行之前拦截
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
Member member = (Member) session.getAttribute("loginManagementMember");
//true 放行 false拦截
if(member!=null){
return true;
}
//如果没有登录成功,或者没有先进入拦截页面进行登录,将跳转到拦截页面
response.sendRedirect("/management/login.html");
return false;
}
//方法接收请求之后,解析视图之前拦截
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
//方法执行完毕,视图渲染结束之后执行
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
5、项目难点
管理模块的分页管理
会员阅读状态变更
验证会员登陆状态
图片上传
6、存在缺陷
后台没写对应的用户管理
点赞可以无限点,没有限制次数
其他的欢迎补充。。。