##  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的更多相关文章

  1. Servlet技术——request、respone详解

    Servlet之request.respone详解 Request (一) 概述 request是Servlet.service()方法的一个参数,在客户端发出每个请求时,服务器都会创建一个reque ...

  2. Servlet的Request.getInputStream()只能读取一次问题

    Servlet的Request.getInputStream()只能读取一次问题 这个星期公司的项目接口进行改造,公司的接口有的采用了WebService的方式,有的使用的是Http协议+Servle ...

  3. 过滤器将获取到的内容注入到servlet的request中

    过滤器将获取到的内容注入到servlet的request中

  4. javaWeb核心技术第七篇之HTTP、Tomcat、Servlet、Request和Response

    - Web服务器 - 概念: - web资源: "英文直译"网"的意思 资源:一切数据文件 web资源:通过网络可以访问到的资源,通常指的是一切放在服务器上的文件&quo ...

  5. Web开发-Servlet&HTTP&Request

    <!doctype html>02 - JavaEE - Servlet&HTTP&Request figure:first-child { margin-top: -20 ...

  6. java web(四):request、response一些用法和文件的上传和下载

    上一篇讲了ServletContent.ServletCOnfig.HTTPSession.request.response几个对象的生命周期.作用范围和一些用法.今天通过一个小项目运用这些知识.简单 ...

  7. 10 Servlet+Http+Request对象

    1.Servlet的体系结构 Servlet -- 接口----->GenericServlet -- 抽象类------->HttpServlet -- 抽象类 (1)GenericSe ...

  8. servlet 之request

    request对象中其他功能     一.转发和包含         转发==>用于一个servlet和一个jsp合作处理             servlet用于处理逻辑.jsp用于显示   ...

  9. javaWeb中 servlet 、request 、response

    1.Servlet (1)Servlet是JavaEE的一个动态web资源开发技 术,就是在服务器上运行的小程序,这个小程序是由服务器调用的,服务器为了能调用这个小程序,就要求这样的程序必须实现一个S ...

随机推荐

  1. jquery和zepto的异同

    相同点 相同点: zepto: 是jquery 的 阉割版 是为移动端开发的库 jQuery的轻量级替代品.文件大小比较小 只有8k左右 ,是目前功能库中最小的一个,尽管不大,zepto 所提供的工具 ...

  2. 安卓权威编程指南 挑战练习 25章 深度优化 PhotoGallery 应用

    你可能已经注意到了,提交搜索时, RecyclerView 要等好一会才能刷新显示搜索结果.请接受挑战,让搜索过程更流畅一些.用户一提交搜索,就隐藏软键盘,收起 SearchView 视图(回到只显示 ...

  3. springboot利用swagger构建api文档

    前言 Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件.本文简单介绍了在项目中集成swagger的方法和一些常见问题.如果想深入分析项目源码,了解更多内容,见参考资料. S ...

  4. C++走向远洋——35(友元,时间)

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:time.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  5. 基于 HTML5 Canvas 的 3D 热力云图效果

    前言 数据蕴藏价值,但数据的价值需要用 IT 技术去发现.探索,可视化可以帮助人更好的去分析数据,信息的质量很大程度上依赖于其呈现方式.在数据分析上,热力图无疑是一种很好的方式.在很多行业中都有着广泛 ...

  6. [翻译]python3中新的字符串格式化方法-----f-string

    从python3.6开始,引入了新的字符串格式化方式,f-字符串. 这使得格式化字符串变得可读性更高,更简洁,更不容易出现错误而且速度也更快. 在本文后面,会详细介绍f-字符串的用法. 在此之前,让我 ...

  7. Spring事务Transactional和动态代理(三)-事务失效的场景

    系列文章索引: Spring事务Transactional和动态代理(一)-JDK代理实现 Spring事务Transactional和动态代理(二)-cglib动态代理 Spring事务Transa ...

  8. node--静态文件托管,路由,模板引擎

    1.路由 路由是由一个URI和一个特定的HTTP方法(GET/POST)组成的 涉及到应用如何响应客户端对某个网站节点的访问 2.ejs 3.get/post 1)get获取数据 通过Url类中的qu ...

  9. C#版免费离线人脸识别——虹软ArcSoft V3.0

    [温馨提示] 本文共678字(不含代码),8张图.预计阅读时间需要6分钟. 1. 前言 人脸识别&比对发展到今天,已经是一个非常成熟的技术了,而且应用在生活的方方面面,比如手机.车站.天网等. ...

  10. 【猫狗数据集】利用tensorboard可视化训练和测试过程

    数据集下载地址: 链接:https://pan.baidu.com/s/1l1AnBgkAAEhh0vI5_loWKw提取码:2xq4 创建数据集:https://www.cnblogs.com/xi ...