Quick permission to build a project (six)

Today we explain that before and after the Http request monitoring tool

You must first create a class used for processing: HttpInterceptor.class:

package cn.oyc.common;

import cn.oyc.util.JsonMapper;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;

@Slf4j
public class HttpInterceptor extends HandlerInterceptorAdapter {
private final Logger logger = LoggerFactory.getLogger(HttpInterceptor.class);

private static final String START_TIME = "requestStartTime";
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String url = request.getRequestURL().toString();
Map parameterMap = request.getParameterMap();
logger.info("request start. utl:{},params:{}",url, JsonMapper.obj2String(parameterMap));
long start = System.currentTimeMillis();
request.setAttribute(START_TIME,start);
return true;
}

@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// String url = request.getRequestURL().toString();
// long start = (Long) request.getAttribute(START_TIME);
// long end = System.currentTimeMillis();
// logger.info("request finished. utl:{},cost:{}",url, end - start);
}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
String url = request.getRequestURL().toString();
long start = (Long) request.getAttribute(START_TIME);
long end = System.currentTimeMillis();
logger.info("request completed. utl:{},cost:{}",url, end - start);
}
}

Once this is done do not forget to configure the look spring-servlet.xml, configure some bean:

 <mvc:interceptors>
        <bean class="cn.oyc.common.HttpInterceptor"/>
    </mvc:interceptors>

Next we will write the class is over, we have to remember that this class can intercept url our system, you can do something before you can request url, then you can still do something after the request processed, where our basic tools it is configured, the next step is to write us

The department implements a interface, followed by the following:

First, write a class DeptParam department under the param package:

Package cn.oyc.param; 

Import lombok.Getter;
 Import lombok.Setter;
 Import lombok.ToString;
 Import org.hibernate.validator.constraints.Length;
 Import org.hibernate.validator.constraints.NotBlank; 

Import javax.validation.constraints .NotNull; 

@Getter 
@Setter 
@ToString 
public  class DeptParam { 

    Private Integer ID; 
    @NotBlank (Message = "department name can not be blank" ) 
    @Length (max = 15, min = 2, Message = "department name need 2- 15 between the words " )
     Private String name; 

    PrivateThe parentId Integer; 
    @NotNull (Message = "Display order not empty" )
     Private Integer SEQ; 
    @Length (max = 150, Message = "notes required length within 150 words" )
     Private String the remark; 
}

In the preparation of a controller, SysDeptController:

package cn.oyc.controller;

import cn.oyc.common.JsonData;
import cn.oyc.param.DeptParam;
import cn.oyc.service.SysDeptService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.annotation.Resource;

@Controller
@RequestMapping("/sys/dept")
@Slf4j
public class SysDeptController {
    @Resource
    private SysDeptService sysDeptService;
    @RequestMapping("/save.json")
    public JsonData saveDept(DeptParam param){
        sysDeptService.save(param);
        return JsonData.success("");
    }
}

Prior to this we had to create his Service:

package cn.oyc.service;

import cn.oyc.dao.SysDeptMapper;
import cn.oyc.entity.SysDept;
import cn.oyc.exception.ParamException;
import cn.oyc.param.DeptParam;
import cn.oyc.util.BeanValidator;
import cn.oyc.util.LevelUtil;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Date;

@Service
public class SysDeptService {

    @Resource
    private SysDeptMapper sysDeptMapper;

    public void save(DeptParam param) {
        BeanValidator.check(param);
        if (checkExist(param.getParentId(),param.getName(),param.getId())){
            throw new ParamException("同一层级下存在相同名称的部门");
        }
        SysDept dept = SysDept.builder().name(param.getName()).parentId(param.getParentId())
                .seq(param.getSeq()).remark(param.getRemark()).build();
        dept.setLevel(LevelUtil.calculateLevel(getLevel(param.getParentId()),param.getParentId()));
        dept.setOperator("system");//TODO:
        dept.setOperateIp("127.0.0.1"); //TODO
        dept.setOperateTime(new Date());
        sysDeptMapper.insertSelective(dept);
    }

    private boolean checkExist(Integer parentId,String deptName,Integer deptId){
        // TODD:
        return true;
    }
    private String getLevel(Integer deptId){
        SysDept dept = sysDeptMapper.selectByPrimaryKey(deptId);
        if (dept == null){
            return null;
        }
        return dept.getLevel();
    }
}

Creating a state-level categories:

package cn.oyc.util;

import org.apache.commons.lang3.StringUtils;

public class LevelUtil {

    public final static String SEPARATOR = ".";

    public final static String ROOT = "0";

    //0
    //0.1
    //0.1.2
    //0.1.3
    //0.4
    public static String calculateLevel(String parentLevel,int parentId){
        if (StringUtils.isBlank(parentLevel)){
            return ROOT;
        }else{
            return StringUtils.join(parentLevel,SEPARATOR,parentId);
        }
    }
}

Add annotations in our entity SysDept

@Builder
@NoArgsConstructor
@AllArgsConstructor
@ToString

Guess you like

Origin www.cnblogs.com/Myoyc/p/12239392.html