当前位置:网站首页>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;
})
})
边栏推荐
- [the most detailed in history] statistical description of overdue days in credit
- Sqlite数据库存储目录结构邻接表的实现2-目录树的构建
- SQL uses the in keyword to query multiple fields
- redis你到底懂不懂之list
- 腾讯安全发布《BOT管理白皮书》|解读BOT攻击,探索防护之道
- 【编程题】【Scratch二级】2019.09 绘制雪花图案
- C language learning
- Database query - what is the highest data?
- The result of innovation in professional courses such as robotics (Automation)
- Ping error: unknown name or service
猜你喜欢
52歲的周鴻禕,還年輕嗎?
Magic fast power
Aitm3.0005 smoke toxicity test
一键免费翻译300多页的pdf文档
35岁真就成了职业危机?不,我的技术在积累,我还越吃越香了
Set up personal network disk with nextcloud
How does starfish OS enable the value of SFO in the fourth phase of SFO destruction?
【编程题】【Scratch二级】2019.09 绘制雪花图案
STM32F1与STM32CubeIDE编程实例-旋转编码器驱动
10 schemes to ensure interface data security
随机推荐
某马旅游网站开发(登录注册退出功能的实现)
HB 5469 combustion test method for non-metallic materials in civil aircraft cabin
【编程题】【Scratch二级】2019.12 绘制十个正方形
Pigsty: out of the box database distribution
new和delete的底层原理以及模板
LinkedBlockingQueue源码分析-新增和删除
Install sqlserver2019
蓝桥ROS中使用fishros一键安装
Ping error: unknown name or service
SQL connection problem after downloading (2)
Tools for debugging makefiles - tool for debugging makefiles
The difference between get and post
光流传感器初步测试:GL9306
关于组织2021-2022全国青少年电子信息智能创新大赛西南赛区(四川)复赛的通知
QT creator add JSON based Wizard
Basic learning of SQL Server -- creating databases and tables with code
webflux - webclient Connect reset by peer Error
35岁那年,我做了一个面临失业的决定
52歲的周鴻禕,還年輕嗎?
Preliminary test of optical flow sensor: gl9306