久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Spring Boot 員工管理系統超詳細教程(源碼分享)

瀏覽:45日期:2023-07-15 13:02:49
員工管理系統1、準備工作

資料下載

內含源碼 + 筆記 + web素材

源碼下載地址:

http://xiazai.jb51.net/202105/yuanma/javaguanli_jb51.rar

Spring Boot 員工管理系統超詳細教程(源碼分享)

筆記

Spring Boot 員工管理系統超詳細教程(源碼分享)

素材

Spring Boot 員工管理系統超詳細教程(源碼分享)

源碼

Spring Boot 員工管理系統超詳細教程(源碼分享)

1.1、導入資源

將文件夾中的靜態資源導入idea中

Spring Boot 員工管理系統超詳細教程(源碼分享)

位置如下

Spring Boot 員工管理系統超詳細教程(源碼分享)

1.2、編寫pojo層

員工表

//員工表@Data@NoArgsConstructorpublic class Employee { private Integer id; private String lastName; private String email; private Integer gender; //性別 0 女, 1,男 private Department department; private Date birth; public Employee(Integer id, String lastName, String email, Integer gender, Department department) {this.id = id;this.lastName = lastName;this.email = email;this.gender = gender;this.department = department;this.birth = new Date(); }}

部門表

//部門表@Data@AllArgsConstructor@NoArgsConstructorpublic class Department { private int id; //部門id private String departmentName; //部門名字}

添加lombok依賴

<!--lombok--><dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId></dependency>1.3、編寫dao層

這里我們模擬數據庫,springboot和數據庫的連接在后序課程中。

部門dao

package com.kuang.dao;import com.kuang.pojo.Department;import org.springframework.stereotype.Repository;import java.util.Collection;import java.util.HashMap;import java.util.Map;//部門dao@Repositorypublic class DepartmentDao { //模擬數據庫中的數據 private static Map<Integer, Department>departments = null; static {departments = new HashMap<Integer, Department>(); //創建一個部門表departments.put(101,new Department(101,'教學部'));departments.put(102,new Department(102,'市場部'));departments.put(103,new Department(103,'教研部'));departments.put(104,new Department(104,'運營部'));departments.put(105,new Department(105,'后勤部')); } //獲取所有的部門信息 public Collection<Department> getDepartments(){return departments.values(); } //通過id得到部門 public Department getDepartmentById(Integer id){return departments.get(id); }}

員工dao

package com.kuang.dao;import com.kuang.pojo.Department;import com.kuang.pojo.Employee;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Repository;import java.util.Collection;import java.util.HashMap;import java.util.Map;//員工dao@Repository //被string托管public class EmployeeDao { //模擬數據庫中的數據 private static Map<Integer, Employee> employees= null; //員工所屬的部門 @Autowired private DepartmentDao departmentDao; static {employees = new HashMap<Integer,Employee>(); //創建一個部門表employees.put(1001,new Employee( 1001,'AA','1622840727@qq.com',1,new Department(101,'教學部')));employees.put(1002,new Employee( 1002,'BB','2622840727@qq.com',0,new Department(102,'市場部')));employees.put(1003,new Employee( 1003,'CC','4622840727@qq.com',1,new Department(103,'教研部')));employees.put(1004,new Employee( 1004,'DD','5628440727@qq.com',0,new Department(104,'運營部')));employees.put(1005,new Employee( 1005,'FF','6022840727@qq.com',1,new Department(105,'后勤部'))); } //主鍵自增 private static Integer ininId = 1006; //增加一個員工 public void save(Employee employee){if(employee.getId() == null){ employee.setId(ininId++);}employee.setDepartment(departmentDao.getDepartmentById(employee.getDepartment().getId()));employees.put(employee.getId(),employee); } //查詢全部的員工 public Collection<Employee>getALL(){ return employees.values(); } //通過id查詢員工 public Employee getEmployeeById(Integer id){return employees.get(id); } //刪除一個員通過id public void delete(Integer id){employees.remove(id); }}2、首頁實現2.1、引入Thymeleaf

pom.xml導入依賴

<dependency> <groupId>org.thymeleaf</groupId> <artifactId>thymeleaf-spring5</artifactId></dependency><dependency> <groupId>org.thymeleaf.extras</groupId> <artifactId>thymeleaf-extras-java8time</artifactId></dependency>2.2、編寫MyMvcConfig

package com.kuang.config;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;//擴展使用SpringMVC@Configurationpublic class MyMvcConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) {registry.addViewController('/').setViewName('index');registry.addViewController('/index.html').setViewName('index'); }}

更改靜態資源路徑

Spring Boot 員工管理系統超詳細教程(源碼分享)

所有的靜態資源都需要使用thymeleaf接管:@{}

application.properties 修改

# 關閉模板引擎的緩存spring.thymeleaf.cache=falseserver.servlet.context-path=/kuang2.3、測試首頁

輸入路徑

http://localhost:8080/kuang/index.html

Spring Boot 員工管理系統超詳細教程(源碼分享)

測試成功!

3、頁面國際化3.1、 File Encodings設置

先在IDEA中統一設置properties的編碼問題!

Spring Boot 員工管理系統超詳細教程(源碼分享)

編寫國際化配置文件,抽取頁面需要顯示的國際化頁面消息。我們可以去登錄頁面查看一下,哪些內容

我們需要編寫國際化的配置!

3.2、配置文件編寫

1、我們在resources資源文件下新建一個i18n目錄,存放國際化配置文件

2、建立一個login.properties文件,還有一個login_zh_CN.properties;發現IDEA自動識別了我們要做國際化操作;文件夾變了!

Spring Boot 員工管理系統超詳細教程(源碼分享)

3、我們可以在這上面去新建一個文件;

Spring Boot 員工管理系統超詳細教程(源碼分享)

彈出如下頁面:我們再添加一個英文的;

Spring Boot 員工管理系統超詳細教程(源碼分享)

這樣就快捷多了!

Spring Boot 員工管理系統超詳細教程(源碼分享)

4、接下來,我們就來編寫配置,我們可以看到idea下面有另外一個視圖;

Spring Boot 員工管理系統超詳細教程(源碼分享)

這個視圖我們點擊 + 號就可以直接添加屬性了;我們新建一個login.tip,可以看到邊上有三個文件框可以輸入

在這里插入圖片描述

我們添加一下首頁的內容!

Spring Boot 員工管理系統超詳細教程(源碼分享)

然后依次添加其他頁面內容即可!

Spring Boot 員工管理系統超詳細教程(源碼分享)

然后去查看我們的配置文件;

login.properties :默認

login.btn=登錄login.password=密碼login.remember=記住我login.tip=請登錄login.username=用戶名

英文:

login.btn=Sign inlogin.password=Passwordlogin.remember=Remember melogin.tip=Please sign inlogin.username=Username

中文:

login.btn=登錄login.password=密碼login.remember=記住我login.tip=請登錄login.username=用戶名

OK,配置文件步驟搞定!

配置文件生效探究

我們去看一下SpringBoot對國際化的自動配置!這里又涉及到一個類:MessageSourceAutoConfiguration

里面有一個方法,這里發現SpringBoot已經自動配置好了管理我們國際化資源文件的組件 ResourceBundleMessageSource;

// 獲取 properties 傳遞過來的值進行判斷@Beanpublic MessageSource messageSource(MessageSourceProperties properties) { ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); if (StringUtils.hasText(properties.getBasename())) {// 設置國際化文件的基礎名(去掉語言國家代碼的)messageSource.setBasenames( StringUtils.commaDelimitedListToStringArray( StringUtils.trimAllWhitespace(properties.getBasename()))); } if (properties.getEncoding() != null) {messageSource.setDefaultEncoding(properties.getEncoding().name()); } messageSource.setFallbackToSystemLocale(properties.isFallbackToSystemLocale()); Duration cacheDuration = properties.getCacheDuration(); if (cacheDuration != null) {messageSource.setCacheMillis(cacheDuration.toMillis()); } messageSource.setAlwaysUseMessageFormat(properties.isAlwaysUseMessageFormat()); messageSource.setUseCodeAsDefaultMessage(properties.isUseCodeAsDefaultMessage()); return messageSource;}

我們真實的情況是放在了i18n目錄下,所以我們要去配置這個messages的路徑;

spring.messages.basename=i18n.login

配置頁面國際化值

去頁面獲取國際化的值,查看Thymeleaf的文檔,找到message取值操作為:#{…}。我們去頁面測試下:

IDEA還有提示,非常智能的!

Spring Boot 員工管理系統超詳細教程(源碼分享)

我們可以去啟動項目,訪問一下,發現已經自動識別為中文的了!

Spring Boot 員工管理系統超詳細教程(源碼分享)

但是我們想要更好!可以根據按鈕自動切換中文英文!

配置國際化解析

在Spring中有一個國際化的Locale (區域信息對象);里面有一個叫做LocaleResolver (獲取區域信息對象)的解析器!

我們去我們webmvc自動配置文件,尋找一下!看到SpringBoot默認配置:

@Bean@ConditionalOnMissingBean@ConditionalOnProperty(prefix = 'spring.mvc', name = 'locale')public LocaleResolver localeResolver() { // 容器中沒有就自己配,有的話就用用戶配置的 if (this.mvcProperties.getLocaleResolver() == WebMvcProperties.LocaleResolver.FIXED) { return new FixedLocaleResolver(this.mvcProperties.getLocale()); } // 接收頭國際化分解 AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver(); localeResolver.setDefaultLocale(this.mvcProperties.getLocale()); return localeResolver;}

AcceptHeaderLocaleResolver 這個類中有一個方法

public Locale resolveLocale(HttpServletRequest request) { Locale defaultLocale = this.getDefaultLocale(); // 默認的就是根據請求頭帶來的區域信息獲取Locale進行國際化 if (defaultLocale != null && request.getHeader('Accept-Language') == null) {return defaultLocale; } else {Locale requestLocale = request.getLocale();List<Locale> supportedLocales = this.getSupportedLocales();if (!supportedLocales.isEmpty() && !supportedLocales.contains(requestLocale)) { Locale supportedLocale = this.findSupportedLocale(request, supportedLocales); if (supportedLocale != null) {return supportedLocale; } else {return defaultLocale != null ? defaultLocale : requestLocale; }} else { return requestLocale;} }}

那假如我們現在想點擊鏈接讓我們的國際化資源生效,就需要讓我們自己的Locale生效!

我們去自己寫一個自己的LocaleResolver,可以在鏈接上攜帶區域信息!

修改一下前端頁面的跳轉連接:

<!-- 這里傳入參數不需要使用 ?使用 (key=value)--><a th:href='http://www.gepszalag.com/bcjs/@{/index.html(l=’zh_CN’)}' rel='external nofollow' >中文</a><a th:href='http://www.gepszalag.com/bcjs/@{/index.html(l=’en_US’)}' rel='external nofollow' >English</a>

我們去寫一個處理的組件類!

package com.kuang.component;import org.springframework.util.StringUtils;import org.springframework.web.servlet.LocaleResolver;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.util.Locale;//可以在鏈接上攜帶區域信息public class MyLocaleResolver implements LocaleResolver { //解析請求 @Override public Locale resolveLocale(HttpServletRequest request) {String language = request.getParameter('l');Locale locale = Locale.getDefault(); // 如果沒有獲取到就使用系統默認的//如果請求鏈接不為空if (!StringUtils.isEmpty(language)){ //分割請求參數 String[] split = language.split('_'); //國家,地區 locale = new Locale(split[0],split[1]);}return locale; } @Override public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) { }}

為了讓我們的區域化信息能夠生效,我們需要再配置一下這個組件!在我們自己的MvcConofig下添加bean;

@Beanpublic LocaleResolver localeResolver(){ return new MyLocaleResolver();}

我們重啟項目,來訪問一下,發現點擊按鈕可以實現成功切換!搞定收工!

注意點

Spring Boot 員工管理系統超詳細教程(源碼分享)

4、登錄+攔截器4.1、登錄

禁用模板緩存

說明:頁面存在緩存,所以我們需要禁用模板引擎的緩存

#禁用模板緩存 spring.thymeleaf.cache=false

模板引擎修改后,想要實時生效!頁面修改完畢后,IDEA小技巧 : Ctrl + F9 重新編譯!即可生效!

登錄

我們這里就先不連接數據庫了,輸入任意用戶名都可以登錄成功!

1、我們把登錄頁面的表單提交地址寫一個controller!

<form th:action='@{/user/login}' method='post'> //這里面的所有表單標簽都需要加上一個name屬性 </form>

2、去編寫對應的controller

@Controllerpublic class LoginController { @RequestMapping('/user/login') public String login( @RequestParam('username') String username , @RequestParam('password') String password, Model model){//具體的業務if(!StringUtils.isEmpty(username)&&'123456'.equals(password)){ return 'redirect:/main.html';}else{ //告訴用戶,你登錄失敗 model.addAttribute('msg','用戶名或者密碼錯誤!'); return 'index';} }}

OK ,測試登錄成功!

Spring Boot 員工管理系統超詳細教程(源碼分享)

3、登錄失敗的話,我們需要將后臺信息輸出到前臺,可以在首頁標題下面加上判斷

<!--判斷是否顯示,使用if, ${}可以使用工具類,可以看thymeleaf的中文文檔--> <p th:text='${msg}' th:if='${not #strings.isEmpty(msg)}'> </p>

重啟登錄失敗測試:

Spring Boot 員工管理系統超詳細教程(源碼分享)

優化,登錄成功后,由于是轉發,鏈接不變,我們可以重定向到首頁!

4、我們再添加一個視圖控制映射,在我們的自己的MyMvcConfifig中:

registry.addViewController('/main.html').setViewName('dashboard');

5、將 Controller 的代碼改為重定向;

//登錄成功!防止表單重復提交,我們重定向 return 'redirect:/main.html';

重啟測試,重定向成功!后臺主頁正常顯示!

4.2、登錄攔截器

但是又發現新的問題,我們可以直接登錄到后臺主頁,不用登錄也可以實現!怎么處理這個問題呢?我

們可以使用攔截器機制,實現登錄檢查!

1、在LoginController添加serssion

session.setAttribute('loginUser',username);

2、自定義一個攔截器:

//自定義攔截器public class LoginHandlerInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//獲取 loginUser 信息進行判斷Object user = request.getSession().getAttribute('loginUser');if(user == null){//未登錄,返回登錄頁面 request.setAttribute('msg','沒有權限,請先登錄'); request.getRequestDispatcher('/index.html').forward(request,response); return false;}else{ //登錄,放行 return true;} }}

3、然后將攔截器注冊到我們的SpringMVC配置類當中!

@Override public void addInterceptors(InterceptorRegistry registry) {// 注冊攔截器,及攔截請求和要剔除哪些請求!// 我們還需要過濾靜態資源文件,否則樣式顯示不出來registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns('/**').excludePathPatterns('/index.html','/user/login','/','/css/*','/img/**','/js/**');}

4、我們然后在后臺主頁,獲取用戶登錄的信息

<!--后臺主頁顯示登錄用戶的信息-->[[${session.loginUser}]] <!--$取EL表達式-->

然后我們登錄測試攔截!完美!

5、展示員工列表5.1、員工列表頁面跳轉

我們在主頁點擊Customers,就顯示列表頁面;我們去修改下

1、將首頁的側邊欄Customers改為員工管理

2、a鏈接添加請求

<a th:href='http://www.gepszalag.com/bcjs/@{/emps}' rel='external nofollow' rel='external nofollow' >員工管理</a>

3、將list放在emp文件夾下

Spring Boot 員工管理系統超詳細教程(源碼分享)

4、編寫處理請求的controller

//員工列表@Controllerpublic class EmployeeController { @Autowired EmployeeDao employeeDao; @RequestMapping('/emps') public String list(Model model){Collection<Employee> employees = employeeDao.getALL();model.addAttribute('emps',employees);return 'emp/list'; }}

我們啟動項目,測試一下看是否能夠跳轉,測試OK!我們只需要將數據渲染進去即可!

但是發現了一個問題,側邊欄和頂部都相同,我們是不是應該將它抽取出來呢?

5.2、Thymeleaf公共頁面元素抽取

步驟:

1、抽取公共片段 th:fragment 定義模板名

2、引入公共片段 th:insert 插入模板名

實現:

1、我們來抽取一下,使用list列表做演示!我們要抽取頭部nav標簽,我們在dashboard中將nav部分定

義一個模板名;

<!--頂部導航欄--><nav th:fragment='topbar'> <a rel='external nofollow' rel='external nofollow' >[[${session.loginUser}]]</a> <!--$取EL表達式--> <input type='text' placeholder='Search' aria-label='Search'> <ul class='navbar-nav px-3'><li class='nav-item text-nowrap'> <a rel='external nofollow' rel='external nofollow' >注銷</a></li> </ul></nav>

2、然后我們在list頁面中去引入,可以刪掉原來的nav

<!--引入抽取的topbar--> <!--模板名 : 會使用thymeleaf的前后綴配置規則進行解析 使用~{模板::標簽名}--><!--頂部導航欄--><div th:insert='~{dashboard::topbar}'></div>

3、啟動再次測試,可以看到已經成功加載過來了!

說明:

除了使用insert插入,還可以使用replace替換,或者include包含,三種方式會有一些小區別,可以見名

知義;

我們使用replace替換,可以解決div多余的問題,可以查看thymeleaf的文檔學習

側邊欄也是同理,當做練手,可以也同步一下!

定義模板:

<!--側邊欄--><nav th:fragment='sitebar' class='col-md-2 d-none d-md-block bg-light sidebar'>

然后我們在list頁面中去引入:

<!--頂部導航欄--><div th:replace='~{commons/commons::topbar}'></div><!--側邊欄--><div th:replace='~{commons/commons::sidebar}'></div>

啟動再試試,看效果!

Spring Boot 員工管理系統超詳細教程(源碼分享)

我們發現一個小問題,側邊欄激活的問題,它總是激活第一個;按理來說,這應該是動態的才對!

為了重用更清晰,我們建立一個commons文件夾,專門存放公共頁面;

Spring Boot 員工管理系統超詳細教程(源碼分享)

我們去頁面中引入一下

<a th: th:href='http://www.gepszalag.com/bcjs/@{/index.html}' rel='external nofollow' > <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke- stroke-linecap='round' stroke-linejoin='round' class='feather feather-home'><path d='M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'></path><polyline points='9 22 9 12 15 12 15 22'></polyline> </svg> 首頁 <span class='sr-only'>(current)</span></a><a th: th:href='http://www.gepszalag.com/bcjs/@{/emps}' rel='external nofollow' rel='external nofollow' > <svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke- stroke-linecap='round' stroke-linejoin='round' class='feather feather-shopping-cart'><circle cx='9' cy='21' r='1'></circle><circle cx='20' cy='21' r='1'></circle><path d='M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6'></path> </svg> 員工管理</a>

我們先測試一下,保證所有的頁面沒有出問題!ok!

側邊欄激活問題:

1、將首頁的超鏈接地址改到項目中

2、我們在a標簽中加一個判斷,使用class改變標簽的值;

<div th:replace='~{commons/commons::topbar(active=’main.html’)}'></div><div th:replace='~{commons/commons::sidebar(active=’list.html’)}'></div>

3、修改請求鏈接

<thead> <tr><th>id</th><th>lastName</th><th>email</th><th>gender</th><th>department</th><th>birth</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()==0?’女’:’男’}'></td><td th:text='${emp.department.getDepartmentName()}'></td><td th:text='${#dates.format(emp.getBirth(),’yyyy-MM-dd HH:mm:ss’)}'></td><td> <button class='btn btn-sm btn-primary'>編輯</button> <button class='btn btn-sm btn-danger'>刪除</button></td> </tr></tbody>

4、我們刷新頁面,去測試一下,OK,動態激活搞定!

5.3、員工信息頁面展示

現在我們來遍歷我們的員工信息!順便美化一些頁面,增加添加,修改,刪除的按鈕!

<h2><a th:href='http://www.gepszalag.com/bcjs/@{/emp}' rel='external nofollow' >添加員工</a></h2>

Spring Boot 員工管理系統超詳細教程(源碼分享)

OK,顯示全部員工OK!

6、添加員工實現6.1、表單及細節處理

1、將添加員工信息改為超鏈接

//to員工添加頁面 @GetMapping('/emp') public String toAddPage(){ return 'emp/add'; }

2、編寫對應的controller

<form th:action='@{/emp}' method='post' > <div ><label>LastName</label><input placeholder='kuangshen' type='text' name='lastName'> </div> <div ><label>Email</label><input placeholder='24736743@qq.com' type='email' name='email'> </div> <div class='form-group'><label>Gender</label><br/><div class='form-check form-check-inline'> <input name='gender' type='radio' value='1'> <label class='form-check-label'>男</label></div><div class='form-check form-check-inline'> <input name='gender' type='radio' value='0'> <label class='form-check-label'>女</label></div> </div> <div ><label>department</label><select name='department.id'> <option th:each='dept:${departments}' th:text='${dept.getDepartmentName()}' th:value='${dept.getId()}'></option></select> </div> <div ><label >Birth</label><input placeholder='kuangstudy' type='text' name='birth'> </div> <button type='submit'>添加</button></form>

3、添加前端頁面;復制list頁面,修改即可

bootstrap官網文檔 : https://v4.bootcss.com/docs/4.0/components/forms/

我們去可以里面找自己喜歡的樣式!我這里給大家提供了編輯好的:

@GetMapping('/emp')public String toAddPage(Model model){ //查詢所有的部門信息 Collection<Department> departments = departmentDao.getDepartments(); model.addAttribute('departments',departments); return 'emp/add';}

4、部門信息下拉框應該選擇的是我們提供的數據,所以我們要修改一下前端和后端

Controller

<select name='department.id'> <option th:each='dept:${departments}' th:text='${dept.getDepartmentName()}' th:value='${dept.getId()}'></option></select>

前端

<form th:action='@{/emp}' method='post'> 1

OK,修改了controller,重啟項目測試!

6.2、具體添加功能

1、修改add頁面form表單提交地址和方式

<form th:action='@{/emp}' method='post'>

2、編寫controller;

//員工添加功能//接收前端傳遞的參數,自動封裝成為對象[要求前端傳遞的參數名,和屬性名一致]@PostMapping ('/emp')public String addEmp(Employee employee){ //保存員工的信息 System.out.println(employee); employeeDao.save(employee); // 回到員工列表頁面,可以使用redirect或者forward,就不會被視圖解析器解析 return 'redirect:/emps';}

Spring Boot 員工管理系統超詳細教程(源碼分享)

回憶:重定向和轉發以及 /的問題?

時間格式問題

Spring Boot 員工管理系統超詳細教程(源碼分享)

生日我們提交的是一個日期 , 我們第一次使用的 / 正常提交成功了,后面使用 - 就錯誤了,所以這里面

應該存在一個日期格式化的問題;

SpringMVC會將頁面提交的值轉換為指定的類型,默認日期是按照 / 的方式提交 ; 比如將2019/01/01

轉換為一個date對象。

那思考一個問題?我們能不能修改這個默認的格式呢?

這個在配置類中,所以我們可以自定義的去修改這個時間格式化問題,我們在我們的配置文件中修改一

下;

spring.mvc.date-format=yyyy-MM-dd

這樣的話,我們現在就支持 - 的格式了,但是又不支持 / 了 , 2333吧

測試OK!

7、修改員工信息

邏輯分析:

我們要實現員工修改功能,需要實現兩步;

1、點擊修改按鈕,去到編輯頁面,我們可以直接使用添加員工的頁面實現

2、顯示原數據,修改完畢后跳回列表頁面!

實現

1、我們去實現一下,首先修改跳轉鏈接的位置;

<a th:href='http://www.gepszalag.com/bcjs/@{/emp/}+${emp.getId()}' rel='external nofollow' >編輯</a>

2、編寫對應的controller

//員工修改頁面@GetMapping('/emp/{id}')public String toUpdateEmp(@PathVariable('id') Integer id,Model model){ Employee employee = employeeDao.getEmployeeById(id); model.addAttribute('emp',employee); //查詢所有的部門信息 Collection<Department> departments = departmentDao.getDepartments(); model.addAttribute('departments',departments); return 'emp/update';}

3、我們需要在這里將add頁面復制一份,改為update頁面;需要修改頁面,將我們后臺查詢數據回顯

<form th:action='@{/emp}' method='post' > <input type='hidden' name='id' th:value='${emp.getId()}'> <div ><label>LastName</label><input th:value='${emp.getLastName()}' placeholder='kuangshen' type='text' name='lastName'> </div> <div ><label>Email</label><input th:value='${emp.getEmail()}' placeholder='24736743@qq.com' type='email' name='email'> </div> <div class='form-group'><label>Gender</label><br/><div class='form-check form-check-inline'> <input th:checked='${emp.getGender()==1}' name='gender' type='radio' value='1'> <label class='form-check-label'>男</label></div><div class='form-check form-check-inline'> <input th:checked='${emp.getGender()==0}' name='gender' type='radio' value='0'> <label class='form-check-label'>女</label></div> </div> <div ><label>department</label><select name='department.id'> <option th:selected='${dept.id==emp.getDepartment().getId()}' th:each='dept:${departments}' th:text='${dept.getDepartmentName()}' th:value='${dept.getId()}'></option></select> </div> <div ><label >Birth</label><input th:value='${#dates.format(emp.birth,’yyyy-MM-dd HH:mm’)}' placeholder='2021-02-02' type='text' name='birth'> </div> <button type='submit'>修改</button></form>

數據回顯OK!

8、刪除員工實現

1、list頁面,編寫提交地址

<a th:href='http://www.gepszalag.com/bcjs/@{/delEmp/}+${emp.getId()}' rel='external nofollow' >刪除</a>

2、編寫Controller

//刪除員工@GetMapping('/delEmp/{id}')public String delEmp(@PathVariable('id') Integer id){ employeeDao.delete(id); return 'redirect:/emps';}

測試OK!

9、404及注銷

404

我們只需要在模板目錄下添加一個error文件夾,文件夾中存放我們相應的錯誤頁面;

比如404.html 或者 4xx.html 等等,SpringBoot就會幫我們自動使用了!

Spring Boot 員工管理系統超詳細教程(源碼分享)

測試使用!

注銷

1、注銷請求

<a th:href='http://www.gepszalag.com/bcjs/@{/user/logout}' rel='external nofollow' >注銷</a>2、對應的controller```java @RequestMapping('/user/logout') public String logout(HttpSession session){session.invalidate();return 'redirect:/index.html'; }

到此這篇關于Spring Boot 員工管理系統超詳細教程(源碼分享)的文章就介紹到這了,更多相關Spring Boot 員工管理系統內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: av在线天堂 | 蜜桃视频在线观看www社区 | 超碰在线91| 欧美午夜精品久久久久久浪潮 | 久久久久久人 | 国产成人在线视频 | 成人不卡在线 | 亚洲欧美日韩在线一区二区三区 | 久久久久久亚洲国产 | 犬夜叉在线观看 | 欧美成在线观看 | 国产视频三区 | h片免费 | 夜夜久久 | 国产福利电影一区 | 亚洲国产精品一区二区久久 | 97国产一区二区精品久久呦 | 成人五月网| 国产精品久久久久久久午夜 | 在线观看精品视频网站 | 台湾佬亚洲色图 | 在线观看毛片网站 | 国产精品久久久久久久久久妇女 | av免费在线观看网站 | 日韩最新网址 | 日韩综合 | 欧美日一区二区 | 精品视频一区二区在线观看 | 亚洲不卡免费视频 | 波多野结衣 一区二区三区 精品精品久久 | 国产99精品视频 | 国产精品久久久久久久久久久久久 | 99久久婷婷国产综合精品 | 久久精品国产99精品国产亚洲性色 | 国产精品久久久久久久久久久久久 | 性培育学校羞耻椅子调教h 欧美精品网站 | 欧美11一13sex性hd | 成人欧美 | 亚洲成人精品一区二区三区 | 日韩中文字幕在线免费观看 | 国产在线小视频 | 日本中文字幕在线观看 | 日韩高清不卡一区二区三区 | 日韩精品一区二区三区视频播放 | 亚洲a人| 亚洲高清视频网站 | 午夜精品一区二区三区在线播放 | 一二三精品区 | 欧美a v在线播放 | 欧美日韩在线免费观看 | 精品久久久久久亚洲精品 | 在线国产欧美 | 久草 在线 | 色婷婷综合久色 | 天天澡天天狠天天天做 | 欧美日韩视频 | 中文字幕一区在线 | 伊人久操 | 午夜日韩在线观看 | 国产传媒在线 | 国产精品日韩一区二区 | 在线看片福利 | 超碰激情 | 日韩在线国产精品 | 欧美伊人影院 | 精品视频二区三区 | 久久国产精品无码网站 | 亚洲成人免费视频 | 中文字幕久久精品 | 久久久久久久久综合 | 久久久久久久久免费视频 | 久久久久久麻豆 | 欧美精品亚洲精品 | 欧美高清成人 | 欧美一级片在线 | 成年人网站免费在线观看 | 性高湖久久久久久久久aaaaa | 中文字幕乱码一区二区三区 | 日韩免费av网站 | 精品一二三区在线观看 | 午夜免费观看网站 | 亚洲视频在线播放 | 亚洲欧洲中文日韩 | 亚洲一区二区三区视频 | segui88久久综合9999 | 久热久爱 | 亚洲久久久 | 夜夜草av| 天堂资源库 | 成人激情视频 | 黄毛片网站 | 男女啪啪免费网站 | 国产一区二区影院 | 国产激情视频在线观看 | 午夜视频在线免费观看 | 夜夜艹 | 大黑人交xxx极品hd | 国产欧美精品一区二区 | 日韩毛片在线观看 | 久久天堂 | 国产在线精品一区二区 | 色视频一区二区三区 | 成年人精品视频在线观看 | 国产精品久久久久久久久久久久久 | 成人免费福利 | 欧美日韩一区二区中文字幕 | 欧美久久不卡 | 中文一区二区 | 天天天天天天操 | 中国大陆高清aⅴ毛片 | 亚洲精品久久久久久一区二区 | 桃花久久 | 午夜视频在线观看网站 | 日韩欧美高清dvd碟片 | 久久人人爽人人爽人人片av不 | 国产高清视频 | 欧美久久久 | 北条麻妃99精品青青久久 | h片在线 | 国产精品2区 | 日本a在线| 亚洲高清免费视频 | www婷婷| 久久久美女 | 人人草在线观看视频 | 黄色在线视频网 | 久久久国产一区二区三区四区小说 | 99成人在线视频 | 国产精品一区在线观看你懂的 | 成人做爰69片免费 | 亚洲不卡视频在线观看 | 艹艹网| 日韩在线中文 | 日韩中文字幕精品 | 免费午夜剧场 | 国产片网站| 999精品一区 | 国产97色在线 | 亚洲 | 麻豆一区二区三区 | 国产日韩亚洲欧美 | 免费不卡视频 | 日韩精品一区二区三区四区五区 | 免费国产黄 | 蜜桃免费一区二区三区 | 欧美男人天堂 | 免费一区二区 | 免费一区二区三区视频在线 | 成人爽a毛片一区二区免费 亚洲自拍偷拍精品 | 国产成人免费视频网站高清观看视频 | 91免费国产 | 久久99国产精品久久99果冻传媒 | 妞干网国产 | 欧美激情综合五月色丁香小说 | 99爱爱视频 | 国产成人午夜精品5599 | а_天堂中文最新版地址 | 亚洲精品66 | 中文字幕91 | 91精品国产乱码久久久久久 | 久久综合狠狠综合久久 | 国产精品a久久久久 | 久久精品91 | 欧洲亚洲视频 | 一色一黄视频 | 亚洲 欧美 另类 综合 偷拍 | 日韩欧美成人影院 | 日韩在线播放网址 | 久久久久久久久久久久福利 | 亚洲高清av在线 | 国产毛片在线 | 天天舔天天爽 | 国产综合久久 | 欧美久久精品一级c片 | 日日爱999 | 午夜窝窝 | 中国一级免费毛片 | 91春色| 亚洲高清资源 | 欧美日本一区 | 精品一二三区 | 国产一区二区免费 | 精品伦理一区二区三区 | 99看片| 亚洲天堂一区 | 免费毛片视频 | 中文字幕一区二区三区四区不卡 | 中文在线一区二区 | 中文字幕在线视频免费播放 | 日韩91精品 | 国产伦精品一区二区三区四区视频 | 欧美日韩国产一级片 | 久久久久久久99精品免费观看 | 欧美一区在线视频 | 日韩成人在线视频 | 成人不卡在线 | 国产区福利 | 999在线观看精品免费不卡网站 | 国产在线一区二区三区 | 欧美爱爱视频 | h视频免费观看 | 日本免费一区二区视频 | 人人人人人你人人人人人 | 久久久在线 | 超碰在线播 | 伊人狠狠干 | 草草网站 | 中文字幕第二十六页页 | 99精品国产一区二区 | av在线一区二区三区 | 欧美一区二区三区在线观看 | 中文字幕成人 | 亚洲精品久久久蜜臀 | 龙珠z普通话国语版在线观看 | 国产激情精品一区二区三区 | 日韩精品免费视频 | 中文字幕在线观看 | 国产成人免费视频 | 久久一区二区三区四区 | 午夜视频网址 | 久久久国产精品入口麻豆 | 91成人免费视频 | 亚洲国产精品第一区二区 | 九九综合 | 国产精品一区亚洲二区日本三区 | 亚洲精品v日韩精品 | 欧美一区二区黄色片 | 国产综合亚洲精品一区二 | 亚洲国产精品一区 | 91xxx在线观看 | 欧美成人在线影院 | 福利精品在线观看 | 欧美一级做a爰片免费视频 亚洲精品一区在线观看 | av网站免费观看 | 国产精品毛片一区二区在线看 | 国产精品久久久久久中文字 | 我要看一级黄色 | 夜本色| 中文字幕日韩欧美一区二区三区 | 欧美亚洲另类在线 | 精品91久久久 | 一区免费看 | 欧美午夜精品一区二区三区电影 | 国产精品久久久久毛片软件 | 免费av在线| 亚洲欧美视频 | 日韩av免费| 国产亚洲精品久久久久久久 | 免费看特级毛片 | 亚洲精品久久久久久下一站 | 亚洲免费视频在线观看 | 国产精品毛片久久久久久久 | 影音先锋亚洲资源 | 日韩a∨精品日韩在线观看 山岸逢花在线 | 欧美精品久久久 | 精品国产精品三级精品av网址 | 久热在线视频 | 久久久影院 | 日韩久久综合 | 久久中文视频 | a毛片 | 日韩一区久久 | 一道本一二三区 | 动漫羞免费网站中文字幕 | 欧美自拍网 | 成人av在线播放 | 日韩一二三四 | 99久久99| 欧美日韩成人在线 | 一区视频 | 国产在线一级视频 | 在线观看国产 | 久久久精品国产 | 日日夜夜精品网站 | 欧美性影院 | 毛片综合| 欧美精品乱码久久久久久按摩 | 成人免费福利视频 | 日韩在线免费电影 | 欧美视频在线播放 | 精品国产精品三级精品av网址 | av在线一区二区 | 天天精品 | 福利片在线观看 | 青草视频网站 | 九九热在线免费视频 | 一级片在线观看 | 亚洲视频欧美视频 | 极品白嫩少妇无套内谢 | 成人激情视频在线播放 | 依人成人网 | 久久亚洲天堂 | 亚洲欧美激情视频 | 一区二区免费在线观看 | 欧美久久视频 | 香蕉久久夜色精品国产使用方法 | 五月婷婷婷婷 | 一级毛片视频播放 | 欧美日韩亚洲三区 | 中国免费看的片 | 人人干人人干 | 欧美精品在线观看免费 | 国产美女精品视频免费观看 | 久久999免费视频 | 黄色网在线 | 我要看a级毛片 | 国产福利一区二区三区视频 | 黄色大片视频网站 | 国产片侵犯亲女视频播放 | www.国产精品 | 免费成人av网站 | 国产一二三在线 | 亚洲成人免费在线观看 | 亚洲最新中文字幕 | 99精品一区二区三区 | 国产www网站| 日韩一区二区在线观看 | 伊人网网站 | 精品国产黄a∨片高清在线 激情网站免费 | 99精品在线观看 | 日韩成人在线观看 | 日韩一区二区在线观看 | 99久久电影| 69av片| 久久精品在线观看视频 | xxxx网| 精品日韩一区二区三区 | 国产精品久久久久无码av | 高清久久 | 97av| 欧美精品一区二区三区一线天视频 | 欧美精品久久久久久久久 | 操久久 | 天堂视频中文字幕 | 国产美女高潮一区二区三区 | 一级色视频| 国产视频精品自拍 | 九九热在线免费视频 | a免费在线 | 国产拍揄自揄精品视频麻豆 | 免费看男女www网站入口在线 | 成人性视频免费网站 | 中国黄色在线视频 | 99精品国产高清在线观看 | 在线视频亚洲 | 亚洲成人一区二区三区 | 亚洲欧美日韩电影 | 丝袜美腿一区二区三区 | 国产成人免费视频 | 荷兰欧美一级毛片 | 国产亚洲欧美一区 | 天堂一区二区三区 | 亚洲免费观看视频 | 一区二区不卡视频 | 亚洲国产自产 | 亚洲视频 欧美视频 | 久久精品视| 亚洲成人免费视频 | 在线日韩欧美 | 成人精品久久久 | 精品成人佐山爱一区二区 | 日韩高清不卡一区二区三区 | 国产欧美精品一区二区色综合 | 中文在线一区 | 欧美暴操 | 91视频在线看 | 欧美性猛交一区二区三区精品 | 亚洲精品视频在线 | 中文一区二区 | 国产精品亚洲一区二区三区在线 | 久久99精品久久久久久琪琪 | 日韩精品中文字幕在线观看 | 亚洲成人一区二区三区 | 日韩精品一二三区 | 性视频网站免费 | 国产精品视频免费看 | 久久精品网 | 日韩激情视频一区二区 | 超碰97av| 少妇久久久 | 国产精品一区二区三区在线播放 | 亚洲一区精品在线 | 亚洲精品成人免费 | 色站综合| 亚洲精品乱码 | 97久久久国产精品 | 精品中文字幕一区二区 | 少妇久久久 | k8久久久一区二区三区 | 青青草免费在线视频 | 97成人在线免费视频 | 亚洲国产精品99久久久久久久久 | 日本一区二区三区四区不卡视频 | 日韩精品中文字幕一区二区三区 | 男女啪啪高清无遮挡 | 国产精品久久久久久久久久三级 | 国产精品一区二区视频 | 91视频播放| 国产99久久精品 | 久久久久国产视频 | 国产在线观看av | 青青久视频 | 超碰av在线 | 青青久久av北条麻妃海外网 | 二区在线视频 | 99在线视频精品 | 国产一级毛片在线视频 | 毛片在线视频 | 国产全黄| 中文字幕乱码一区二区三区 | 久久久精品久久 | 中文字幕免费看 | 黄色午夜 | 成人欧美一区二区三区视频xxx | 国产成人99久久亚洲综合精品 | 久久久久国产 | 亚洲一区二区高清视频 | 中文字幕一区在线观看视频 | 欧美白人做受xxxx视频 | 亚洲国产精品一区二区久久,亚洲午夜 | 男女网站视频 | 精品免费久久 | 日韩中文字幕av | 国产精品第2页 | 国产精品久久久久久久久久东京 | 亚洲一区二区三区在线视频 | 日本一区二区三区免费观看 | 女男羞羞视频网站免费 | 欧美成人精品一区二区 | 亚洲男人天堂网 | 97伦理电影网 | 久久亚洲一区二区 | 一二区精品 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 亚洲免费在线播放 | 精品国产髙清在线看国产毛片 | 日韩电影一区二区三区 | 午夜精品久久久久久99热软件 | 日本中文字幕电影 | 山岸逢花在线观看 | 久久久一区二区 | 中文字幕日韩欧美 | 亚洲一区二区视频 | 亚洲精品免费观看 | 国产日韩精品一区二区 | 噜噜噜天天躁狠狠躁夜夜精品 | 欧美伊人 | 日韩久久久久 | 国产精品18久久久久久久久 | 可以免费看黄的网站 | 国产精品欧美一区二区三区不卡 | 国产精品亚洲欧美日韩一区在线 | 一区二区三区视频免费 | 日韩免费网站 | 亚洲综合在线视频 | 久热免费在线观看 | 国产精品久久久久久久久久久久久 | 成人亚洲在线观看 | 天天射美女 | 成人在线影视 | 国产毛片在线看 | 欧美久久久| 欧美一级免费高清 | 国产美女精品视频免费观看 | 国产一区二区高潮 | 日韩在线中文字幕 | 国产精品久久久久久久久久免费看 | 91精品国产人妻国产毛片在线 | 玖草资源 | 青青草在线免费视频 | 久久国产区 | 操人网| 久久国产精品免费一区二区三区 | 超碰在线播 | 99亚洲精品 | 欧美成人a | 成人在线观看av | 亚洲第一免费网站 | 在线看片日韩 | 中文字幕在线视频一区 | 久久精品国产99国产 | 亚洲电影一区二区三区 | 国产精品免费在线 | 久久综合av | 日韩第一区| 亚洲激情在线 | 午夜日韩 | 天天躁日日躁狠狠躁av麻豆 | 久一区二区三区 | 蜜桃av人人夜夜澡人人爽 | 久久精彩 | 亚洲第一区国产精品 | 国产区精品| 欧洲一级毛片 | 亚洲一区国产精品 | 人人干操 | 国产精品亚洲精品 | 国产精品久久久久国产a级 国产精品欧美一区二区三区不卡 | 91观看| 谁有毛片 | 日本不卡视频 | 欧美精品被 | 日韩免费激情视频 | 日本久久网 | 日韩视频精品在线 | 久久亚洲天堂 | 国内精品一区二区三区视频 | 精品久久久久久久久久久久久久 | 一区二区三区影院 | 欧美精品久久久久久久久久丰满 | 在线免费观看色视频 | 在线观看黄色大片 | 亚洲欧洲日本国产 | 亚洲精品麻豆 | 亚洲精品久久久久久一区二区 | 久久久久久免费精品 | 一区二区三区日韩 | 在线免费成人 | 免费在线成人 | 国产在线一区二区三区 | 欧美一级毛片免费观看 | 99久久精品免费 | 成人免费激情视频 | 91精品国产高清一区二区三区 | 免费视频爱爱太爽了 | 日韩电影中文字幕 | 久久精品无码一区二区日韩av | 亚洲综合视频一区 | 性色浪潮| 91精品国产99久久久久久红楼 | 国产精品免费看 | 国产精品久久久久久久一区探花 | 久久久久久网址 | 亚洲香蕉在线观看 | 久久精品99 | 国产一区| 久久精品网 | 日狠狠 | 国产精品国产精品国产专区不片 | 亚洲精品乱码久久久久久 | 亚洲成人精品一区二区三区 | 一级国产视频 | 日日想日日干 | 亚洲一区二区精品在线观看 | 成人免费视频观看视频 | 日韩免费在线观看视频 | 午夜欧美 | 日韩有码在线播放 | 综合久久网 | 制服 丝袜 激情 欧洲 亚洲 | 色吧欧美 | 国产黄色大片 | 欧美精品一区二区三区在线四季 | 久久国产欧美一区二区三区精品 | 欧美日韩中文字幕 | 日韩国产中文字幕 | 成人福利av| 狠狠操天天干 | 国产精品成人久久久久 | 日本久久久久久久久久久久 | 国产第一区二区 | 看亚洲a级一级毛片 | 日本另类αv欧美另类aⅴ | 99国产精品久久久久久久成人热 | 中文字幕在线视频第一页 | 国产一区二区精品 | 午夜精品视频在线观看 | 97视频精品 | 欧美日韩一级二级三级 | 一区二区中文 | 日韩国产一区二区三区 | 中文字幕免费看 | 免费av电影网站 | 视频一区二区中文字幕日韩 | 一区二区成人在线 | 亚洲免费片 | 国产精品久久久久无码av | 欧美精品免费在线观看 | 最新高清无码专区 | 国产精品成人久久久久 | 欧美日韩在线电影 | 精品亚洲视频在线观看 | 欧美一级在线观看 | 姐姐在线观看动漫第二集免费 | 国产精品久久久久久久久免费桃花 | 99视频免费在线观看 | 天堂免费在线观看视频 | 天堂一区二区三区四区 | av免费网站在线观看 | av一区二区三区四区 | 亚洲视频成人 | 日韩一级视频 | 亚洲精品国产乱码在线看蜜月 | 亚洲精品一区二区三区蜜桃久 | 国产黄色av | 黄色免费高清视频 | 天天色天天射天天操 | 中文字幕在线不卡 | 一区二区三区免费 | 欧美综合网 | 少妇无套高潮一二三区 | 91九色在线| 亚洲国产成人av | 免费观看一级特黄欧美大片 | 国产精品美女久久久久久免费 | 天堂亚洲 | 国产成人jvid在线播放 | 蜜桃一区 | 国产一区视频网站 | 99在线观看 | 性色av一二三杏吧传媒 | 久久人人爽人人爽人人片亚洲 | 亚洲风情在线观看 | 在线日韩| 日韩中文在线 | 日韩高清中文字幕 |