WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个歌规则就是 HTTP协议
HTTP协议是超文本传输协议,它是TCP/IP协议集中的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式

浏览器与WEB服务器的连接过程是短暂的,每次连接只处理一个请求和响应。对每一个页面的访问,浏览器与WEB服务器都只要建立一次单独的连接
浏览器到WEB服务器之间的所有通讯都是完全独立分开的请求和响应对。
客户机
建立连接
发送请求
回送响应信息
关闭连接
服务器

请求消息的结构:
一个请求行,若干消息头、以及实体内容,其中一些消息头和实体内容都是可选的,消息头和实体内容之间要用空格隔开。

相应消息的结构:
一个状态行,若干消息头,以及实体内天,其中的一些消息头和实体内容都是可选的,消息头和实体内容之间要用空格隔开。

请求方式有两种 get请求和post请求

1).使用get请求传递参数:
①. 在浏览器地址栏中输入某个URL地址或单击网页上的一个超链接时,浏览器发出的HTTP请求消息的请求方式为GET。
②. 如果网页中的<form>表单元素的 method 属性被设置为了“GET”,浏览器提交这个FORM表单时生成的HTTP请求消息的请求方式也为GET。
③. 使用GET请求方式给WEB服务器传递参数的格式:
http://localhost:8080/day_291/loginServlet?user=liugang&password=12342
④. 使用GET方式传送的数据量一般限制在 1KB 以下。

2).使用POST方式传递参数:

①. POST 请求方式主要用于向 WEB 服务器端程序提交 FORM 表单中的数据: form 表单的 method 置为 POST
②. POST 方式将各个表单字段元素及其数据作为 HTTP 消息的实体内容发送给 WEB 服务器,传送的数据量要比使用GET方式传送的数据量大得多。

POST /counter.jsp HTTP/1.1
referer: http://localhost:8080/Register.html
content-type: application/x-www-form-urlencoded
host: localhost:8080
content-length: 43

name=zhangsan&password=123 --请求体中传递参数.

如何在servlet中获取请求信息:

1).servlet的service()方法用于应答请求:因为每次都会调用service()方法

public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
// TODO 自动生成的方法存根
System.out.println("请求来了。。。");
}
ServletRequest:封装了请求信息,可以从中获取到任何请求信息。
ServletResponse:封装了相应信息,如果想给用户什么响应,具体可以使用该接口的方法实现

这两个接口的实现类都是服务器给予实现的, 并在服务器调用 service 方法时传入.

2). ServletRequest: 封装了请求信息. 可以从中获取到任何的请求信息.

1.获取请求参数
> String getParameter(String name): 根据请求参数的名字, 返回参数值.
若请求参数有多个值(例如 checkbox), 该方法只能获取到第一个提交的值.

> String[] getParameterValues(String name): 根据请求参数的名字, 返回参数对应的字符串数组.

> Enumeration getParameterNames(): 返回参数名对应的 Enumeration 对象,
类似于 ServletConfig(或 ServletContext) 的 getInitParameterNames() 方法.

> Map getParameterMap(): 返回请求参数的键值对: key: 参数名, value: 参数值, String 数组类型.

2.获取请求的URI:
HttpServletRequest httpServletRequest =(HttpServletRequest) request;

String requestURL=httpServletRequest.getRequestURI();
System.out.println(requestURL);///day_291/loginServlet

3.获取请求方式:
String method = httpServletRequest.getMethod();
System.out.println(method);//GET
4.获取请求的查询字符串:若是一个 GET 请求, 获取请求参数对应的那个字符串, 即 ? 后的那个字符串.
String queryString = httpServletRequest.getQueryString();
System.out.println(queryString); user=213&password=321&interesting=reading&interesting=game&interesting=party

5.获取请求的servlet的映射路径
String servletPath = httpServletRequest.getServletPath();
System.out.println(servletPath);///loginServlet

6.和attribute相关的几个方法

3).HttpServletRequest:是ServletRequest的子接口,针对HTTP请求所定义,里面包含大量获取HTTP请求的相关方法。

4).ServletResponse: 封装了响应信息, 如果想给用户什么响应, 具体可以使用该接口的方法实现。

1.getWriter(): 返回 PrintWriter 对象. 调用该对象的 print() 方法, 将把 print() 中的参数直接打印
到客户的浏览器上。

PrintWriter out =response.getWriter();
out.println("helloworld...");

2.设置响应的内容类型: response.setContentType("application/msword");

PrintWriter out =response.getWriter();
out.println("helloworld...");
3.void sendRedirect(String location): 请求的重定向. (此方法为 HttpServletResponse 中定义.)

在 web.xml 文件中设置两个 WEB 应用的初始化参数, user, password.
定义一个 login.html, 里边定义两个请求字段: user, password. 发送请求到 loginServlet
在创建一个 LoginServlet, 在其中获取请求的 user, password. 比对其和 web.xml 文件中定义的请求参数是否一致
若一致, 响应 Hello:xxx, 若不一致, 响应 Sorry: xxx xxx 为 user.

javaweb04 ServletRequest&ServletResponse的更多相关文章

  1. Java Servlet(四):Servlet接口service工作(ServletRequest,ServletResponse对象)(jdk7+tomcat7+eclipse)

    本篇将会记录,Servlet接收客户端传递来的参数信息,并返回信息使用的对象,及这些对象的函数相关用法. 还是在java ee工程中进行操作,在WebContent目录下创建一个login.jsp文件 ...

  2. Servlet(5)—ServletRequest接口和ServletResponse接口

    ServletRequest接口: 使用ServletRequest接口创建对象,用于使客户端请求信息对Servlet可用,创建的对象作为参数传递之Servlet的Service() ServletR ...

  3. javaWEB总结(6):ServletRequest

    1.首先看ServletRequest的API javax.servlet Interface ServletRequest All Known Subinterfaces: HttpServletR ...

  4. ServletRequest的四个主要方法

    package com.yunqing.servlet; import javax.servlet.*; import java.io.IOException; import java.util.Ar ...

  5. 基于jsp+servlet图书管理系统之后台万能模板

    前奏: 刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长一段时间没有分享自己的知识.于是静下心来钻研 ...

  6. Spring MVC学习

    SpringMVC框架 转载请注明出处 目录 一:配置springMVC开发环境 1.1.配置文件的helloworld 1.2.基于注解的helloworld 二:@RequestMapping详解 ...

  7. Servlet3.0的异步

    servlet之前的操作同时同步的,就是按照这样的一个流程来走的: 1.请求根据一个路径路由到一个servlet中, 2.servlet获取一系列的参数 3.执行一系列的逻辑(花费时间所占的比重也更大 ...

  8. Servlet的生命周期及工作原理

    Servlet生命周期分为三个阶段: 1,初始化阶段  调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在 ...

  9. CAS Client集群环境的Session问题及解决方案

    [原创申明:文章为原创,欢迎非盈利性转载,但转载必须注明来源] 之前写过一篇文章,介绍单点登录的基本原理.这篇文章重点介绍开源单点登录系统CAS的登录和注销的实现方法.并结合实际工作中碰到的问题,探讨 ...

随机推荐

  1. 吴裕雄--天生自然java开发常用类库学习笔记:Arrays

    import java.util.* ; public class ArraysDemo{ public static void main(String arg[]){ int temp[] = {3 ...

  2. 整合 nginx php-fpm

    start 继上一篇 整合两个images  完成 LNMP github  https://github.com/shiphp/nginx-env     稍加修改 vim   dockerfile ...

  3. idea安装Maven Helper

    1. File -> Settings... 2. 选择 Plunins, 查询 Maven Helper,如果没有,点击 Search in repositories 3. 选择 Maven ...

  4. PowerDesigner创建索引

    防止以后忘记怎么设置索引,记录下来方便查翻 1:选中Table 2:找到Table对应的Indexes 3:选中一条记录,点击红框中的小手(Properties)或双击该记录,进入到详细里面 4:找到 ...

  5. jupiter的@TempDir 等不生效

    jupiter与junit是 完全独立的测试组件,要严防在测试中将二者混用.最好在依赖引入jupiter 时 就将junit的依赖干掉,以防在写测试用例时将二者混用.不会报错,但是会导致 jupite ...

  6. P 1015 德才论

    转跳点:

  7. 【Vue中的坑】Vue中的@mouseenter没反应?

    在开发中想实现鼠标悬浮,然后发现事件不由被出发,查找资料,发现并不是所有情况都不能用 下面就简单的说一下如何避免这种情况 如果你的悬浮事件是在 a 标签上,那么你直接使用就会出问题,你需要加一个nat ...

  8. CGridCtrl设置行列不可拉伸

    m_HFlexGrid.SetColumnResize(FALSE); m_HFlexGrid.SetRowResize(FALSE);

  9. linux shell的创建与启动

    1.创建shell脚本,输入linux命令: touch my.sh 2.编辑shell脚本,输入linux命令: vi my.sh 3.在shell脚本进行编辑:顺便记一次Jenkins的自动启动的 ...

  10. 8 —— node —— 响应一切 html 需要的静态资源

      fs.readFile('.'+urls, function (err, data) {   res.end(data)   });