把准备的后台模板准备好,地址:
链接:https://pan.baidu.com/s/13mNCQ18_nl6DHpxfKl4ZFw
提取码:love
导所需要的依赖
2.把静态资源导入到static文件夹下
3.模拟数据库操作
pojo层创建
@Data@AllArgsConstructor@NoArgsConstructor//部门表public class Development { private Integer id; private String developmentName;}@Data@NoArgsConstructor//员工表public class Employee { private Integer id; private String lastName; private String email; private Integer gender; private Development development; private Date birth; public Employee(Integer id, String lastName, String email, Integer gender, Development development) { this.id = id; this.lastName = lastName; this.email = email; this.gender = gender; this.development = development; this.birth=new Date(); }}
dao层创建
@Repositorypublic class DevelopmentDao { //模拟数据库管理数据 public static Map
@Repositorypublic class EmployeeDao { //模拟数据管理员工表 public static Map
扩展首页的mvc配置
//添加一个视图控制器,来控制跳转的方式 @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("login"); registry.addViewController("/index.html").setViewName("login"); registry.addViewController("/main.html").setViewName("index"); }
需要关闭thymleaf引擎的缓存机制
#关闭thymleaf缓存机制spring.thymeleaf.cache=false
网页表头需要添加thymleaf的命名空间
xmlns:th="http://www.thymeleaf.org"
需要把网页改成thymleaf格式
所有页面的静态资源都需要使用thymleaf接管,
其他也都是需要改,在线的连接不需要改
国际化首先需要修改File Encodings
创建i18n文件夹,并且创建login.properties
把网页修改成国际化
th:text:#{}来配置国际化信息
自定义一个组件LocaleResolver来控制语言的国际化
//解析请求@Overridepublic Locale resolveLocale(HttpServletRequest request) { //获取语言的请求 String language = request.getParameter("l"); Locale locale = Locale.getDefault();//如果没有所选的语言就是默认的 //如果获取的链接携带了国际化的参数 //如果选择的语言不为空 if(!StringUtils.isEmpty(language)){ //zh_CN String[] split = language.split("_"); //国家,地区 locale = new Locale(split[0], split[1]); } return locale;}
然后将自定义组件配置到spring容器中,也就是@Bean
//这个是为了实现国际化 public LocaleResolver localResolver(){ return new MyLocalResolver(); }
登录功能实现因为数据库是伪造的,所以登录的时候无论什么都能登录进去
写一个登录的控制器LoginController
@Controllerpublic class LoginController { @RequestMapping("/user/login") public String login(@RequestParam("username")String username, @RequestParam("password")String pwd, Model model, HttpSession session) { System.out.println("debug==>"+username); if (!StringUtils.isEmpty(username)&&"123456".equals(pwd)) { session.setAttribute("loginUser", username); return "redirect:/main.html"; } else { model.addAttribute("msg", "密码或者用户名输入错误,请重新登录!"); return "login"; } }}
由于没有提示,所以需要在前端加一个标签来提示
展示登录页面
登录拦截器
创建一个拦截器方法LoginHandlerInterceptor,为了拦截那些没有登录就进入主界面的操作
public class LoginHandlerInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { //登录成功后,应该有用户的session Object loginUser = request.getSession().getAttribute("loginUser"); if (loginUser==null){//没有登录 request.setAttribute("msg","没有权限,请先登录"); request.getRequestDispatcher("/index.html").forward(request,response); return false; }else { return true; } }}
把LoginHandlerInterceptor配置到spring容器中,@Bean.
//添加一个拦截器,为了拦截那些没有登录就进入主界面的操作 @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("-->
增加员工展示
添加修改员工信息功能
@GetMapping("/updateEmp/{id}")public String toUpdateEmp(@PathVariable("id") Integer id, Model model){ Employee employeeById = employeeDao.queryEmployeeById(id); System.out.println(employeeById); model.addAttribute("emp",employeeById); Collection
创建一个update.html
修改页面展示
删除及404处理
添加删除功能
@RequestMapping("/delete/{id}")public String Deleteemp(@PathVariable("id") Integer id){ employeeDao.deleteEmplyee(id); return "redirect:/emps";}
404处理页面只要放入到/templates/error文件夹下面,然后spring就会自动识别,如果跳转的页面不存在,就会自动跳转至此。
好了,一个springboot模拟数据库开发的网站就到此结束了,如果有什么不对的地方,请及时说出,我也会即使改正的。