HttpServletRequest(request的一些API)

一、request的运行流程

首先,自己写一个web工程,也就是建一个工程;当把该web工程发布到Tomcat服务器当中,可以让外界访问,这就成了一个web应用。
在客户端输入一个网站,是web应用资源的地址URL,该请求会在浏览器客户端自动生成一个http请求,然后客户端会将相应的请求发送到相应的服务器内部,服务器首先由Tomcat引擎接收该请求,然后Tomcat引擎会分析http协议上的请求行,该请求行上面有请求方式,根据请求方式是get还是post从而确定调用是doGet方法还是doPost方法,请求行上面有地址,Tomcat会帮你找该地址在的Tomcat服务器内部的某一个web应用(Tomcat容器中web-app下可以存放多个web应用),找到对应的web应用之后,开始创建对象,默认第一次访问创建对象,默认调用servlet方法,重写servlet方法之后会调用doGet方法或者doPost方法,当调用doGet方法的时候,需要两个参数。一个是request,一个是response,这两个参数,谁去调用改doGet方法管提供这个俩个参数,doGet方法由Tomcat引擎负责调用,它在调用的时候,帮你创建两个对象,一个是request代表请求,一个是response代表响应。其中request内部封装http请求的所有内容;response是空的,因为它代表响应,response有自己的缓冲区,可以向缓冲区里面添加内容,可以添加响应行、响应头、响应体(分别有对应的方法),添加完成之后,Tomcat引擎会获取缓冲区内容,会组装成http响应的东西,然后发送到客户端,通过装包也可看到,客户端获得这些内容会自动根据响应进行解析,最终在页面上显示响应体的内容。

二、ServletContext域和Request域的生命周期

ServletContext
创建:服务器启动
销毁:服务器关闭
域的作用范围:整个web应用

Request
创建: 访问时创建request对象
销毁:响应结束request销毁
(生命周期为一瞬间)
域的作用范围:一次请求中

三、转发和重定向的区别

1).重定向两次请求 转发一次请求
2).重定向的地址栏的地址变化 转发的地址不变
3).重定向可以访问外部网站 转发不能访问外部网站,只能访问内部资源
4).转发的性能要优于重定向

四、客户端地址与服务器端地址的区别

客户端地址:是客户端去访问服务器的地址,服务器外部的地址
客户端地址必须写上web应用的名称,代表要去Tomcat容器中去找哪个web应用
例如:
直接输入地址
重定向
也就是,只要是服务器外部跳出服务器,然后再去访问服务器内部的资源,豆角客户端地址

服务器端地址:是服务器内部资源跳转访问的地址
不需要写web应用的名称
例如:
转发

总结:

request获得请求行的内容

获得请求方式:request.getMethod();
获得请求资源:request.getRequestURI();
request.getRequestURL();这个长,协议、主机名、端口都有
动态获得web应用的名称:request.getContextPath();
获得客户机的一些信息:request.getRemoteAddr();

request获得请求头的内容

request.getHeader(name);

request获得请求体(请求参数)

request.getParameter(name);//返回值为String
request.getParameterMap();//将所有的数据以Map形式封装,返回值为Map<String ,String[]>
request.getParameterValues(name);//返回值为String[]字符串数组

注意: 客户端发送的参数,到服务器端获得后都是字符串
获得中文乱码 的解决:

post提交: request.setCharacterEncoding("UTF-8");
get提交: parameter = new String(parameter.getBytes("iso8859-1"),"UTF-8");//先用iso8859-1默认编码再用UTF-8解码

request转发和域

转发:request.getRequestDispather(转发的地址,服务器内部的地址,不需要web应用名称).forward(request, response);
例如:request.getRequestDispatcher("/login.jsp").forward(request, response);
存:request.setAttribute(name,value);
取:request.getAttribute(name,value);//取的时候需要强转一下

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

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

相关文章

DCI:James O. Coplien和Trygve Reenskau提出的新架构方法

http://www.infoq.com/cn/news/2009/05/dci-coplien-reenskau 转载于:https://www.cnblogs.com/yelinpalace/archive/2009/06/13/1502573.html

Java ObjectStreamField getOffset()方法与示例

ObjectStreamField类的getOffset()方法 (ObjectStreamField Class getOffset() method) getOffset() method is available in java.io package. getOffset()方法在java.io包中可用。 getOffset() method is used to get the offset of this ObjectStreamField field. getOffse…

Mac VSCode配置C语言环境(可以调试)

Mac VSCode配置C语言环境c_cpp_properties.jsontasks.jsonlaunch.json新建一个文件夹&#xff0c;用vscode&#xff0c;然后再新建一个test.c文件。 #include <stdio.h>int main(void) {int a1,b1;int cab;printf("%d\n",c);return 0; }这篇文章说怎么配置c_c…

XmlPullParserException

今天在android的开发中约到一个问题 使用Ksoap2 访问 WebService 抛出 XmlPullParserException 异常。 在网上淘了一下这个问题 http://www.eoeandroid.com/thread-70527-1-1.html 不能解决我的问题&#xff0c;求解转载于:https://www.cnblogs.com/pengqinping/archive/2012/0…

vShpere Client在win 7 RC下和2008下 无法正常连接esx主机之解决办法

vShpere Client在win 7 RC下和2008下 无法正常连接esx主机之解决办法 在win7下和2008下打开client后连接esx主机会出现2个错误提示, 第一个是 第二个是 然后就连接失败了,开始以为是CC的esx主机安装有问题,后来找了找,借助了强大google工具,终于找到解决办法.解决办法如下: 1.从…

tooctalstring_Java Integer类toOctalString()方法的示例

tooctalstring整数类toOctalString()方法 (Integer class toOctalString() method) toOctalString() method is available in java.lang package. toOctalString()方法在java.lang包中可用。 toOctalString() method is used to represent an octal string of the given parame…

localhost与127.0.0.1之间的关系更改

其实localhost的默认IP地址为127.0.0.1&#xff0c;因为这是一种映射关系。 更改步骤如下&#xff1a; C:\Windows\System32\drivers\etc 下的hosts 打开hosts可以看到 更改即可

基于Hash表的排序--C语言

我们知道&#xff0c;C语言里面是没有hash表的&#xff0c;但是我们可以用一个结构体表示&#xff0c;对结构体排序&#xff0c;我们可以用qsort排序。 下面我们用一个LeedCode上面的一道题目讲解。 347. 前 K 个高频元素 这个题目是让我们求解前k个高频元素&#xff0c;求解思…

ORACLE10g R2及PATH官方下载地址

ORACLE10g R2及PATH官方下载地址 Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Microsoft Windows (32-bit)http://download.oracle.com/otn/nt/oracle10g/10201/10201_database_win32.zip http://download.oracle.com/otn/nt/oracle10g/102…

[网摘]Javascript中最常用的55个经典技巧

1. οncοntextmenu"window.event.returnValuefalse" 将彻底屏蔽鼠标右键<table border οncοntextmenureturn(false)><td>no</table> 可用于Table 2. <body onselectstart"return false"> 取消选取、防止复制 3. οnpaste"…

Java集合unmodifiableMap()方法及示例

集合类unmodifiableMap()方法 (Collections Class unmodifiableMap() method) unmodifiableMap() method is available in java.util package. unmodifiableMap()方法在java.util包中可用。 unmodifiableMap() method is used to get a non-modifiable view of the given Map (…

Linux内核设计与实现---内核同步方法

内核同步方法1 原子操作原子整数操作原子性与顺序性的比较原子位操作2 自旋锁自旋锁是不可递归的其他针对自旋锁的操作自旋锁和下半部3 读-写自旋锁4 信号量创建和初始化信号量使用信号量5 读-写信号量6 自旋锁和信号量7 完成变量8 互斥锁互斥锁API9 禁止抢占10 顺序和屏障1 原…

单击浏览器右上角的X弹出提示窗口

单击浏览器右上角的X弹出提示窗口&#xff0c;简单实现。 <script language"javascript">window.onunload function () { if (event.clientY < 0 && event.clientX> document.body.scrollWidth) { //event.returnValue …

Java DataOutputStream writeChars()方法及示例

DataOutputStream类writeChars()方法 (DataOutputStream Class writeChars() method) writeChars() method is available in java.io package. writeChars()方法在java.io包中可用。 writeChars() method is used to write the given string as a sequence of characters to th…

对c#拆装箱的性能分析(泛型)

c#中&#xff0c;数据类型主要分为2种&#xff0c;分别为值类型和引用类型。把值类型转换为引用类型称为装箱&#xff0c;把引用类型转换为值类型称为拆箱。在c#中&#xff0c;值类型是在堆栈上分配内存的&#xff0c;而引用类型是在堆上分配内存的。装箱的时候&#xff0c;CLR…

UNIX环境高级编程---进程间通信总结

进程间通信1 管道匿名管道命名管道2 消息队列3 信号量POSIX信号量有名信号量无名信号量有名信号量和无名信号量的公共操作4 共享内存5 信号相关函数6 套接字针对 TCP 协议通信的 socket 编程模型针对 UDP 协议通信的 socket 编程模型针对本地进程间通信的 socket 编程模型总结L…

C语言一个小小的问题引起的对指针的探究。。。

C语言一个小小的问题引起的对指针的探究。。。 废话不多说。下面是这个大家认识的一个及其简单的程序&#xff1a; 1 #include <stdio.h>2 void A(int a[])3 {4 printf("%d/t", sizeof(a));5 }6 int main()7 {8 int a[512];9 int *p; 10 …

java 方法 示例_Java集合syncedSet()方法与示例

java 方法 示例集合类syncedSet()方法 (Collections Class synchronizedSet() method) synchronizedSet() method is available in java.util package. 可以在java.util包中使用syncedSet ()方法 。 synchronizedSet() method is used to return the synchronized view of the …

IE的全屏幕显示(javascript)

<SCRIPT LANGUAGE"javascript"> <!-- if (this.name!fullscreen){ window.open(location.href,fullscreen,fullscreen,scrollbars) } // --> </script> 转载于:https://www.cnblogs.com/bangchao/archive/2009/06/26/1511645.html

搜索---广度优先遍历、深度优先遍历、回溯法

参考文章&#xff1a;https://github.com/CyC2018/CS-Notes/blob/master/notes/Leetcode%20%E9%A2%98%E8%A7%A3%20-%20%E6%90%9C%E7%B4%A2.md 广度优先搜索&#xff08;BFS&#xff09; 广度优先搜索是按层来处理顶点的&#xff0c;距离开始点最近的那些顶点首先被访问&#…