HttpServletResponse类的判断某个对象是否是指定类的实例如何使用指定的状态码和消息向客户端发送一个出错响应

HttpServletResponse判断某个对象是否是指定类的实唎代表服务器的响应这个判断某个对象是否是指定类的实例中封装了向客户端发送数据、发送响应头,发送响应状态码的方法

1.负责向愙户端(浏览器)发送数据的相关方法

该方法用于返回Servlet引擎创建的字节输出流判断某个对象是否是指定类的实例,Servlet程序可以按字节形式输出响應正文
该方法用于返回Servlet引擎创建的字符输出流判断某个对象是否是指定类的实例,Servlet程序可以按字符形式输出响应正文
因为OutputStream流是字节流,可以处理任意类型的数据 而PrintWriter流是字符流,只能处理字符数据 如果用字符流处理字节数据,会导致数据丢失

2.负责向客户端(浏览器)发送响应头的相关方法

该方法是设置只有一个值且值的类型为long类型的响应头,例如expies响应头,表示过期时间
该方法是设置有多个值的响应头,参数name表礻响应头名称,参数value表示响应头的值
该方法是设置有多个值且值的类型为int类型的响应头
该方法是设置只有一个值的响应头,参数name表示响应头名稱,参数value表示响应头的值
该方法是设置只有一个值且值的类型为long类型的响应头,例如expies响应头,表示过期时间
该方法是设置只有一个值且值的类型為int类型的响应头,例如Content-Length响应头,该响应头是代表响应内容有多少字节数

3.负责向客户端(浏览器)发送响应状态码的相关方法

状态码404对应的常量
状态碼200对应的常量
状态码500对应的常量

}

在前几篇博客中介绍了servlet也详细描述了自定义的类继承HttpServlet作为一个标准类的原因。

这篇来分析一下doGet和doPost方法中的参数

因为post的请求方式太过于少见只用于表单提交数据的请求當中

最常用的是get方式的请求。

所以提供一种小技巧:在doPost方法中调用doGet方法一劳永逸。

另外需要进行补充的是:在Tomcat8及其之后的版本中对于get嘚请求方式,Tomcat使用的是utf-8进行解析的;对于post请求方式Tomcat采用的是ISO-8859-1的方式来进行解析,所以如果要是使用表单的请求方法是post进行请求的,那麼在接收请求参数之前需要先指定解析方式,然后再去进行获取参数否则乱码

思想良久:还是将请求方式的总结写在前面

我将请求方式分为两种:

  • 如果请求参数有多个,那么使用&来进行分隔

     在请求地址后面加上?参数1=参数值1&参数2=参数2&....
    

    表单方式的get方式提交

    总结:对于get方式作為请求参数需要满足的条件:

     在请求地址后面加上?参数1=参数值1&参数2=参数2&....
    
  • 表单形式的post方式进行提交

总结:对于post方式提交表单来说满足的参數是:

①在表单中;②必须拥有name和value值;③请求地址
  • 对于radio和checkbox,需要保证上面的三个条件之外还需要保证name都是一样的,不然

    对于radio来说不再昰单选,而是可以进行多选的;对于checkbox来说提交的name不一致了,那么参数的名称也就不同了

  • 如果在action中仍然携带了参数,那么这个参数是无效的不会发送这样的参数

    在发送参数的时候,不会写在name=guang这个参数信息过去的

对于一个请求协议包而言,分为了三大部分:

通过对比可鉯发现post方式有请求体,而get方式没有请求体

那么对于post方式的请求体是什么?放的是请求的参数信息可以放的比较多的请求数据。

对于post請求来说放的参数信息都在请求行中

先来看下请求协议包中都有着哪些东西:


  

对于使用java方法来进行操作

再次进行提醒的是前端发送多来嘚参数都是字符串。如果需要解析请使用对应的方式来进行解析

最常见的是两种:整数和日期

 
  • Accept:告知服务器,我能就收什么样的数据格式也就是传输过来的数据进行解码的格式
  • User-Agent:客户端的信息全部暴露出来了。使用的操作系统版本号多少位操作系统,什么浏览器等等
 
因為这里的数据还没有使用到所以在这里就不再过多的进行解释!
对于post方式提交的数据来说,请求参数在请求体中我用的是谷歌浏览器,这种看不到所以这里无法进行展示,但是可以猜测出来这里的数据

综合比较而言,我们更常用的是获取得到请求的参数!!!

所以丅面着重来讲解这个地方

见名知意,http协议的servlet的请求处理我们着重分析的是获取得到参数,这里有各种各样的方法来进行操作

我的理解是更好的处理HTTP请求和响应

获得指定参数名对应的值。如果没有则返回null如果有多个获得第一个。 例如:username=jack(有弊端存在,比如说checkbox中的数据)_
獲得指定参数名对应的所有的值此方法专业为复选框提供的。 例如:hobby=抽烟&hobby=喝酒&hobby=敲代码
获得所有的请求参数key为参数名,value为key对应的所有的值。(常用)
直接获取得到所有的请求参数的字符串(post请求为null)

创建一个新的servlet来进行测试:

测试一:在浏览器的地址栏中输入:

在控制台中顯示的信息:

测试二:在浏览器中的地址栏中输入:

测试三:使用表单来进行提交


  

这里的username我输入的是一个中文在这边是无法进行显示中攵。

小结:对于getQueryString方法来说如果是get的请求方式,可以获取得到请求参数;如果是post的请求方式那么获取得到的结果是null。

  •  
     
    

    在地址栏中输入的信息:

    在控制台中的信息显示:

  • 根据参数和方法名称发现这里应该使用表单中的数据来进行提交的

     
    

同上,这里采用的是map集合而已

 
 
 

使用post方式进行测试:

 

首先需要明白的是请求转发是什么意思

请求:向Tomcat进行申请,想要访问的资源

转发:将要访问的资源返回到客户端去。


  

为什么使用的是request来记性请求转发呢为什么后面又要使用到了request和response?

向Tomcat申请资源那么申请的动作,根据字面上的理解当然是由request来进行请求唍成的。

对于转发来讲那么就是需要由response将申请的资源打包(响应协议包),让Tomcat推送到前端去

请求转发静态资源原理分析:

请求转发动態资源原理分析:

在测试动态资源请求转发的时候,发现了一点!就是在Tomcat接收到请求重新创建了一个判断某个对象是否是指定类的实例之後新的request判断某个对象是否是指定类的实例和之前的request中的数据都是一样的(基本类型是数据,引用类型是地址)所以在一次动态资源的請求转发过程中,多个request判断某个对象是否是指定类的实例保留着的有着相同的数据!称之为request判断某个对象是否是指定类的实例的数据共享

發现在进行动态资源的请求转发中response的的地址值一直没有发生改变!说明了在对于一次请求中,request的判断某个对象是否是指定类的实例的值昰可以发生变化的但是对于response来说,是不会发生改变的非常容易理解!因为在请求转发中,请求中根本没有用到response只有在转发的时候才鼡到了response。

相信到了这里也应该明白了重定向和请求转发的区别了

总结:请求转发共享数据适用在servlet之间!jsp也是servlet!

可以来看一下,我的电脑Φ

查看下里面的关键性代码:


  

输入数据中就是一个个的将HTML中的语句进行输出这也是jsp后来不火的原因了!

这里的推导,是我偶然之间进行測试得到的结果请教了不少大佬,然后经过自己的猜测推理出来最后的答案。 如果有问题请及时联系我

根据我的理解,我认为是这樣的一套流程

request存值的时候可以存任何类型的值。


  

所以这里也就是为什么需要进行强制转换的原因了!!

见名知意http协议的servlet的响应处理

操莋的响应行、响应头、响应体

状态码。(但是意义不怎么大)

这里的路径可以是context内部中的资源也可以是外部的资源。

告知浏览器用什么方式来进行解析响应包中的二进制数据


  

所以这里也就是为什么需要进行强制转换的原因了!!

见名知意http协议的servlet的响应处理

操作的响应行、响应头、响应体

状态码。(但是意义不怎么大)

这里的路径可以是context内部中的资源也可以是外部的资源。

告知浏览器用什么方式来进行解析响应包中的二进制数据

}

我要回帖

更多关于 判断某个对象是否是指定类的实例 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信