JAVAWEB入门之Requset原理

Request

 

1.request和respinse对象的原理

  request和respinse对象是由服务器创建的,我们只是使用他们

request对象是来获取请求消息,response是来设置响应消息

3.request对象的继承体系结构:
  ServletRequest-------接口

继承

HttpServletRequest-------接口(*)

继承

org.apache.catalina.connector.RequestFacade--------一个类,由tomcat编写

 

下面的操作是打开tomcat的源码安装包解压缩,按照这个路径点进去查看API即可

 

 

@WebServlet("*.do")
public class ServletDemo3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("doget..");System.out.println(req);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("dopost...");}
}

HttpServletRequest

 

4.request功能:获取请求消息,看上面那一篇的4个获取内容即可

获取请求行数据

例如:GET/day14/demo1?name=zhangsan HTTP/1.1

  1. 获取请求方式:GET
  2. String getMethdo()
  3. (*)获取虚拟目录:/day_14
  4. String getContextPath()
  5. 获取Servlet路径:/demo1
  6. String getServletPath()
  7. 获取get方式的请求参数:name=zhangsan
  8. String getQueryString()
  9. (*)获取请求URI:/day14/demo1
  10. String getRequestURI()                   /day14/demo1
  11. StringBuffer getRequestURL()        http://localhost/8888/day14/demo1
  12. 获取协议及版本1.1
  13. String getProtocol()
  14. 获取客户机的IP地址
  15. String getRemoteAddr()

获取请求头数据

方法

  1. (*)String getHeader(string name):通过请求头的名称来获取请求头的值

获取请求体数据

  1. 请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数
  2. 步骤:
  3. 获取流对象
  4. BufferdeReader getReader():获取字符输入流,只能来操作字符数据
  5. ServletInputStream getInputStream();获取字节输入流,可以操作所有类型数据
  6. 在文件上传知识点后讲解
  7. 再从流对象中拿数据

5.其他功能

1.获取请求参数通用方式(Post和Get都适用)

  1. String getParameter(String name):根据参数名称获取参数值   username=zhangsan&password=123 
  2. String[] getParameterValues(String name):根据参数名称获取参数值的数组,多用于复选框, hobby=xx&hobby=name
  3. Enumeration<String> getParameterNames():获取所以有请求的参数名称,但是获取的如果是复选框的话,值只会获取到一个,所以我们会有第5点的出现
  4. Map<String,String[]> getParameterMap():获取所有参数的map集合 ,即键值对的集合
  • 这意味着在doGet方法里面也可以直接通过参数调用实现doPost的方法,代码如下

 

中文乱码问题:

  • get方式:tomcat 8 已经将get方式乱码问题解决了,因为他的参数在url中
  • post方式:会乱码,因为他的参数通过的是内部的流来获取参数的值
  • 解决方法:在获取参数前,设置request的编码
       //1.设置流的编码request.setCharacterEncoding("utf-8");

 

 

2.请求转发

只进行一次数据转发

3.共享数据

先存到域中,然后再进行转发

demo9是负责获取数据的

4.获取ServletContext:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 抓包乱码_mysql知识资源收集

收集一下mysql所需的文档&#xff0c;供后面查阅和学习。整理了下&#xff0c;大致需要如下的一些&#xff1a;一.基础知识&#xff0c;包括安装&#xff0c;基础命令使用等基础知识命令行大全&#xff1a;图形大纲&#xff1a;二.mysql库中表对应的作用和字段作用三.mysql配置…

JAVA入门级教学之(数据类型)

目录 JAVA入门级教学之&#xff08;数据类型&#xff09; 1、数据类型的作用是什么&#xff1f; 2、java中的数据类型包括两种&#xff1a; 3、关于基本数据类型&#xff1a; 4、注意&#xff1a;字符串"abc"不属于基本数据类型&#xff0c;属于【引用基本类型】&…

mysql存储过程中as_mysql - 存储过程mySQL语法错误意外“ AS” - 堆栈内存溢出

我正在编写一个存储过程&#xff0c;如下所示我得到的错误是在第3行和第4行&#xff0c;这两个错误是第3行是“意外的发布者标识符”&#xff0c;第4行是“意外的AS(as)”&#xff0c;但我不知道我是怎么得到这些错误或如何解决的他们。 有人可以解释一下为什么我收到这些错误以…

JAVA入门级教学之(char类型)

java程序主要讲解的数据类型之&#xff1a;char类型【占用2个字节】 public class DateTypeTest02 {public static void main(String[] args){//定义一个char类型的变量&#xff0c;起名c&#xff0c;同时赋值字符achar ca;System.out.println(c);//a//一个中文占用2个字节,所…

JAVA入门级教学之(整数型)

关于java语言中的整数型: 数据类型 占用空间大小 默认值 取值范围byte 1 0 【-128-127】 short 2 0 【-32768-32767】 int…

mysql事务编号_Mysql事务

一&#xff1a;mysql事务1.需求从orders表中查询最新的销售订单编号&#xff0c;并使用下一个销售订单编号作为新的销售订单编号。在指定客户的orders表中插入新的销售订单。将新的销售订单项目插入orderdetails表中。从orders表和orderdetails中获取数据以确认更改。如果由于数…

JAVA入门级教学之(浮点型数据类型)

/* 关于浮点型数据类型: float 单精度 【4个字节】 double 双精度 【8个字节&#xff0c;精度较高&#xff0c;默认double】 double的精度太低【相对来说的】&#xff0c;不适合做财务软件 财务涉及到钱的问题&#xff0c;要求精度较高&#xff0c;所以SUN在基础SE类库当中 为…

java try catch 例子_java try catch

try catch机制非常好。那些觉得try catch不行的人&#xff0c;是他们自己的水平有问题&#xff0c;无法理解这种机制。并且这群人写代码不遵守规则&#xff0c;喜欢偷懒&#xff0c;这才造成try catch不好的错觉。详细解释&#xff1a;1.程序要健壮&#xff0c;必须要设计报错机…

JAVA入门级教学之(布尔型数据类型)

/* 关于布尔型数据类型&#xff1a; boolean 在java语言中boolean类型只有两个值&#xff1a;true、false&#xff0c;没有其它值 不像c语言中&#xff0c;0和1可以表示假和真 在底层存储的时候boolean类型占用1个字节&#xff0c;因为实际存储的时候false底层是0,true底层是1…

java 自动生成文档_[原]java开发文档的自动生成方式

对于Java注释我们主要了解三种&#xff1a;// 注释一行/* ...... */ 注释若干行第三种&#xff0c;文档注释&#xff1a;/** ...... */ 注释若干行&#xff0c;并写入 javadoc 文档通常这种注释的多行写法如下&#xff1a;/*** .........* .........*/很多人多忽视了这第三种注…

JAVA入门级教学之(数据转换规则)

/* 关于基本数据之间的互相转换&#xff1a;转换规则 1、八种基本数据类型中**除布尔类型之外**剩下的7种类型之间都可以互相转换2、小容量向大容量转换&#xff0c;称为自动类型转换&#xff0c;容量从小到大排序如下&#xff1a;-byte<short<int<long <float<…

java程序员面试技术_java程序员面试应该具备的一些基本技能

这里列举一些Java程序员面试应该要具备的一些基本技能&#xff0c;仅当参考。1.基本语法包括static、final、transient等关键字的作用&#xff0c;foreach循环的原理等等。越简单的问题越能看出一个人的水平&#xff0c;别人对你技术的考量绝大多数都是以深度优先、广度次之为标…

JAVA入门级教学之(算数运算符)

/*3.运算符 *算数运算符 *关系运算符 *逻辑运算符 *字符串连接运算符 *三元运算符 *赋值类运算符 */ /* 关于java编程中运算符之&#xff1a;算数运算符 求和 - 相减 * 乘积 / 商 % 求余取模 自加1 -- 自减1 注意&#xff1a;一个表达式中如果有多个运算符&#xf…

web api教程Java_WebApi项目创建CURD

WebApi1.创建实体类public class Contact{public string Id { get; set; }public string Name { get; set; }public string Phone { get; set; }public string Email { get; set; }public DateTime LastModified { get; set; }}2.操作实体类接口public interface IContactRepos…

JAVA入门级教学之(关系运算符)

/* 关系运算符&#xff1a;比较的是两个变量保存的值的大小 大于 大于等于 < 小于 < 小于等于 等于 &#xff01; 不等于 是赋值运算符 是关系运算符 关系运算符的运行结果一定是布尔类型&#xff1a;true/false */ public class OperatorTest02 {public static v…

guid java_JAVA实现生成GUID的方法

JAVA实现生成GUID的方法GUID是一个128位长的数字&#xff0c;一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲&#xff0c;如果一台机器每秒产生10000000个GUID&#xff0c;则可以保证(概率意义上)3240年不重复。复制代码 代码…

JAVA入门级教学之(逻辑(布尔)运算符)

/*逻辑(布尔)运算符&#xff1a; & 逻辑与 (两边的算子都是true&#xff0c;结果才是true) | 逻辑或 (两边的算子只要有一个是true&#xff0c;结果就是true) ! 逻辑非 (取反) ^ 逻辑异或(两边的算子只要是不一样的&#xff0c;结果就是reue) && 短路与 ||…

JAVA入门级教学之(赋值运算符)

/* 赋值运算符 字符串连接运算符 三目运算符/三元运算符/条件运算符 关于JAVA中的赋值类运算符&#xff1a; 赋值类运算符包括两种&#xff1a; *基本的赋值运算符 *扩展的赋值运算符 - * / % 1.赋值类的运算符优先级&#xff1a;先执行等…

java xss 默认值_一台 Java 服务器可以跑多少个线程?

原标题&#xff1a;一台 Java 服务器可以跑多少个线程&#xff1f;转自&#xff1a;简书&#xff0c;作者&#xff1a;新栋BOOK一台Java服务器能跑多少个线程&#xff1f;这个问题来自一次线上报警如下图&#xff0c;超过了我们的配置阈值。京东自研UMP监控分析打出jstack文件&…

mysql引擎inndbmmyisam_Mysql中MyISAM引擎和InnoDB引擎的比较

结论如果不清楚自己应该用什么引擎&#xff0c;那么请选择InnoDB&#xff0c;Mysql5.5的版本默认引擎都是InnoDB&#xff0c;早期的Mysql版本默认的引擎是MyISAMMyISAM 和 InnoDB的适用场景MyISAM适合&#xff1a;(1)做很多count 的计算&#xff1b;(2)插入不频繁&#xff0c;查…