您现在的位置是:首页 > 编程 > 

E01Web学习笔记

2025-07-26 00:12:10
E01Web学习笔记 一、Request原理和继承体系1、原理第一步:用户访问url,浏览器向服务器发出请求,请求携带着请求消息数据;第二步:Tomcat服务器会根据请求url中的资源路径,创建对应的Servlet对象;第三步:Tomcat服务器创建request对象和sepe对象,request对象封装着请求消息数据;第四步:Tomcat服务器将request对象和sepe对象传递

E01Web学习笔记

一、Request原理和继承体系

1、原理

第一步:用户访问url,浏览器向服务器发出请求,请求携带着请求消息数据;

第二步:Tomcat服务器会根据请求url中的资源路径,创建对应的Servlet对象;

第三步:Tomcat服务器创建request对象和sepe对象,request对象封装着请求消息数据;

第四步:Tomcat服务器将request对象和sepe对象传递给service方法,并调用service方法;

第五步:我们(程序员)可以在service方法中通过request对象获取请求消息数据,通过respe对象设置响应消息数据;

第六步:Tomcat服务器从respe对象中获取响应消息数据,返回给浏览器;

备注:

代码语言:javascript代码运行次数:0运行复制
1、request对象和respe对象是由服务器创建的,我们(程序员)来使用它;
2、request对象用户获取请求消息数据,respe对象用于设置响应消息数据;

2、继承体系

二、获取请求数据

1、获取请求行数据

GET:/web/index?name=zhangsan HTTP/1.1

方法:

①获取请求方式:GET

代码语言:javascript代码运行次数:0运行复制
String getMethod();

②(重要)获取虚拟目录:/index

代码语言:javascript代码运行次数:0运行复制
String getContextPath();

③获取Servlet路径:/web

代码语言:javascript代码运行次数:0运行复制
 String getServletPath();

④获取GET方式请求参数:name=zhangsan

代码语言:javascript代码运行次数:0运行复制
String getQueryString();

⑤(重要)获取请求URI:/web/index

代码语言:javascript代码运行次数:0运行复制
String getRequestURI();
/web/index

StringBuffer getRequestURL();
http://localhost/web/index

URL:统一资源定位符;
URI:统一资源标识符;

⑥获取协议及版本:HTTP/1.1

代码语言:javascript代码运行次数:0运行复制
String getProtocol();

⑦获取客户机的IP地址:

代码语言:javascript代码运行次数:0运行复制
String getRemoteAddr();

2、获取请求头数据

获取单个请求头数据(常用):
代码语言:javascript代码运行次数:0运行复制
String getHeader(String var1);
获取所有请求头数据:
代码语言:javascript代码运行次数:0运行复制
Enumeration<String> getHeaderames();

Enumeration可以当作是一个迭代器;
代码演示:
代码语言:javascript代码运行次数:0运行复制
package com.zibo.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRespe;
import java.io.IOException;
import java.util.Enumeration;

@WebServlet("/my")
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletRespe resp) throws ServletException, IOException {
        super.doGet(req, resp);
        println("doGet……");
        //获取所有请求头
        Enumeration<String> headerames = req.getHeaderames();
        while (headerames.hasMoreElements()){
            String name = ();
            String value = req.getHeader(name);
            println(name+"--------"+value);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletRespe resp) throws ServletException, IOException {
        super.doPost(req, resp);
        println("doPost……");
    }
}
运行结果:
代码语言:javascript代码运行次数:0运行复制
doGet……
host--------localhost:8080
connection--------keep-alive
upgrade-insecure-requests--------1
user-agent--------Mozilla/5.0 (Windows T 10.0; WOW64) AppleWebKit/57.6 (KHTML, like Gecko) Chrome/6.0.29.12 Safari/57.6
accept--------text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
accept-encoding--------gzip, deflate, br
accept-language--------zh-C,zh;q=0.9
cookie--------__guid=111872281.1266672611192455200.1567215662252.909; _ga=GA1.1.4928765.1567215662; JSESSIOID=22205AFD55EEDA1BC8CD4F807C9707; monitor_count=4

、获取请求体数据

明确:

只有POST请求才有请求体,在请求体中封装了请求参数;

步骤:

第一步:获取流对象;

代码语言:javascript代码运行次数:0运行复制
BufferedReader getReader():获取字符输入流,只能操作字符数据;
ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数据;

第二步:从流对象中拿数据;

代码演示getReader():

代码语言:javascript代码运行次数:0运行复制
package com.zibo.servlet;

import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRespe;
import java.io.BufferedReader;
import java.io.IOException;

@WebServlet("/my")
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletRespe resp) throws ServletException, IOException {
        super.doGet(req, resp);
        println("doGet……");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletRespe resp) throws ServletException, IOException {
        super.doPost(req, resp);
        println("doPost……");
        BufferedReader reader = req.getReader();
        while (true) {
            String s = reader.readLine();
            if(s!=null){
                println(s);
            }else {
                break;
            }
        }
    }
}

代码演示getInputStream():

代码语言:javascript代码运行次数:0运行复制
package com.zibo.servlet;

import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRespe;
import java.io.BufferedReader;
import java.io.IOException;

@WebServlet("/my")
public class MyServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletRespe resp) throws ServletException, IOException {
        super.doGet(req, resp);
        println("doGet……");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletRespe resp) throws ServletException, IOException {
        super.doPost(req, resp);
        println("doPost……");
        ServletInputStream inputStream = req.getInputStream();
        byte[] bytes = new byte[64];
        while (true) {
            int read = inputStream.read(bytes);
            if(read!=-1){
                println(new String(bytes));
            }else {
                break;
            }
        }
    }
}

运行结果:

代码语言:javascript代码运行次数:0运行复制
doPost……
username=%E6%94%BE%E6%9D%BE%E6%94%BE%E6%9D%BE

4、获取请求参数通用方式(重要)

代码语言:javascript代码运行次数:0运行复制
(常用)String getParameter(String var1):根据参数名称获取参数值;
String[] getParameterValues(String var1):根据参数名称获取参数值的数组;
Enumeration<String> getParameterames():返回所有参数名称;
(常用)Map<String, String[]> getParameterMap():获取所有参数的Map集合;
中文乱码问题:

GET方式:Tomcat8已经将中文乱码的问题解决了;

POST方式:加一行代码即可(设置编码)

代码语言:javascript代码运行次数:0运行复制
req.setCharacterEncoding("utf-8");

5、请求转发

一种服务器资源在服务器内部的资源跳转方式;

步骤:

第一步:通过request对象获取请求转发器对象

代码语言:javascript代码运行次数:0运行复制
RequestDispatcher getRequestDispatcher(String path);

path:转发到的资源路径

第二步:使用RequestDispatcher对象进行转发

代码语言:javascript代码运行次数:0运行复制
void forward(ServletRequest var1, ServletRespe var2)
特点:

①浏览器地址栏路径不发生变化;

②只能转发到服务器内部资源;

③转发是一次请求;

6、共享数据

域对象:

一个有作用范围的对象,可以在范围内共享数据;

request域:

代表一次请求的范围,一般用于请求转发的多个资源中共享数据;

方法:

①存储数据;

代码语言:javascript代码运行次数:0运行复制
void setAttribute(String name, Object obj);

②通过键获取值;

代码语言:javascript代码运行次数:0运行复制
Object getAttribute(String name);

③通过键移除键值对;

代码语言:javascript代码运行次数:0运行复制
void removeAttribute(String name);

7、获取ServletContext对象

代码语言:javascript代码运行次数:0运行复制
ServletContext getServletContext();
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent 删除数据学习笔记request对象服务器

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1199736.html

相关标签:无
上传时间: 2025-07-23 16:34:52
留言与评论(共有 18 条评论)
本站网友 毛孔怎么变小
3分钟前 发表
获取请求体数据明确:只有POST请求才有请求体
本站网友 中国医师网
14分钟前 发表
浏览器向服务器发出请求
本站网友 川朴
5分钟前 发表
浏览器向服务器发出请求
本站网友 民营经济
22分钟前 发表
IOException { super.doPost(req
本站网友 肛瘘症状
23分钟前 发表
deflate
本站网友 腺肌症
18分钟前 发表
*/*;q=0.8 accept-encoding--------gzip
本站网友 唐宫
7分钟前 发表
获取请求数据1
本站网友 哈尔滨二手房出售信息
11分钟前 发表
分享自作者个人站点/博客
本站网友 新楼
1分钟前 发表
8080 connection--------keep-alive upgrade-insecure-requests--------1 user-agent--------Mozilla/5.0 (Windows T 10.0; WOW64) AppleWebKit/57.6 (KHTML
本站网友 安阳吧
0秒前 发表
like Gecko) Chrome/6.0.29.12 Safari/57.6 accept--------text/html
本站网友 芋贵人
6分钟前 发表
获取ServletContext对象代码语言:javascript代码运行次数:0运行复制ServletContext getServletContext();本文参与 腾讯云自媒体同步曝光计划
本站网友 合肥114
25分钟前 发表
resp); println("doPost……"); ServletInputStream inputStream = req.getInputStream(); byte[] bytes = new byte[64]; while (true) { int read = inputStream.read(bytes); if(read!=-1){ println(new String(bytes)); }else { break; } } } }运行结果:代码语言:javascript代码运行次数:0运行复制doPost…… username=%E6%94%BE%E6%9D%BE%E6%94%BE%E6%9D%BE4
本站网友 highing
25分钟前 发表
HttpServletRespe resp) throws ServletException
本站网友 成都欧亚男科医院
20分钟前 发表
继承体系二
本站网友 广州无痛人流医院
8分钟前 发表
request对象用户获取请求消息数据
本站网友 基层工作
22分钟前 发表
resp); println("doGet……"); } @Override protected void doPost(HttpServletRequest req
本站网友 磐石吧
22分钟前 发表
如有侵权请联系 cloudcommunity@tencent 删除前往查看数据学习笔记request对象服务器