![JAR search and dependency download from the Maven repository](/logo.png)
com.truthbean.debbie.servlet.response.ServletResponseHandler 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.response;
import com.truthbean.debbie.io.MediaType;
import com.truthbean.debbie.io.MediaTypeInfo;
import com.truthbean.debbie.mvc.response.HttpStatus;
import com.truthbean.debbie.mvc.response.ResponseHandler;
import com.truthbean.debbie.mvc.response.RouterResponse;
import com.truthbean.debbie.mvc.response.view.AbstractTemplateView;
import com.truthbean.debbie.servlet.ServletRouterCookie;
import com.truthbean.debbie.servlet.response.view.JspView;
import com.truthbean.debbie.util.StringUtils;
import com.truthbean.Logger;
import com.truthbean.logger.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import java.util.function.Supplier;
/**
* @author TruthBean
* @since 0.0.1
*/
public class ServletResponseHandler implements ResponseHandler {
private final HttpServletRequest request;
private final HttpServletResponse response;
public ServletResponseHandler(HttpServletRequest request, HttpServletResponse response) {
this.request = request;
this.response = response;
}
@Override
public void changeResponseWithoutContent(RouterResponse routerResponse) {
var headers = routerResponse.getHeaders();
if (!headers.isEmpty()) {
headers.forEach(response::setHeader);
}
var cookies = routerResponse.getCookies();
if (!cookies.isEmpty()) {
cookies.forEach(cookie -> response.addCookie(new ServletRouterCookie(cookie).getCookie()));
}
var responseType = routerResponse.getResponseType();
if (responseType != null) {
response.setContentType(responseType.toString());
}
try {
Map modelAttributes = routerResponse.getModelAttributes();
if (modelAttributes != null && !modelAttributes.isEmpty()) {
modelAttributes.forEach(request::setAttribute);
}
} catch (Exception e) {
LOGGER.error("request.setAttribute error", e);
}
}
public void copyResponseWithoutContent() {
// head
Map headers = new HashMap<>();
Collection headerNames = response.getHeaderNames();
if (headerNames != null && !headerNames.isEmpty()) {
for (String name : headerNames) {
String header = response.getHeader(name);
headers.put(name, header);
}
}
// status
int status = response.getStatus();
// trailerFields
Supplier
© 2015 - 2025 Weber Informatics LLC | Privacy Policy