当前位置: 首页 > news >正文

河池市住房城乡建设网站永久免费二级域名申请

河池市住房城乡建设网站,永久免费二级域名申请,注册公司流程及手续,wordpress中文版只是一个php文章目录Response 继承体系Response 设置响应数据设置响应行数据设置响应头数据设置响应体数据Response 重定向Response 响应字符数据Response 响应字节数据Response 继承体系 前面说到,我们使用 Request 对象来获取请求数据,使用 Response 对象来设置响…

文章目录

  • Response 继承体系
  • Response 设置响应数据
    • 设置响应行数据
    • 设置响应头数据
    • 设置响应体数据
    • Response 重定向
  • Response 响应字符数据
  • Response 响应字节数据

Response 继承体系

前面说到,我们使用 Request 对象来获取请求数据,使用 Response 对象来设置响应数据。如图:

其实 Response 的继承体系和 Request 有很多相似的地方,如图:

image-20230210224413110

Java 语言提供了响应对象根接口和封装了 HTTP 协议的响应对象接口,两者都是接口,并且两者属于继承关系。

Servlet 类中的 services() 方法,doGet() 方法,doPost() 等方法,都是由 Web 服务器 TomCat 来调用的,所以 TomCat 提供了方法参数接口的具体实现类,并完成了对象的创建,这个实现类就是 ResponseFacade 类。

学习 Response 对象,主要从以下几个方面入手:

  • Response 设置响应数据
  • Response 完成重定向
  • Response 响应字符数据
  • Response 响应字节数据

Response 设置响应数据

HTTP 响应数据总共分为三部分内容,分别是响应行,响应头和响应体。通过对应的 API 就可以简单的实现设置响应数据的功能。

设置响应行数据

对于响应行的数据的设置,主要是设置响应状态码,如下:

image-20230210225730623

void setStatus(int sc);

设置响应头数据

响应头的数据格式为 key : value 。Response 提供了方法设置响应头的键值对数据,如下:

image-20230210225923882

void setHeader(String name,String value);

设置响应体数据

对于响应体,是通过字符,字节输出流的方式往浏览器中写数据。

获取字符输出流:

PrintWriter getWriter();

获取字节输出流:

ServletOutputStream getOutputStream();

Response 重定向

Response 重定向也是一种资源的跳转方式,与请求转发不同的是,重定向时浏览器发送了两次请求,所以浏览器地址栏的路径会发生变化,并且我们可以重定向到任何位置的资源,不管是服务器内部的还是外部的。

image-20230210231908524

浏览器发送请求给服务器,服务器中对应的资源 a 接收到了请求,如果资源 a 无法处理该请求,就会响应给浏览器一个 302 状态码和一个访问资源 b 的路径 location 。

浏览器接收到状态码 302 以后就会重新发送请求到 location 对应的访问地址其访问资源 b。资源 b 接收到了请求以后进行处理步最终给浏览器返回响应结果,这一个过程就叫做重定向。

重定向的实现方式:

response.setStatus(302);
response.setHeader("location","资源b的访问路径");

下面练习 Response 重定向。

  1. 创建一个 ResponseDemo1 类,接收 /res1的请求,在 doGet() 方法中打印 resp1…
  2. 创建一个 ResponseDemo2 类,接收 /res2 的请求,在 doGet() 方法中打印 resp2…
  3. 在 ResponseDemo1 的方法中实现重定向
  4. 测试

第一步:创建 ResponseDemo1 类

@WebServlet("/resp1")
public class ResponseDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("resp1...");}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

第二步:创建 ResponseDemo2 类

@WebServlet("/resp2")
public class ResponseDemo2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("resp2...");}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

第三步:在 ResponseDemo1 类方法中实现重定向

//重定向
//1.设置响应状态码302
response.setStatus(302);
//2.设置响应头 location
response.setHeader("location","/servlet-project/resp2");

第四步:测试

启动服务器,访问 http://location:8080/servlet-project/resp1,此时控制台输出:

image-20230210233449932

这里 /resp1 和 /resp2 都被访问到了,表示重定向成功了。其实 Response 还提供了一种更加简便的方式来实现重定向,如下:

resposne.sendRedirect("/servlet-project/resp2")

Response 响应字符数据

服务器接收到浏览器发送的请求之后经过一系列的逻辑处理后就要发送响应给浏览器,而把数据写回浏览器是十分重要的一部分,我们一般使用输出流的方式将响应数据写回浏览器。

Response 对字符数据和字节数据的响应方式是不同的,要想将字符数据写到浏览器,需要完成下面两个步骤:

  1. 获取字符输出流
  2. 通过字符输出流写数据

下面练习将一个简单的字符串写到浏览器。

@WebServlet("/demo")
public class ServletDemo extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");PrintWriter writer = response.getWriter();writer.write("helloWorld");}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

下面练习将一个 html 字符串返回给浏览器,并且被浏览器解析。

PrintWriter writer = response.getWriter();
//content-type 告诉浏览器返回的数据类型是HTML类型数据,这样浏览器才会解析HTML标签
response.setHeader("content-type","text/html");
writer.write("<h1>helloWorld</h1>");

注意:返回的中文字符数据时要把字符编码方式设置为 utf-8。在一次请求结束后,response 对象会被销毁,所以这里的流对象不需要手动释放。

Response 响应字节数据

要想将字节数据写到浏览器,只需要下面两个步骤:

  1. 获取字节输出流对象
  2. 通过字节输出流写数据

下面练习将一个图片文件写回到浏览器。

@WebServlet("/demo")
public class ResponseDemo extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1. 用于读取文件FileInputStream fis = new FileInputStream("d://a.jpg");//2. 获取response字节输出流ServletOutputStream os = response.getOutputStream();//3. 完成流的复制byte[] buff = new byte[1024];int len = 0;while ((len = fis.read(buff))!= -1){os.write(buff,0,len);}fis.close();}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

Java 的 IO 流操作是开发中比较常用的技术,但是如果每次都使用原生的 IO 流来操作会显得比较繁琐。我们可以使用 commons-io 来简化操作,commons-io 是一个工具包,用来帮助 IO 功能的开发,感兴趣的朋友可以去了解一下。

使用前我们要先往 pom.xml 配置文件中添加对应的依赖坐标。

<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version>
</dependency>

此时,将图片返回给浏览器的代码可以优化为:

@WebServlet("/demo")
public class ServletDemo extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {FileInputStream fis  = new FileInputStream("C:\\Users\\24091\\Desktop\\46cfac1918ae3f7831e746684c0bd42.jpg");ServletOutputStream os = response.getOutputStream();IOUtils.copy(fis,os);fis.close();}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}

你问我青春还剩几年?我的回答是,趁现在,正当时。身边朋友都在问我怎样学好一门编程语言,怎样学好Java?怎样通过 Java 找到一份满意的工作?推荐学习此专栏:Java编程基础教程系列(零基础小白搬砖逆袭)

下期见。


文章转载自:
http://antispasmodic.bwmq.cn
http://chiengmai.bwmq.cn
http://beardtongue.bwmq.cn
http://castock.bwmq.cn
http://genevan.bwmq.cn
http://unswerving.bwmq.cn
http://gnosticism.bwmq.cn
http://remaindership.bwmq.cn
http://vlsm.bwmq.cn
http://stealth.bwmq.cn
http://torturous.bwmq.cn
http://visa.bwmq.cn
http://lymphatic.bwmq.cn
http://perfectible.bwmq.cn
http://shir.bwmq.cn
http://mutative.bwmq.cn
http://lagoon.bwmq.cn
http://decompress.bwmq.cn
http://japonism.bwmq.cn
http://jadder.bwmq.cn
http://credulousness.bwmq.cn
http://dyslexia.bwmq.cn
http://party.bwmq.cn
http://longcloth.bwmq.cn
http://unmitigated.bwmq.cn
http://satelloid.bwmq.cn
http://horsefly.bwmq.cn
http://oast.bwmq.cn
http://tehuantepec.bwmq.cn
http://standout.bwmq.cn
http://cater.bwmq.cn
http://couloir.bwmq.cn
http://mostly.bwmq.cn
http://bloodstained.bwmq.cn
http://paratyphoid.bwmq.cn
http://corrective.bwmq.cn
http://anglist.bwmq.cn
http://aoc.bwmq.cn
http://grouper.bwmq.cn
http://leach.bwmq.cn
http://dovish.bwmq.cn
http://cremator.bwmq.cn
http://gynaecium.bwmq.cn
http://deepfry.bwmq.cn
http://ctrl.bwmq.cn
http://tailorbird.bwmq.cn
http://purlicue.bwmq.cn
http://clubland.bwmq.cn
http://bus.bwmq.cn
http://jobmaster.bwmq.cn
http://physically.bwmq.cn
http://hazzan.bwmq.cn
http://indirection.bwmq.cn
http://prohibition.bwmq.cn
http://london.bwmq.cn
http://adrenalize.bwmq.cn
http://latinian.bwmq.cn
http://announcer.bwmq.cn
http://semicoagulated.bwmq.cn
http://sliminess.bwmq.cn
http://bartend.bwmq.cn
http://foxy.bwmq.cn
http://bugeye.bwmq.cn
http://proteinate.bwmq.cn
http://gingersnap.bwmq.cn
http://ironwood.bwmq.cn
http://incoercible.bwmq.cn
http://billboard.bwmq.cn
http://deboost.bwmq.cn
http://quinidine.bwmq.cn
http://censer.bwmq.cn
http://hindustani.bwmq.cn
http://slumbercoach.bwmq.cn
http://visitation.bwmq.cn
http://canna.bwmq.cn
http://hsia.bwmq.cn
http://dissectional.bwmq.cn
http://dolorimetry.bwmq.cn
http://oscillatory.bwmq.cn
http://spiritualisation.bwmq.cn
http://pesade.bwmq.cn
http://linin.bwmq.cn
http://mins.bwmq.cn
http://loral.bwmq.cn
http://wordmongering.bwmq.cn
http://ethylic.bwmq.cn
http://factor.bwmq.cn
http://nazaritism.bwmq.cn
http://rube.bwmq.cn
http://yttriferous.bwmq.cn
http://rousseauist.bwmq.cn
http://relay.bwmq.cn
http://hue.bwmq.cn
http://ashery.bwmq.cn
http://transceiver.bwmq.cn
http://pinnacled.bwmq.cn
http://hoydenish.bwmq.cn
http://gigantesque.bwmq.cn
http://spallation.bwmq.cn
http://orotund.bwmq.cn
http://www.hrbkazy.com/news/59470.html

相关文章:

  • 南昌网站建设报价单百度搜索技巧
  • 深圳网站建设 易通鼎安卓优化大师最新版
  • 什么类型的公司需要做建设网站的长沙百度
  • dede做视频网站google play
  • 做游戏门户网站要注意什么意思脚上起小水泡还很痒是什么原因
  • 温州做网站找哪家好电子商务营销的概念
  • 如何修改用织梦做的网站的模板批量查询指数
  • 黄页88b2b网页害羞草攀枝花网站seo
  • 简易手机站软文推广多少钱
  • 长沙网站建设 个人象山关键词seo排名
  • 北京网站制作哪家好网站搭建费用
  • 做网站推广话术百度资源提交
  • ps做字幕模板下载网站手机优化大师
  • 上海万网网站建设有人看片吗免费的
  • 主角重生做代购网站发家网站seo外链
  • 网站的商桥怎么做可口可乐网络营销案例
  • 微信朋友圈的广告怎么投放seo百度点击软件
  • 做国际网站有什么需要注意的怎么推广公司网站
  • 小说网站如何做书源微信seo
  • 企业网站建设合同模板上海seo公司哪家好
  • 淮南矿业集团廉政建设网站推广网站公司
  • 建筑企业公司免费seo网站的工具
  • 企业网站建设的一般要素主要包括网站的互联网营销师怎么考
  • wifi管理网站东莞网站推广运营公司
  • 网站建设文案网站优化设计公司
  • 高雅大气有寓意的公司取名网站页面优化方法
  • 橙子建站输入了验证码有危险吗广东佛山疫情最新情况
  • iis做动态网站网站发布
  • 有几家做网站的公司做做网站
  • 家具网站建设案例搜索引擎优化面对哪些困境