根据ServletRequestAttributes 获取前端请求方法名、参数、路径等信息

1、 根据前端请求获取方法名、参数、路径等信息

在一个方法里面如果想获取请求信息,需要从请求上下文获取request,或者在参数列表使用HttpServletRequest
request

①在方法中获取请求上下文

// 接收到请求,记录请求内容

 ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
② 获取请求request
     //接收到request
    HttpServletRequest request = attributes.getRequest();

③获取参数

    Map map = getParameterMap(request);
    System.out.println("我是从Map参数获取的:"+Arrays.asList(map));

④重点:getParameterMap 方法

 /**
     * 获取所有请求参数,封装为map对象
     *
     * @return
     */
    public Map<String, Object> getParameterMap(HttpServletRequest request) {
        if (request == null) {
            return null;
        }
        Enumeration<String> enumeration = request.getParameterNames();
        Map<String, Object> parameterMap = new HashMap<String, Object>();
        StringBuilder stringBuilder = new StringBuilder();
        while (enumeration.hasMoreElements()) {
            String key = enumeration.nextElement();
            String value = request.getParameter(key);
            String keyValue = key + " : " + value + " ; ";
            stringBuilder.append(keyValue);
            parameterMap.put(key, value);
        }
        return parameterMap;
    }

这样可以获取到所有信息

2、 根据前端请求request的常用API

项目基本配置如下:

server:
  port: 8090
  servlet:
    context-path: /basePath

接口访问路径:localhost:8090/basePath/abssimplefactory/factoryElectric/insertData

那么:

	//获取项目的获取项目的根路径(即项目本身的路径,即这里的context-path)
	String contextPath = request.getContextPath();
	//获取项目的根路径后的接口路径(即这里/basePath后面的部分)
	String servletPath = request.getServletPath();
	//获取"/"在机器中的实际地址
    String realPath = request.getServletContext().getRealPath("/");
    //获取根路径到地址结尾(包含根路径)
    String requestURI = request.getRequestURI();
   // 获取请求的地址链接(浏览器中输入的地址)
    String requestURL = request.getRequestURL();

打印结果:

contextPath: /basePath
servletPath: /abssimplefactory/factoryElectric/insertData
realPath: C:\Users\Admin\AppData\Local\Temp\tomcat-docbase.8044651288221446750.8090
requestURI: /basePath/abssimplefactory/factoryElectric/insertData
requestURL: http://localhost:8090/basePath/abssimplefactory/factoryElectric/insertData

你可能感兴趣的:(java,java)