Hắc mã trời cao cơm hộp 2 công nhân tăng tra sửa + dị thường xử lý +ThreadLocal

Công nhân quản lý

Tân tăng công nhân

在这里插入图片描述
在这里插入图片描述
Controller:

@PostMapping//post loại hình thỉnh cầu
@ApiOperation("Tăng thêm công nhân")
publicResultsave(@RequestBodyEmployeeDTOemployeeDTO){
log.info("Tân tăng công nhân {}",employeeDTO);
employeeService.save(employeeDTO);
returnResult.success();
}

Số hiệu hoàn thiện – tồn tại vấn đề

在这里插入图片描述
Vấn đề 1.Khống chế đài tung ra dị thường, trình tự xử lý. Sử dụngToàn cục dị thường xử lý khí
Xử lý sql dị thường Duplicate entry 'zhangsan’ for key 'employee.idx username
Toàn cục dị thường xử lý khí: GlobalExceptionHandler.java

@ExceptionHandler
publicResultexceptionHandler(SQLIntegrityConstraintViolationExceptionex){
// xử lý sql dị thường Duplicate entry 'zhangsan’ for key 'employee.idx username
Stringmessage=ex.getMessage();
if(message.contains("Duplicate entry")){
String[]split=message.split("");
Stringusername=split[2];// bắt được username
Stringmsg=username+MessageConstant.ALREADY_EXISTS;// username đã tồn tại -- vì quy phạm sử dụng, dùng cái đại lượng không đổi tới trích dẫn
returnResult.error(msg);
}else{
returnResult.error(MessageConstant.UNKNOWN_ERROR);// không biết sai lầm nhắc nhở tin tức
}
}

Vấn đề 2.
Động thái thu hoạch đăng nhập người dùng ID
Trước xem một chútCăn cứ vào JWT lệnh bài chứng thực lưu trình
在这里插入图片描述
在这里插入图片描述

http thỉnh cầu báo văn cùng hưởng ứng báo văn

http báo văn ba cái tạo thành bộ phận http báo văn là một cái cách thức hóa số liệu khối. Báo văn loại hình: Bao gồm bản cài đặtThỉnh cầu,ServerHưởng ứng.
http thỉnh cầu báo văn từ 3 cái bộ phận tạo thành:

  • Thỉnh cầu hành ( start line ): Từ thỉnh cầu phương pháp (GET/POST/PUT), thỉnh cầu URL ( không bao gồm vực danh |, HTTP hiệp nghị phiên bản tạo thành
  • Thỉnh cầu đầu ( header ): Thỉnh cầu phần đầu từ mấu chốt tự / giá trị đối tạo thành, mỗi hành một đôi; chủ yếu bao hàm Content-Length tiêu đầu: Thật thể chiều dài, Content-Tyep tiêu đầu: Thật thể truyền thông loại hình
  • Thỉnh cầu thể ( body ): GET ( từ server thu hoạch số liệu ) thỉnh cầu thể vì không, POST ( hướng server gửi đi muốn xử lý số liệu ) có số liệu

ThreadLocal

Cũng không phải một cái thread, mà là Thread bộ phận lượng biến đổi.
Mỗi cái tuyến trình độc hưởng một phần tồn trữ không gian, có tuyến trình cách ly hiệu quả, chỉ có tại tuyến trình nội mới có thể thu hoạch đến đối ứng giá trị, tuyến trình ngoại không được.
Bản cài đặt khởi xướng mỗi một lần thỉnh cầu, Tomcat server sẽ phân phối một cái tiến trình, sau đó đơn độc chấp hành số hiệu.Mỗi lần thỉnh cầu đều là một cái đơn độc tuyến trình.
Cũng chính là ởCái này tuyến trình nội có thể cùng chung một phần tồn trữ không gian.
Cho nên chúng ta có thể đem cấp trước mặt người dùng ID tồn đến cái này không gian nội.
JwtTokenAdminInterceptor.java // JWT chặn lại khí

@Autowired
privateJwtPropertiesjwtProperties;
publicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException{
// phán đoán trước mặt chặn lại đến chính là Controller phương pháp vẫn là mặt khác tài nguyên
if(!(handlerinstanceofHandlerMethod)){
// trước mặt chặn lại đến không phải động thái phương pháp, trực tiếp cho đi
returntrue;
}

//1, từ thỉnh cầu đầu trung thu hoạch lệnh bài
Stringtoken=request.getHeader(jwtProperties.getAdminTokenName());

//2, kiểm tra lệnh bài
try{
log.info("jwt kiểm tra:{}",token);
Claimsclaims=JwtUtil.parseJWT(jwtProperties.getAdminSecretKey(),token);
LongempId=Long.valueOf(claims.get(JwtClaimsConstant.EMP_ID).toString());
log.info("Trước mặt công nhân id: {}",empId);
BaseContext.setCurrentId(empId);// đem ID để vào tuyến trình không gian
//3, thông qua, cho đi
returntrue;
}catch(Exceptionex){
//4, không thông qua, hưởng ứng 401 trạng thái mã
response.setStatus(401);
returnfalse;
}
}

Thượng đồ chính là thuyên chuyển phương pháp này loại đem công nhân ID tồn đến trước mặt tuyến trình không gian trung.
Hạ đồ là tăng thêm công nhân tin tức Service trung phương pháp thực hiện, trọng điểm ở chỗ từ tuyến trình không gian lấy ra đăng nhập người dùng ID

Service:

publicvoidsave(EmployeeDTOemployeeDTO){
Employeeemployee=newEmployee();
// đệ trình cấp cơ sở dữ liệu tốt nhất là entity
BeanUtils.copyProperties(employeeDTO,employee);// tiến hành một cái thuộc tính phục chế

// bỏ thêm vào tự đoạn
employee.setStatus(StatusConstant.ENABLE);
employee.setPassword(DigestUtils.md5DigestAsHex(PasswordConstant.DEFAULT_PASSWORD.getBytes()));
employee.setCreateTime(LocalDateTime.now());
employee.setUpdateTime(LocalDateTime.now());

// thông qua ThreadLocal đạt được trước mặt người dùng id
employee.setCreateUser(BaseContext.getCurrentId());
employee.setUpdateUser(BaseContext.getCurrentId());

employeeMapper.insert(employee);
}

Công nhân phân trang tuần tra

在这里插入图片描述在这里插入图片描述
Controller:

@GetMapping("/page")//get loại hình thỉnh cầu
@ApiOperation("Công nhân phân trang tuần tra")
publicResult<PageResult>page(EmployeePageQueryDTOemployeePageQueryDTO){// số liệu không phải json, không cần chú giải
PageResultpageResult=employeeService.pageQuery(employeePageQueryDTO);
returnResult.success(pageResult);
}

PageHelper cắm kiện tới phụ trợ số hiệu
Service:

@Override
publicPageResultpageQuery(EmployeePageQueryDTOemployeePageQueryDTO){
//select * from employee linit 0,10
// thuyên chuyển PageHelper bắt đầu phân trang tuần tra số trang, mỗi trang ký lục số
PageHelper.startPage(employeePageQueryDTO.getPage(),employeePageQueryDTO.getPageSize());
Page<Employee>page=employeeMapper.selectByPage(employeePageQueryDTO);
// phản hồi chính là Page
// kế tiếp xử lý một chút, biến thành pageresult, yêu cầu hai cái tham số
longtotal=page.getTotal();
List<Employee>result=page.getResult();
returnnewPageResult(total,result);
}

mapper:
Không cần chú giải, động thái sql sử dụng ánh xạ văn kiện
Ở resource folder đều là xml văn kiện
<select>Nhãn id là mapper trung đối ứng phương pháp danh, resultType là truyền vào tham số loại hình.

<selectid="selectByPage"resultType="com.sky.entity.Employee">
select * from employee
<where>
<iftest="name!=null and name!=''">
and name like concat('%',#{name},'%')<!-- mơ hồ tuần tra like -->
</if>
</where>
order by create_time desc<!-- sáng tạo thời gian hàng tự -->
</select>

在这里插入图片描述
Phương thức một: Ở thật thể loại thêm

//@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" )
privateLocalDateTimecreateTime;

//@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" )
privateLocalDateTimeupdateTime;

Phương thức nhị: Mở rộng tin tức thay đổi khí, ở phối trí loại trung
Trọng viết phụ loại phương pháp

protectedvoidextendMessageConverters(List<HttpMessageConverter<?>>converters){
// sáng tạo một tin tức thay đổi khí
MappingJackson2HttpMessageConverterconverter=newMappingJackson2HttpMessageConverter();
// yêu cầu vì tin tức thay đổi khí thiết trí một cái đối tượng thay đổi khí, đối tượng thay đổi khí có thể đem Java đối tượng danh sách hóa thành json số liệu
converter.setObjectMapper(newJacksonObjectMapper());
// đem chính mình tin tức chuyển hóa khí gia nhập vật chứa trung
converters.add(0,converter);//0 vì hướng dẫn tra cứu, làm cái này thay đổi khí bài phía trước
}

Bắt đầu dùng cấm dùng công nhân tài khoản

在这里插入图片描述
Controller:

@PostMapping("/status/{status}")
@ApiOperation("Bắt đầu dùng cấm dùng công nhân tài khoản")
publicResultstartOrStop(@PathVariable("status")Integerstatus,Longid){
employeeService.startOrStop(status,id);
returnResult.success();
}

Service: Bản chất là sửa chữa công nhân Status tức update

publicvoidstartOrStop(Integerstatus,Longid){
Employeeemployee=// bản chất chính là sáng tạo một cái thật thể loại đối tượng
Employee.builder()// xây dựng khí đối tượng
.id(id)// phương pháp danh cùng thuộc tính danh nhất trí
.status(status)
.build();
employeeMapper.update(employee);
}

Căn cứ chủ kiện động thái sửa chữa, cho nên lại đến xml

<!-- bởi vì ở yml văn kiện trung thanh minh biệt danh bao rà quét, cho nên nơi này có thể không sử dụng toàn loại danh -->
<updateid="update"parameterType="Employee">
update employee
<set>
<iftest="name!= null">name = #{name},</if>
<iftest="username!= null">username = #{username},</if>
<iftest="password!= null">password = #{password},</if>
<iftest="phone!= null">phone = #{phone},</if>
<iftest="sex!= null">sex = #{sex},</if>
<iftest="idNumber!= null">id_number = #{idNumber},</if>
<iftest="updateTime!= null">update_time = #{updateTime},</if>
<iftest="updateUser!= null">update_user = #{updateUser},</if>
<iftest="status!= null">status = #{status},</if>
</set>
where id = #{id}
</update>

Biên tập công nhân

在这里插入图片描述
在这里插入图片描述
Tuần tra công nhân tin tức:

@GetMapping("/{id}")
@ApiOperation("Căn cứ Id tuần tra công nhân")
publicResult<Employee>getById(@PathVariableLongid){// thêm cái đường nhỏ tham số chú giải @PathVariable tới đến id
Employeeemployee=employeeService.getById(id);
returnResult.success(employee);
}
@Override
publicEmployeegetById(Longid){
Employeeemployee=employeeMapper.getById(id);
employee.setPassword("****");// tra ra mật mã, cấp đằng trước truyền ****
returnemployee;
}
@Select("select * from employee where id=#{id}")
EmployeegetById(Longid);

Biên tập công nhân tin tức:

@PutMapping
@ApiOperation("Biên tập công nhân tin tức")
publicResultupdate(@RequestBodyEmployeeDTOemployeeDTO){
employeeService.update(employeeDTO);
returnResult.success();
}
publicvoidupdate(EmployeeDTOemployeeDTO){
Employeeemployee=newEmployee();// đối tượng thuộc tính copy
BeanUtils.copyProperties(employeeDTO,employee);

employee.setUpdateTime(LocalDateTime.now());
employee.setUpdateUser(BaseContext.getCurrentId());

employeeMapper.update(employee);
}

Dẫn vào phân loại mô khối công năng số hiệu

在这里插入图片描述
Trực tiếp dán đến đối ứng folder ( ở IDEA thao tác )
Dẫn vào xong tay động biên dịch một chút
在这里插入图片描述

  • 7
    Điểm tán
  • Dẫm
  • 9
    Cất chứa
    Cảm thấy cũng không tệ lắm? Một kiện cất chứa
  • 0
    Bình luận
Security là chỉ an toàn tính, JWT là chỉ JSON Web Token,ThreadLocalLà chỉ tuyến trình bản địa lượng biến đổi. Security là một loại bảo hộ máy tính hệ thống cùng số liệu khỏi bị chưa kinh trao quyền phỏng vấn, sử dụng, tiết lộ, phá hư kỹ thuật cùng phương pháp. Ở phần mềm khai phá trung, an toàn tính là một cái quan trọng suy xét nhân tố, đặc biệt là ở đề cập người dùng thân phận nghiệm chứng cùng trao quyền ứng dụng trình tự trung. JWT là một loại dùng cho ở internet ứng dụng gian truyền lại thanh minh một loại căn cứ vào JSON mở ra tiêu chuẩn ( RFC 7519 ). Nó có thể thông qua con số ký tên tới nghiệm chứng số liệu hoàn chỉnh tính, cũng sử dụng chìa khóa bí mật đối số liệu tiến hành mã hóa. JWT thông thường dùng cho thân phận nghiệm chứng cùng trao quyền, có thể ở người dùng đăng nhập hậu sinh thành một cái JWT, cũng đem này làm lệnh bài gửi đi cấp bản cài đặt, bản cài đặt ở kế tiếp thỉnh cầu trung mang theo nên lệnh bài tới tiến hành thân phận nghiệm chứng. ThreadLocalLà Java trung một cái loại, nó cung cấp tuyến trình bản địa lượng biến đổi công năng. Mỗi cái tuyến trình đều có chính mình độc lậpThreadLocalLượng biến đổi phó bản, tuyến trình chi gian lẫn nhau không quấy nhiễu.ThreadLocalThông thường dùng cho ở nhiều tuyến trình hoàn cảnh hạ bảo tồn tuyến trình tư hữu số liệu, tỷ như người dùng thân phận tin tức, thỉnh cầu trên dưới văn chờ. Tổng hợp lên, security+jwt+threadlocalCó thể dùng cho thực hiện an toàn thân phận nghiệm chứng cùng trao quyền cơ chế. Thông qua sử dụng JWT làm lệnh bài, ở người dùng đăng nhập hậu sinh thành đồng phát đưa cho bản cài đặt, bản cài đặt ở kế tiếp thỉnh cầu trung mang theo nên lệnh bài tiến hành thân phận nghiệm chứng. MàThreadLocalCó thể dùng cho ở phục vụ đoan bảo tồn người dùng thân phận tin tức cùng thỉnh cầu trên dưới văn, để ởXử lýThỉnh cầu khi có thể thu hoạch đến chính xác người dùng tin tức.

“Tương quan đề cử” đối với ngươi có trợ giúp sao?

  • Phi thường không trợ giúp
  • Không trợ giúp
  • Giống nhau
  • Có trợ giúp
  • Phi thường có trợ giúp
Đệ trình
Bình luận
Tăng thêm bao lì xì

Thỉnh điền bao lì xì chúc phúc ngữ hoặc tiêu đề

Cái

Bao lì xì cái số nhỏ nhất vì 10 cái

Nguyên

Bao lì xì kim ngạch thấp nhất 5 nguyên

Trước mặt ngạch trống3.43Nguyên Đi trước nạp phí >
Cần chi trả:10.00Nguyên
Thành tựu một trăm triệu kỹ thuật người!
Lĩnh sau ngươi sẽ tự động trở thành bác chủ cùng bao lì xì chủ fans Quy tắc
hope_wisdom
Phát ra bao lì xì
Thật phóNguyên
Sử dụng ngạch trống chi trả
Điểm đánh một lần nữa thu hoạch
Quét mã chi trả
Tiền bao ngạch trống 0

Để khấu thuyết minh:

1. Ngạch trống là tiền bao nạp phí giả thuyết tiền, dựa theo 1:1 tỉ lệ tiến hành chi trả kim ngạch để khấu.
2. Ngạch trống vô pháp trực tiếp mua sắm download, có thể mua sắm VIP, trả phí chuyên mục cập chương trình học.

Ngạch trống nạp phí