javaweb04 ServletRequest&ServletResponse
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的更多相关文章
- Java Servlet(四):Servlet接口service工作(ServletRequest,ServletResponse对象)(jdk7+tomcat7+eclipse)
本篇将会记录,Servlet接收客户端传递来的参数信息,并返回信息使用的对象,及这些对象的函数相关用法. 还是在java ee工程中进行操作,在WebContent目录下创建一个login.jsp文件 ...
- Servlet(5)—ServletRequest接口和ServletResponse接口
ServletRequest接口: 使用ServletRequest接口创建对象,用于使客户端请求信息对Servlet可用,创建的对象作为参数传递之Servlet的Service() ServletR ...
- javaWEB总结(6):ServletRequest
1.首先看ServletRequest的API javax.servlet Interface ServletRequest All Known Subinterfaces: HttpServletR ...
- ServletRequest的四个主要方法
package com.yunqing.servlet; import javax.servlet.*; import java.io.IOException; import java.util.Ar ...
- 基于jsp+servlet图书管理系统之后台万能模板
前奏: 刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长一段时间没有分享自己的知识.于是静下心来钻研 ...
- Spring MVC学习
SpringMVC框架 转载请注明出处 目录 一:配置springMVC开发环境 1.1.配置文件的helloworld 1.2.基于注解的helloworld 二:@RequestMapping详解 ...
- Servlet3.0的异步
servlet之前的操作同时同步的,就是按照这样的一个流程来走的: 1.请求根据一个路径路由到一个servlet中, 2.servlet获取一系列的参数 3.执行一系列的逻辑(花费时间所占的比重也更大 ...
- Servlet的生命周期及工作原理
Servlet生命周期分为三个阶段: 1,初始化阶段 调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在 ...
- CAS Client集群环境的Session问题及解决方案
[原创申明:文章为原创,欢迎非盈利性转载,但转载必须注明来源] 之前写过一篇文章,介绍单点登录的基本原理.这篇文章重点介绍开源单点登录系统CAS的登录和注销的实现方法.并结合实际工作中碰到的问题,探讨 ...
随机推荐
- Java 文件
章节 Java 基础 Java 简介 Java 环境搭建 Java 基本语法 Java 注释 Java 变量 Java 数据类型 Java 字符串 Java 类型转换 Java 运算符 Java 字符 ...
- poj 1027 Ignatius and the Princess II全排列
Ignatius and the Princess II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K ( ...
- 不能安装64位office提示已安装32位如何处理
不能安装64位office提示已安装32位如何处理? 1 2 3 4 5 6 当你遇到提示说[无法安装64位版本的office,以为在您的PC上找一下32位程序......]时如果你还想安装64位 ...
- UVA - 816 Abbott's Revenge(bfs)
题意:迷宫从起点走到终点,进入某点的朝向不同,可以出去的方向也不同,输出最短路. 分析:因为朝向决定接下来在该点可以往哪里走,所以每个点需要有三个信息:x,y,d(坐标和进入该点的朝向),所以将起点的 ...
- C++编程学习(十)引用
引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字.一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量. 注意以下几点与指针的区别: 不存在空引用.引用必须连接到一块合法的 ...
- SpringBoot 上传文件突然报错 Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.1428942566812653608
异常信息 org.springframework.web.multipart.MultipartException: Failed to parse multipart servlet request ...
- 快速进阶Vue3.0
在2019.10.5日发布了Vue3.0预览版源码,但是预计最早需要等到 2020 年第一季度才有可能发布 3.0 正式版. 可以直接看 github源码. 新版Vue 3.0计划并已实现的主要架构改 ...
- Bulma CSS - 开始
Bulma CSS框架教程 Bulma CSS – 简介 Bulma CSS – 开始 Bulma CSS – CSS类 Bulma CSS – 模块化 Bulma CSS – 响应式 有数种方法可以 ...
- linux命令之strace简单使用
strace是什么 strace是一个可用于诊断.调试和教学的Linux用户空间跟踪器.我们用它来监控用户空间进程和内核的交互,比如系统调用.信号传递.进程状态变更等. 使用方式 strace 使用帮 ...
- LabVIEW面向对象的ActorFramework(3)
四.LabVIEW面向对象的编程架构:Actor Framework Actor Framework是一个软件类库,用以支持编写有多个VI独立运行且相互间可通信的应用程序,在该类型应用程序中,每个VI ...