HttpServletRequest和HttpRequest的区别

最近好多人问我这两个啥区别,没想到有这么多不清楚。所以在这里简要说明下,如果我们点进去HttpServletRequest这个进去,发现这是一个接口,而且源码如下:

package javax.servlet.http;

import java.io.IOException;
import java.security.Principal;
import java.util.Collection;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;

public interface HttpServletRequest extends ServletRequest {
  String BASIC_AUTH = "BASIC";
  String FORM_AUTH = "FORM";
  String CLIENT_CERT_AUTH = "CLIENT_CERT";
  String DIGEST_AUTH = "DIGEST";

  String getAuthType();

  Cookie[] getCookies();

  long getDateHeader(String var1);

  String getHeader(String var1);

  Enumeration<String> getHeaders(String var1);

  Enumeration<String> getHeaderNames();

  int getIntHeader(String var1);

  String getMethod();

  String getPathInfo();

  String getPathTranslated();

  String getContextPath();

  String getQueryString();

  String getRemoteUser();

  boolean isUserInRole(String var1);

  Principal getUserPrincipal();

  String getRequestedSessionId();

  String getRequestURI();

  StringBuffer getRequestURL();

  String getServletPath();

  HttpSession getSession(boolean var1);

  HttpSession getSession();

  String changeSessionId();

  boolean isRequestedSessionIdValid();

  boolean isRequestedSessionIdFromCookie();

  boolean isRequestedSessionIdFromURL();

  /** @deprecated */
  boolean isRequestedSessionIdFromUrl();

  boolean authenticate(HttpServletResponse var1) throws IOException, ServletException;

  void login(String var1, String var2) throws ServletException;

  void logout() throws ServletException;

  Collection<Part> getParts() throws IOException, ServletException;

  Part getPart(String var1) throws IOException, ServletException;

  <T extends HttpUpgradeHandler> T upgrade(Class<T> var1) throws IOException, ServletException;
}

首先从该接口我们清楚知道这是servlet-api包下的,然后我们就要明白servlet-api是干嘛的,这个包是非jdk自带的官方扩展包,我们以前可能见过jdk自带的官方扩展类,如swing、sql、ssl等。而这个是非官方的,我们网上搜查servlet:
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
这里就知道servlet是javaweb开发过程必不可少的包,而且里面定义了java web开发api规范及简单接口实现,通过接口实现类查找,发现spring web开发里有不少实现,比如:MultipartHttpServletRequest,对应form表达里enctype=“multipart/form-data” 即文件上传,这里我们明白接收带有文件流的表单提交,而且tomcat的本身自带servlet。
所以在此可以简单下结论,Sevlet是提供一些web开发api接口,HttpServletRequest这个接口是让各大java web框架来实现它的功能的,springmvc struts等就有对其实现,而servlet本身就有对它扩展实现类HttpServletRequestWrapper,它是java web开发中接收前端请求重要的接口,web容器如tomcat接收到请求后会把请求列、请求头、请求体封装成HttpServletRequest传给servlet实例
## HttpRequest
我们搜下项目里用到的HttpRequest可能有好多,我搜到下面几个在这里插入图片描述
我们从第一个点进去看发现它的实现类ClientHttpRequest这个RestTemplate,我们知道RestTemplate是spring提供的一个http请求工具,在spring cloud的ribbon就是基于此进行进行restfull服务调用,这里HttpRequest类是Http请求参数类接口,而下面的apache-http-client及jdk自带的sun包都是基于java net包的实现,表明都是用来进行http请求用的。netty的提供的是接收http协议的参数,为啥netty和servlet都是接收而不一样呢,主要netty是以tcp协议为基础的http协议封装。

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值