E01Web学习笔记
E01Web学习笔记
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组装电脑配置单推荐报价格
上一篇:【SQL必知必会】001
下一篇:E012Web学习笔记
推荐阅读
留言与评论(共有 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对象服务器 |