![JAR search and dependency download from the Maven repository](/logo.png)
com.truthbean.debbie.servlet.request.HttpServletRequestWrapper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of debbie-servlet Show documentation
Show all versions of debbie-servlet Show documentation
a java microservice project
The newest version!
/**
* Copyright (c) 2020 TruthBean(Rogar·Q)
* Debbie is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
package com.truthbean.debbie.servlet.request;
import com.truthbean.debbie.io.FileNameUtils;
import com.truthbean.debbie.io.MediaType;
import com.truthbean.debbie.io.MediaTypeInfo;
import com.truthbean.debbie.io.MultipartFile;
import com.truthbean.debbie.mvc.request.DefaultRouterRequest;
import com.truthbean.debbie.mvc.request.HttpMethod;
import com.truthbean.debbie.mvc.request.RequestBody;
import com.truthbean.debbie.mvc.request.RouterRequest;
import com.truthbean.debbie.net.uri.QueryStringDecoder;
import com.truthbean.debbie.net.uri.UriUtils;
import com.truthbean.debbie.servlet.ServletRouterCookie;
import com.truthbean.debbie.servlet.ServletRouterSession;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.servlet.ServletRequestContext;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.HttpCookie;
import java.nio.charset.Charset;
import java.security.Principal;
import java.util.*;
/**
* @author TruthBean
* @since 0.0.1
* Created on 2018-02-19 11:11
*/
public class HttpServletRequestWrapper implements HttpServletRequest {
private final HttpServletRequest request;
private final DefaultRouterRequest routerRequest;
public HttpServletRequestWrapper(HttpServletRequest httpServletRequest) {
this(UUID.randomUUID().toString(), httpServletRequest);
}
private HttpServletRequestWrapper(RouterRequest routerRequest, HttpServletRequest request) {
this.routerRequest = new DefaultRouterRequest();
this.request = request;
this.routerRequest.copy(routerRequest);
}
private HttpServletRequestWrapper(String id, HttpServletRequest httpServletRequest) {
this.routerRequest = new DefaultRouterRequest() {
@Override
public String getRealPath(String path) {
return httpServletRequest.getServletContext().getRealPath(path);
}
@Override
public String getContextPath() {
return httpServletRequest.getContextPath();
}
@Override
public void setCharacterEncoding(Charset charset) {
try {
request.setCharacterEncoding(charset.name());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
};
this.request = httpServletRequest;
this.routerRequest.setMethod(HttpMethod.valueOf(request.getMethod()));
this.routerRequest.setUrl(request.getRequestURI());
this.routerRequest.setMatrix(UriUtils.resolveMatrixByPath(this.routerRequest.getUrl()));
this.routerRequest.setPathAttributes(new HashMap<>());
setHeaders();
setCookies();
this.routerRequest.setMethod(HttpMethod.resolve(request.getMethod()));
this.routerRequest.setSession(new ServletRouterSession(request));
this.routerRequest.setQueries(queries(request.getQueryString()));
setParams();
setBody();
setContentType();
setResponseType();
setRequestAttribute();
this.routerRequest.setId(id);
}
public HttpServletRequest getHttpServletRequest() {
return request;
}
private void setHeaders() {
Map> map = new HashMap<>();
var headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
var headerName = headerNames.nextElement();
List value = new ArrayList<>();
var headers = request.getHeaders(headerName);
while (headers.hasMoreElements()) {
value.add(headers.nextElement());
}
map.put(headerName, value);
}
this.routerRequest.setHeaders(map);
}
private void setCookies() {
var cookies = request.getCookies();
List result = new ArrayList<>();
if (cookies != null) {
for (var cookie : cookies) {
result.add(new ServletRouterCookie(cookie).getHttpCookie());
}
}
this.routerRequest.setCookies(result);
}
private void setParams() {
Map> map = new HashMap<>();
var parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
var name = parameterNames.nextElement();
var values = request.getParameterValues(name);
List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy