Web常用对象
Posted dhome
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web常用对象相关的知识,希望对你有一定的参考价值。
一、向服务器发起请求的方式
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)常用方法
2)获取请求头
3)获取客户端请求参数(客户端提交的数据)
3、请求乱码的解决方式
req.setCharacterEncoding("UTF-8");
这种方法只针对POST有效,必须在接收所有数据前设置
new String(req.getParameter(name).getBytes("ISO-8859"),"UTF-8");
这种方式对任何请求都有效,但Tomcat8起,以后的GET方式请求不会出现乱码,再设置反而会出现乱码。
4、请求转发
请求转发是一种服务器的行为,当客户端请求到达后,服务器进行转发,此时会将请求对象进行保存,地址栏中的URL地址不会改变,
得到响应后,服务器端再将响应发送给客户端,从始至终只有一个请求发出。
5、Request作为域对象
作用范围只在一次请求中有效,经过请求转发request域的数据依然存在。
request.setAttribute(); 设置域对象的内容
request.getAttribute(); 获取域对象内容
request.removeAttribute(String name); 删除域对象内容
三、HTTPServletResponse对象
1、介绍
HTTPServletResponse主要功能是服务器对客户端的请求进行相应,将Web服务器处理后的结果返回给客户端
2、常用方法
3、刷新和页面自动跳转
response头信息刷新
html方式刷新
4、数据响应
getWrite()获取字符流(只能响应回字符)
getOutputStream()获取字节流(能响应一切数据)
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 extends HttpServlet{ /** * 响应图片 */ @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //设置图片响应类型 resp.setContentType("image/jpeg"); //得到服务器的真实路径 String realPath=req.getServletContext().getRealPath("/"); System.out.println(realPath); //得到图片路径 String filePath=realPath+"s1.jpg"; //通过图片路径得到file对象 File file=new File(filePath); //判断file对象是否存在,并且是一个标准文件 if (file.exists() && file.isFile()) { //得到输出流 ServletOutputStream out=resp.getOutputStream(); //得到输入流 InputStream is=new FileInputStream(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");),当客户端接收到响应后, 立刻、马上、自动根据服务器 给的地址进行请求的发送第二个请求,服务器接收请求并作出响应,重定向完成。从描述中可以看出重定向当中有两个请求存在,并且属于客户端行为。
实现方式
请求转发和重定向比较:
以上是关于Web常用对象的主要内容,如果未能解决你的问题,请参考以下文章