当前位置:网站首页>Development of a horse tourism website (optimization of servlet)
Development of a horse tourism website (optimization of servlet)
2022-07-08 00:10:00 【Haohao likes pork】
Optimization purpose
- Reduce web Layer file
- distinct
- Easy to maintain
After optimization web Layer directory structure
Catalog
1.0 Content of analysis method
1.0.2 Arrangement web Layer file
1.1.0server layer UserServiceImpl.java file
0. Compilation of base class
be-all servlet Classes will inherit BaseServlet, instead of HttpServlet,BaseServlet rewrite HttpServlet Of Servlet Method
0.0
0.0.0 The base class code
package com.haohao.travel.web.servlet;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.haohao.travel.domain.User;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class BaseServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// Request path
String requestURI = req.getRequestURI();
// Request method to get
String methodName = requestURI.substring(requestURI.lastindexOf("/")+1);
// Distribute tasks
try{
Method method = this.getClass().getMethod(methodName,HttpServletRequest.class,HttpServletResponse.class);
// Violent reflex
method.setAccessible(true);
method.invoke(this,req,resp);
} catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
/**
*
* Common method , towards resp We'll meet again obj Of json data
* @param obj
* @param resp
* @throws IOException
*/
public void writeValue(Object obj, HttpServletResponse resp) throws IOException {
ObjectMapper mapper = new ObjectMapper();
// Set the response header to json Format
resp.setContentType("application/json;charset=utf-8");
mapper.writeValue(resp.getOutputStream(),obj);
}
}
1.userServlet Class writing
1.0 Content of analysis method
- User registration
- User activation
- Get username
- The user login
- User exits
1.0.0 Write the framework
1.0.1 Code implementation
Most of the code is the same as before web The layer code is consistent , Use public methods to optimize locally
package com.haohao.travel.web.servlet;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.haohao.travel.domain.ResultInfo;
import com.haohao.travel.domain.User;
import com.haohao.travel.service.UserService;
import com.haohao.travel.service.impl.UserServiceImpl;
import org.apache.commons.beanutils.BeanUtils;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;
@WebServlet("/user/*") //
public class UserServlet extends BaseServlet{
// Create the corresponding service layer object
private UserService service = new UserServiceImpl();
// User registration
public void regist(HttpServletRequest req, HttpServletResponse resp) throws IOException {
// Image verification code validation
String check = req.getParameter("check");
HttpSession session = req.getSession();
String checkcode_server = (String) session.getAttribute("CHECKCODE_SERVER");
// The image verification code is invalid once used
session.removeAttribute("CHECKCODE_SERVER");
if (checkcode_server==null||!checkcode_server.equals(check)){
// Picture verification code verification failed
// Result information object , Store the data that needs to be returned to the front end
ResultInfo info = new ResultInfo(false," Verification code error ");
// Convert the information result object to json Format
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(info);
// Set the response header to json Format
resp.setContentType("application/json;charset=utf-8");
resp.getWriter().write(json);
return;
}
// The graphic verification code is verified successfully , Get... In the request user Information , Encapsulated in the user object
Map<String,String[]> map = req.getParameterMap();
User user = new User();
try{
BeanUtils.populate(user,map);
} catch (InvocationTargetException | IllegalAccessException e) {
e.printStackTrace();
}
// call UserService Register in
UserService userService = new UserServiceImpl();
boolean flag = userService.regist(user);
ResultInfo info = null;
if (flag){
// Registered successfully
info = new ResultInfo(true);
}else {
info = new ResultInfo(false," Registration failed ");
}
writeValue(info,resp);
}
// User activation
public void active(HttpServletRequest req, HttpServletResponse resp) throws IOException {
String msg =" Activation failed , Please check whether the activation code is valid ";
String code = req.getParameter("code");
if (code!=null){
UserService userService = new UserServiceImpl();
boolean flag = userService.active(code);
if (flag){
// Activation successful
msg = " Activation successful , please <a href='login.html'> Sign in </a>!";
}
}
resp.setContentType("text/html;charset=utf-8");
resp.getWriter().write(msg);
}
// Get username
public void FindOne(HttpServletRequest req, HttpServletResponse resp) throws IOException {
User user = null;
try{
user= (User) req.getSession().getAttribute("user");
}catch (Exception e){
}
ResultInfo info=new ResultInfo();
if(user!=null){
// Logged in
info.setFlag(true);
info.setData(user.getUsername());
}else {
info.setFlag(false);
}
writeValue(info,resp);
}
// The user login
public void login(HttpServletRequest req, HttpServletResponse resp) throws IOException {
// Image verification code validation
String check = req.getParameter("check");
HttpSession session = req.getSession();
String checkcode_server = (String) session.getAttribute("CHECKCODE_SERVER");
// The image verification code is invalid once used
session.removeAttribute("CHECKCODE_SERVER");
if (checkcode_server==null||!checkcode_server.equals(check)){
// Picture verification code verification failed
// Result information object , Store the data that needs to be returned to the front end
ResultInfo info = new ResultInfo(false," Verification code error ");
// Convert the information result object to json Format
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(info);
// Set the response header to json Format
resp.setContentType("application/json;charset=utf-8");
resp.getWriter().write(json);
return;
}
// The graphic verification code is verified successfully , Get... In the request user Information , Encapsulated in the user object
Map<String,String[]> map = req.getParameterMap();
User user = new User();
try{
BeanUtils.populate(user,map);
} catch (InvocationTargetException | IllegalAccessException e) {
e.printStackTrace();
}
// call UserService Login in
UserService userService = new UserServiceImpl();
// After landing, user object , by null Login fails
user = userService.login(user);
ResultInfo info = new ResultInfo();
if (user==null){
// Login failed
info.setFlag(false);
info.setErrorMsg(" Username or password incorrect ");
}else if(user.getStatus().equals("N")){
// User not activated
info.setFlag(false);
info.setErrorMsg(" Please go to the registration mailbox to activate ");
}else {
// Successfully logged in , State to keep
req.getSession().setAttribute("user",user);
info.setFlag(true);
}
writeValue(info,resp);
}
// User exits
public void exit(HttpServletRequest req, HttpServletResponse resp) throws IOException {
// Destroy login data
req.getSession().invalidate();
// Jump to the login interface
resp.sendRedirect(req.getContextPath()+"/login.html");
}
}
1.0.2 Arrangement web Layer file
Here I deleted the file directly , You can also use git Repository tools for version control
1.1 Analyze routing
The access route of the back end has been changed , So the front-end access url The route also needs to be changed
1.1.0server layer UserServiceImpl.java file
// Send activation email
String text = "<a href='http://localhost/travel/user/active?code="+user.getCode()+"'> Click this link to activate your account </a>";
1.1.1 front end header.html
// Get login user name
$(function () {
$.get("user/FindOne",{},function (data) {
//{uid:1,name:' Li Si '}
if(data.flag){
// Has landed
var msg = " welcome back ,"+data.data;
$("#span_username").html(msg);
$(".login_out").hide()
$(".login").show()
}else {
// Not logged in
$(".login").hide()
$(".login_out").show()
}
});
});
1.1.2 front end login.html
$(function () {
$("#btn_sub").bind("click",function () {
$.post("user/login",$("#loginForm").serialize(),function (data) {
if (data.flag){
// Landing successful , Jump to home page
location.href="index.html"
}else {
// Login failed
$("#errorMsg").html(data.errorMsg);
}
});
});
});
1.1.3regist.html
$(function () {
$("#registerForm").submit(function () {
if(checkAll()){
// All the form items have passed the verification
$.post("user/regist",$(this).serialize(),function (data) {
if(data.flag){
location.href="register_ok.html";
}else {
$("#checkCode").src="checkCode?"+new Date().getTime();
$("#errorMsg").html(data.errorMsg);
}
});
}
// Form item validation failed , Intercept submission requests
return false;
})
})
边栏推荐
- Pigsty: out of the box database distribution
- 80%的人答错,苹果logo上的叶子到底朝左还是朝右?
- Two small problems in creating user registration interface
- Emotional post station 010: things that contemporary college students should understand
- HB 5469 combustion test method for non-metallic materials in civil aircraft cabin
- Laser slam learning (2d/3d, partial practice)
- 关于组织2021-2022全国青少年电子信息智能创新大赛西南赛区(四川)复赛的通知
- 光流传感器初步测试:GL9306
- The difference between -s and -d when downloading packages using NPM
- Cmake learning notes (1) compile single source programs with cmake
猜你喜欢
【編程題】【Scratch二級】2019.12 飛翔的小鳥
Coindesk comments on the decentralization process of the wave field: let people see the future of the Internet
Introduction to programming hardware
Kubectl's handy command line tool: Oh my Zsh tips and tricks
Laser slam learning (2d/3d, partial practice)
Rectification characteristics of fast recovery diode
Solutions to problems in sqlserver deleting data in tables
Trust orbtk development issues 2022
Go learning notes (1) environment installation and hello world
[leetcode] 20. Valid brackets
随机推荐
Linkedblockingqueue source code analysis - add and delete
[programming problem] [scratch Level 2] draw ten squares in December 2019
Go time package common functions
Seven years' experience of a test engineer -- to you who walk alone all the way (don't give up)
How to measure whether the product is "just needed, high frequency, pain points"
单机高并发模型设计
每日刷题记录 (十六)
Binary sort tree [BST] - create, find, delete, output
Restricted linear table
paddle一个由三个卷积层组成的网络完成cifar10数据集的图像分类任务
2022.7.7-----leetcode.648
About the difference between ch32 library function and STM32 library function
Is it safe for tongdaxin to buy funds?
Coindesk comments on the decentralization process of the wave field: let people see the future of the Internet
PostGIS learning
How does starfish OS enable the value of SFO in the fourth phase of SFO destruction?
FFA与ICGA造影
Trust orbtk development issues 2022
C language 005: common examples
Is 35 really a career crisis? No, my skills are accumulating, and the more I eat, the better