服务器响应html用对象,Web常用对象(1)

一、向服务器发起请求的方式

1、地址栏输入(http://ip:port/path)

2、超链接

3、Form表单提交

4、ajax

通过ajax发出的请求属于异步请求,能实现局部刷新的效果,通过JQuery中的ajax(),get(),post(),getJson()等方法都能发出请求。

5、请求转发(在下面会详细介绍)

6、重定向(在下面会详细介绍)

二、HttpServletRequest对象

1、介绍

·主要作用是用来接收客户端发送过来的请求信息,例如请求参数,发送的头信息等。

·service方法的形参接收的是HTTPServletRequest接口的实例化对象,表示该对象主要用在HTTP协议上,是由Tomcat封装好传递过来的

ServletRequest只有一个子接口HTTPServletRequest接口,但为什么不将两个接口合在一起呢?

原因是现在主要用的协议是HTTP协议,如果以后出现新的协议,想支持新的协议,只要继承ServletRequest接口就行了。

2、常用形式

1)常用方法

9eeb6a47421c5634a5760ba1a032b407.png

2)获取请求头

d84ff991414684e60b3899b5b53eba45.png

3)获取客户端请求参数(客户端提交的数据)

f2e3b17ff95f4f0725da8b170057ea43.png

3、请求乱码的解决方式

req.setCharacterEncoding("UTF-8");

这种方法只针对POST有效,必须在接收所有数据前设置

new String(req.getParameter(name).getBytes("ISO-8859"),"UTF-8");

这种方式对任何请求都有效,但Tomcat8起,以后的GET方式请求不会出现乱码,再设置反而会出现乱码。

759b97432bf958d0ee8a439c63669971.png

4、请求转发

请求转发是一种服务器的行为,当客户端请求到达后,服务器进行转发,此时会将请求对象进行保存,地址栏中的URL地址不会改变,

得到响应后,服务器端再将响应发送给客户端,从始至终只有一个请求发出。

50bd0d1df5099d3e99fdb7ad3de1a36f.png

5、Request作为域对象

作用范围只在一次请求中有效,经过请求转发request域的数据依然存在。

request.setAttribute(); 设置域对象的内容

request.getAttribute(); 获取域对象内容

request.removeAttribute(String name); 删除域对象内容

三、HTTPServletResponse对象

1、介绍

HTTPServletResponse主要功能是服务器对客户端的请求进行相应,将Web服务器处理后的结果返回给客户端

2、常用方法

07f848e747cbdc30db54e525af9b0fd5.png

3、刷新和页面自动跳转

response头信息刷新

18b56c5d5b967825c43a65a3914aa3db.png

HTML方式刷新

a0528fa2cc8e509ef0799f6e45dc6aff.png

4、数据响应

getWrite()获取字符流(只能响应回字符)

bfbb40a7ae06459a0870aa6ca10b209d.png

getOutputStream()获取字节流(能响应一切数据)

7045c9b2e01e82f8ae79a46e2c069b1c.png

5、乱码解决

resp.setCharacterEncoding("UTF-8") 服务端解码方式

resp.setHeader("content-type", "text/html;charset=UTF-8"); 客户端解码方式

要保持发送端和接收端一致,所以两种方式要同时使用

可以同时指定服务器和客户端的方式:

resp.setContentType("text/html;charset=utf-8");

6、响应图片

public class Servlet02 extendsHttpServlet{/*** 响应图片*/@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throwsServletException, IOException {//设置图片响应类型

resp.setContentType("image/jpeg");//得到服务器的真实路径

String realPath=req.getServletContext().getRealPath("/");

System.out.println(realPath);//得到图片路径

String filePath=realPath+"s1.jpg";//通过图片路径得到file对象

File file=newFile(filePath);//判断file对象是否存在,并且是一个标准文件

if (file.exists() &&file.isFile()) {//得到输出流

ServletOutputStream out=resp.getOutputStream();//得到输入流

InputStream is=newFileInputStream(file);byte[] buf=new byte[1024];int len=0;while ((len=is.read(buf))!=-1) {

out.write(buf,0,len);

}

is.close();

out.close();

}else{

resp.setContentType("text/html;charset=UTF-8");

resp.getWriter().write("文件不存在");

}

}

}

7、重定向跳转

重定向是一种服务器指导,客户端的行为。客户端发出第一个请求,被服务器接收,经过处理服务器进行响应,与此同时,服务器给客户端一个地址(下次请求的地址 resp.sendRedirect("url");),当客户端接收到响应后, 立刻、马上、自动根据服务器 给的地址进行请求的发送第二个请求,服务器接收请求并作出响应,重定向完成。从描述中可以看出重定向当中有两个请求存在,并且属于客户端行为。

实现方式

75137aa032317a839589f58e667de74b.png

请求转发和重定向比较:

a9e771d3e32863be962c4bf17dbf0d92.png

原文:https://www.cnblogs.com/dhome/p/9551520.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值