Servlet(四)----Request
## Request
1、request对象和response对象的原理
1、request和response对象是由服务器创建的。我们来使用他们。
2、request对象是来获取请求消息,response对象是来设置响应消息

2、request对象集成体系结构:
ServletRequest:----接口
| 继承
HttpServletRequest: ----接口
| 实现
org.apache.catalina.connector.RequestFacade 类(tomcat)
3、request功能
1、获取请求消息
1、获取请求行数据
* GET /day14/demo1?name=zhangsan HTTP/1.1
* 方法:
1、获取请求方式:GET
* String getMethod()
2、获取虚拟目录:/day14
* String getContextPath();
3、获取Servlet路径:/demo01
* String getServletPath();
4、获取GET方式请求参数:name=zhangsan
* String getQueryString();
5、获取请求的URI:/day14/demo1
* String getRequestURI(); /day14/demo1
* StringBuffer getRequestURL(); http://localhost/day14/demo1
URL:统一资源定位符 (中华人民共和国)
URI:统一资源标识符 (共和国)
6、获取协议及版本:GTTP/1.1
* String getProtocol();
7、获取客户机的IP地址:
* String getRemoteAddr();
2、获取请求头数据
* 方法:
* String getHeader(String name):通过请求头的名称来获取请求头的值
* getHeaderNames():获取所有请求头名称
3、获取请求体数据
* 请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的的请求参数
* 步骤:
1、获取流对象
* BufferedReader getReader() 获取字符输入流,只能操作字符数据
package com.Request.demo03; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException; @WebServlet("/requestDemo04")
public class RequestDemo01 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
BufferedReader br = request.getReader();
String line = null;
while ((line = br.readLine()) != null){
System.out.println(line); //username=ftj&password=123
}
} @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { }
}
* ServletInputStream getInputStream() 获取字节输入流,可以操作所有类型的数据
2、再从流对象中拿数据
2、其他功能
1、获取请求参数通用方法
* String getParameter(String name):根据参数名称获取参数值 username=zhangsan&password=123
* String[] getParameterValues(String name):根据参数名称获取参数值的数组 hobbies=XX&hobbies=YY
* Enumeration<String> getParameterNames():获取所有请求参数名称
* Map<String,String[]> getParameterMap():所有参数的键值对集合
package com.Request.demo03; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration; @WebServlet("/requestDemo05")
public class RequestDemo02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
/*Enumeration<String> parameterNames = req.getParameterNames();
while (parameterNames.hasMoreElements()){
String s = parameterNames.nextElement();
System.out.println(s);
String[] para = req.getParameterValues(s);
//System.out.println(para);
for (String s1 : para) {
System.out.println(s1);
}
}*/
req.setCharacterEncoding("utf-8");
String username = req.getParameter("username");
System.out.println(username);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
2、请求转发:一种在服务器内部资源跳转的方式。
* 步骤:
1、通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
2、使用这个对象进行转发:forward(ServletRequest request, ServletResponse response)
* 特点:
1、地址栏路径没有发生变化
2、转发只能转发到当前服务器内部资源中
3、转发是一次请求
3、共享数据
* 域对象:一个有作用范围的对象,可以再范围内共享数据。
* request域:代表一次请求的范围,一般用于请求转发的多个资源中去共享数据
* 方法:
1、setAttribute(String name, Object obj):存储数据
2、getAttribute(String name):通过键来获取值
3、removeAttribute(String name):通过键来移除键值对
package com.Request.demo04; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; /**
* 共享数据:request域
*/
@WebServlet("/RequestDemo01")
public class RequestDemo03 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("msg","hello");
request.getRequestDispatcher("/RequestDemo02").forward(request,response);
} @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
package com.Request.demo04; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; @WebServlet("/RequestDemo02")
public class RequestDemo04 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Object msg = request.getAttribute("msg");
System.out.println(msg);
} @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
4、获取ServletContext对象
* ServletContext getServletContext();
Servlet(四)----Request的更多相关文章
- Servlet技术——request、respone详解
Servlet之request.respone详解 Request (一) 概述 request是Servlet.service()方法的一个参数,在客户端发出每个请求时,服务器都会创建一个reque ...
- Servlet的Request.getInputStream()只能读取一次问题
Servlet的Request.getInputStream()只能读取一次问题 这个星期公司的项目接口进行改造,公司的接口有的采用了WebService的方式,有的使用的是Http协议+Servle ...
- 过滤器将获取到的内容注入到servlet的request中
过滤器将获取到的内容注入到servlet的request中
- javaWeb核心技术第七篇之HTTP、Tomcat、Servlet、Request和Response
- Web服务器 - 概念: - web资源: "英文直译"网"的意思 资源:一切数据文件 web资源:通过网络可以访问到的资源,通常指的是一切放在服务器上的文件&quo ...
- Web开发-Servlet&HTTP&Request
<!doctype html>02 - JavaEE - Servlet&HTTP&Request figure:first-child { margin-top: -20 ...
- java web(四):request、response一些用法和文件的上传和下载
上一篇讲了ServletContent.ServletCOnfig.HTTPSession.request.response几个对象的生命周期.作用范围和一些用法.今天通过一个小项目运用这些知识.简单 ...
- 10 Servlet+Http+Request对象
1.Servlet的体系结构 Servlet -- 接口----->GenericServlet -- 抽象类------->HttpServlet -- 抽象类 (1)GenericSe ...
- servlet 之request
request对象中其他功能 一.转发和包含 转发==>用于一个servlet和一个jsp合作处理 servlet用于处理逻辑.jsp用于显示 ...
- javaWeb中 servlet 、request 、response
1.Servlet (1)Servlet是JavaEE的一个动态web资源开发技 术,就是在服务器上运行的小程序,这个小程序是由服务器调用的,服务器为了能调用这个小程序,就要求这样的程序必须实现一个S ...
随机推荐
- The Basic Of K8s
k8s 基础概念 1.一个k8s集群包括 一个Master节点(主节点) 一群Node节点(计算节点) 2.Master节点 包括API Server.Scheduler.Controller man ...
- 论文笔记[Slalom: Fast, Verifiable and Private Execution of Neural Networks in Trusted Hardware]
作者:Florian Tramèr, Dan Boneh [Standford University] [ICLR 2019] Abstract 为保护机器学习中隐私性和数据完整性,通常可以利用可信 ...
- RHEL系统下安装atlassian-jira-5
操作系统:RHEL 6.4 x86_64 Jira版本:atlassian-jira-5.2.11-x64.bin 安装路径:/opt/atlassian/jira/ 数据保存路径:/opt/atla ...
- 【转载】Oracle Spatial中SDO_Geometry详细说明
转载只供个人学习参考,查看请前往原出处:http://www.cnblogs.com/upDOoGIS/archive/2009/05/20/1469871.html 相关微博:oracle 创建SD ...
- 7——PHP选择结构
*/ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...
- java ThreadPoolExecutor初探
导读:线程池是开发中使用频率比较高的组件之一,但是又有多少人真正了解其内部机制呢. 关键词:线程池 前言 线程池是大家开发过程中使用频率比较高的组件之一,但是其内部原理又有多少人真正清楚呢.最近抽时间 ...
- Go-数据类型以及变量,常量,函数,包的使用
Go-数据类型以及变量,常量,函数,包的使用 一.数据类型 1.字符串类型 string -双引号包裹的:"xxx" -反引号包裹,可以换行, 注意: 区别于python,是没有单 ...
- 二进制原码、反码、补码以及Java中的<< 和 >> 和 >>> 详细分析
1.计算机二进制系统中最小单位bit 在计算机二进制系统中: bit (位) :数据存储的最小单元. 简记为b,也称为比特(bit),每个二进制数字0或1就是一个位(bit),其中,每 8bit = ...
- HandlerInterceptor ModelAndView null springMVC @ResponseBody
本文来源https://blog.csdn.net/whiteforever/article/details/77457109 用了@RestController或者@ResponseBody注解之后 ...
- vue学习笔记(四)
一.vue-router 1.简介 我们经常使用vue开发单页面应用程序(SPA).在开发SPA过程中,路由是必不可少的部分,vue的官方推荐是vue-router.单页面应用程序看起来好像是一个页面 ...