企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[toc] ## HTTP简介 WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议。 HTTP是 hypertext transfer protocol(超文本传输协议)的简写,它是 TCP/IP 协议集中的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式。 ## HTTP 的会话方式 四个步骤: ![](https://box.kancloud.cn/4a448c710d4e266debc91469fff706a4_396x128.png) 浏览器与WEB服务器的连接过程是短暂的,每次连接只处理一个请求和响应。对每一个页面的访问,浏览器与WEB服务器都要建立一次单独的连接。 浏览器到WEB服务器之间的所有通讯都是完全独立分开的请求和响应对。 ## GET和POST请求 1.GET方法 GET方法是从指定的资源请求数据。<b>请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的。</b> 有关 GET 请求的其他一些注释: * GET 请求可被缓存 * GET 请求保留在浏览器历史记录中 * GET 请求可被收藏为书签 * GET 请求不应在处理敏感数据时使用 * GET 请求有长度限制 * GET 请求只应当用于取回数据 2.POST方法 post方法是向指定的资源提交要被处理的数据,<b>请注意,查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的。</b> 有关 POST 请求的其他一些注释: * POST 请求不会被缓存 * POST 请求不会保留在浏览器历史记录中 * POST 不能被收藏为书签 * POST 请求对数据长度没有要求 ## 如何在Servlet中获取信息 这里我们可以新建一个Servlet(eclipse中直接有Servlet选项)。 ~~~ public class LoginServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("get"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("post"); } } ~~~ 在之前我们自己写的Servlet当中,处理请求的service()方法,在这里其实也是,之所以能没有出现service()方法,是因为HttpServlet这个类已经对原来不完整且代码冗余的Servlet接口进行了实现和封装。这里doGet和doPost分别对应接受get和post请求,方便、简单。 这里可以对之前的表单进行验证,看请求是否能够发到对应的方法中。其中,方法的参数**HttpServletRequest request**和**HttpServletResponse response**封装了**请求和响应**信息 #### 一.如何获取请求信息 **HttpServletRequest**常用的方法: ①**String getParameter(String name)** \--根据请求参数的名字,返回参数值,特别常用 ~~~ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String user = request.getParameter("user"); String password = request.getParameter("password"); System.out.println(user+" "+password); } ~~~ ②**String\[\] getParameterValues(String name)** \--根据请求参数的名字,返回请求参数对应的字符串数组(例如:一组复选框-->名字是一样的) ~~~ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String intrests[] = request.getParameterValues("hobby"); for(String str:intrests) { System.out.println(str); } } ~~~ ③Map getParameterMap() \--返回请求参数的键值对:key:参数名,value:参数值(String数组) #### 二.如何获取响应信息 **HttpServletResponse**常用的方法: ①getWriter()方法 \--返回PrintWriter对象,调用这个对象的println()方法可以将信息直接打印在客户的浏览器上 ~~~ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println("hello..."); } ~~~ ②setContentType()方法 \--设置响应的类型 ~~~ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("application/msword"); PrintWriter out = response.getWriter(); out.println("hello..."); } ~~~ ③getOutputStream()方法,文件下载时讲解使用。