狂神员工管理系统(没链接数据库)
2021/11/26 19:11:54
本文主要是介绍狂神员工管理系统(没链接数据库),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
练习一下SpringBoot
首先新建一个springboot项目
-
这里选择Spring Initializr
-
改一下文件名和路径,java版本选择java8
-
依赖这里勾选Spring Web
-
多余的东西删掉
-
等待依赖加载完成即可(过程很慢,在网上下载)
导入我们需要的依赖包
本项目比较小,没有实现数据库层面,所以只导入了lombok和thymeleaf
<!-- lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <!-- import thymeleaf--> <dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
导入静态资源
这几个html文件我们拷贝到templates里面,asserts下面的资源拷贝到static里面
接下来伪造一部分数据,因为我们没有链接数据库
- 新建pojo文件夹,写入Department和Employee类
- Department两个属性,id和name,使用注解加入有/无参构造
- @Data : 注解在类上, 为类提供读写属性, 此外还提供了 equals()、hashCode()、toString() 方法
- Employee也同理
- 新建dao文件夹,编造一部分数据
- 新建DepartmentDao和EmployeeDao
@Repository // 给spring托管
- 实现DepartmentDao和EmployeeDao
至此准备工作完毕
实现登录界面
- 导入thymeleaf,万物都可被thymeleaf接管
xmlns:th="http://www.thymeleaf.org"
- 更改href标签让thymeleaf接管,具体方法查看thymeleaf文档
- 新建config文件夹,新建MyMvcConfig.java
- 在这里配置首页内容,直接转发到index.html页面,继承WebMvcConfigurer
addViewControllers:页面跳转
以前写SpringMVC的时候,如果需要访问一个页面,必须要写Controller类,然后再写一个方法跳转到页面,其实重写WebMvcConfigurer中的addViewControllers方法即可达到效果了
@Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/toLogin").setViewName("login"); }
值的指出的是,在这里重写addViewControllers方法,并不会覆盖WebMvcAutoConfiguration(Springboot自动配置)中的addViewControllers(在此方法中,Spring Boot将“/”映射至index.html),这也就意味着自己的配置和Spring Boot的自动配置同时有效,这也是我们推荐添加自己的MVC配置的方式
用户登录
- 主要就是判断密码是否正确
@Controller public class LoginController { @RequestMapping("/user/login") public String login(@RequestParam("username") String username, @RequestParam("password") String password, Model model, HttpSession session){ if(!StringUtils.isEmpty(username) && "123456".equals(password)){ session.setAttribute("loginUser",username); return "redirect:/main.html"; }else { model.addAttribute("msg","用户名或者密码错误"); return "index"; } } }
- 在index.html中 给input标签设置两个名字 name=“username” / name=“password”
国际化
-
这里会涉及到中文乱码问题,具体解决方法如下!
setting 里面搜索 File Encoding 都改成utf-8 即可解决
-
在 resources 新建一个i18n文件夹,
- login.properties
- login_en_US.properties
- login_zh_CN.properties
-
更改index.html
主要就是对每个有文字的地方加一个 th:text="#{login.remember}"
最后中英文那里 th:href="@{/index.html(l=‘zh_CN’)}"
-
在config下新建MyLocalResolver.java写一个自己的LocaleResolver
-
在application.properties中加入
# 关闭默认缓存机制 spring.thymeleaf.cache=false spring.messages.basename=i18n/login
- 在MyMvcConfig中注入
@Bean public LocaleResolver localeResolver(){ return new MyLocalResolver(); }
- 注意:MyMvcConfig中一定要加@Configuration注解,不然跳转不过来
拦截器
在config下新建LoginHandlerInterceptor.java
public class LoginHandlerInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { Object loginUser = request.getSession().getAttribute("loginUser"); if(loginUser==null){ request.setAttribute("msg","没有权限,请先登录"); request.getRequestDispatcher("/index.html").forward(request,response); return false; }else { return true; } } }
同时在MyMvcConfig.java下配置拦截器
@Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new LoginHandlerInterceptor()) .addPathPatterns("/**") .excludePathPatterns("/index.html","/","/user/login","/css/*","/js/**","/img/**"); }
展示员工列表
-
在EmployeeDao中加入返回所有的方法
public Collection<Employee> getAll(){ return employees.values(); }
-
新建EmployeeController.java
@RequestMapping("/emps") public String list(Model model){ Collection<Employee> employees = employeeDao.getAll(); model.addAttribute("emps",employees); return "emp/list"; }
-
新建emp文件夹,将list.html加入其中, 如上所示
-
修改原有展示的内容
<table class="table table-striped table-sm"> <thead> <tr> <th>id</th> <th>lastName</th> <th>email</th> <th>gender</th> <th>department</th> <th>birth</th> <th>操作</th> </tr> </thead> <tbody> <tr th:each="emp:${emps}"> <td th:text="${emp.getId()}"></td> <td th:text="${emp.getLastName()}"></td> <td th:text="${emp.getEmail()}"></td> <td th:text="${emp.getGender()}"></td> <td th:text="${emp.getDepartment()}"></td> <td th:text="${emp.getBirth()}"></td> </tr> </tbody> </table>
- 修改list.html和dashboard.html, 更改员工展示映射地址,并加入点击高亮
<a class="nav-link" th:class="${active=='list.html'? 'nav-link active':'nav-link'}" th:href="@{/emps}">
这里把html中共同的代码放到common里面,设置成函数的模式,维护的时候方便
增加员工列表
- 在Dao层写一个添加的方法
- 在emp中新建一个add.html
- 在add中添加一个表单用来收集信息
- 在controller层添加一个返回给表单’‘部门’'信息的方法
@GetMapping("/emp") public String toAddpage(Model model){ Collection<Department> departments = departmentDao.getDepartments(); model.addAttribute("departments",departments); return "emp/add"; }
- 再添加一个post请求用于添加员工
@PostMapping("/emp") public String addEmp(Employee employee){ // 添加的操作 forward employee.setBirth(new Date()); employeeDao.save(employee); return "redirect:/emps"; }
- list.html中加一个跳转到添加页面的按钮
<h2><a class="btn btn-sm btn-success" th:href="@{/emp}">添加员工</a></h2>
修改和删除基本上也是大同小异
404处理
404的话 直接在templates下新建一个error把404放进去即可
注销操作
在LoginController中加一个关闭session方法即可
<a class="nav-link" th:href="@{/user/logout}">注销</a>
展示一下界面截图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EvKXjxJi-1637900550431)(C:\Users\MissLiuAndMrWang\AppData\Roaming\Typora\typora-user-images\image-20211126121452175.png)]
项目链接:https://pan.baidu.com/s/1RckRekY3mpnAdJoLPEP1GA
提取码:wlfd
这篇关于狂神员工管理系统(没链接数据库)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)