接上上一篇博客的继续往下做,上一篇已经实现了mybatis自动生成代码,和连接数据库测试部分
本篇我们添加一些功能,实现登录注册,时间原因,前端实现的很粗糙,以后有时间再改吧
首先看一下数据库的构成,作为一个例子实现的简单点
看了一下mybatis自动生成的代码,不太好用,所以我们自己手写sql,然后按照Dao,Service,Controller的顺序修改代码
工程结构:
具体的代码放Github里了
看一下结果吧
首页:
点击注册:
下一步实现拦截器、shiro等功能
5.26更新:
实现拦截器的功能,如果不登录的话,就自动跳转到登录页面,只有登录了才能访问别的页面
这次的文件结构如下:
新加拦截器:
1 import org.springframework.web.servlet.HandlerInterceptor; 2 import org.springframework.web.servlet.ModelAndView; 3 4 import javax.servlet.http.HttpServletRequest; 5 import javax.servlet.http.HttpServletResponse; 6 import javax.servlet.http.HttpSession; 7 8 public class MyInterceptor implements HandlerInterceptor { 9 //在请求处理之前进行调用(Controller方法调用之前 10 @Override 11 public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { 12 HttpSession session = httpServletRequest.getSession(); 13 Object user = session.getAttribute("session_user"); //获取登录的session信息 14 if(user != null){ 15 System.out.println(user); 16 return true; 17 } 18 else{ 19 System.out.println("没登录"); 20 httpServletRequest.setAttribute("msg","没有权限请先登陆"); 21 httpServletResponse.sendRedirect("/"); //未登录自动跳转界面 22 return false; 23 } 24 } 25 26 //请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后) 27 @Override 28 public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { 29 System.out.println("postHandle被调用 "); 30 } 31 32 //在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作) 33 @Override 34 public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { 35 System.out.println("afterCompletion被调用 "); 36 } 37 }
新加配置文件:
1 import com.example.mybatis.interceptor.MyInterceptor; 2 import org.springframework.context.annotation.Configuration; 3 import org.springframework.web.servlet.config.annotation.InterceptorRegistry; 4 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 5 6 @Configuration 7 public class WebMvcConfig implements WebMvcConfigurer { 8 /** 9 * 注册拦截器 10 */ 11 @Override 12 public void addInterceptors(InterceptorRegistry registry) { 13 //addPathPattern后跟拦截地址,excludePathPatterns后跟排除拦截地址 14 registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**").excludePathPatterns("/userLogin").excludePathPatterns("/index").excludePathPatterns("/"); 15 } 16 }
并修改Controller中的一些东西