All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ars.invoke.channel.http.StandardHttpChannel Maven / Gradle / Ivy

The newest version!
package ars.invoke.channel.http;

import java.util.Map;
import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import ars.util.Strings;
import ars.invoke.request.Token;

/**
 * Http请求通道标准实现
 *
 * @author wuyongqiang
 */
public class StandardHttpChannel extends AbstractHttpChannel {
    private ServletFileUpload uploader; // 文件上传处理器

    public ServletFileUpload getUploader() {
        if (this.uploader == null) {
            synchronized (this) {
                if (this.uploader == null) {
                    this.uploader = new ServletFileUpload(new DiskFileItemFactory());
                }
            }
        }
        return uploader;
    }

    public void setUploader(ServletFileUpload uploader) {
        this.uploader = uploader;
    }

    /**
     * 获取请求参数
     *
     * @param request HTTP请求对象
     * @return 参数键/值映射
     * @throws IOException      IO操作异常
     * @throws ServletException Servlet操作异常
     */
    protected Map getParameters(HttpServletRequest request) throws IOException, ServletException {
        if (ServletFileUpload.isMultipartContent(request)) {
            try {
                return Https.getUploadParameters(request, this.getUploader());
            } catch (FileUploadException e) {
                throw new ServletException(e);
            }
        } else if ("application/json".equals(request.getContentType())) {
            return Https.getStreamParameters(request);
        }
        return Https.getParameters(request);
    }

    @Override
    protected HttpRequester getRequester(String uri, ServletConfig config, HttpServletRequest request,
                                         HttpServletResponse response) throws IOException, ServletException {
        String host = request.getRemoteAddr();
        String client = request.getHeader(Https.CONTEXT_CLIENT);
        if (Strings.isEmpty(client)) {
            client = request.getSession().getId();
        }
        String identity = request.getHeader(Https.CONTEXT_TOKEN);
        if (Strings.isEmpty(identity)) {
            identity = Https.getCookie(request, Https.CONTEXT_TOKEN);
        }
        Token token = identity == null ? null : new Token(identity);
        return new StandardHttpRequester(this, config, request, response, this.getRenders(), null, request.getLocale(),
            client, host, token, uri, this.getParameters(request));
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy