码迷,mamicode.com
首页 > Web开发 > 详细

Web常用对象(1)

时间:2018-08-28 23:50:41      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:获取域对象   封装   使用   常用方法   htm   设置   oid   inpu   地址   

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

  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常用对象(1)

标签:获取域对象   封装   使用   常用方法   htm   设置   oid   inpu   地址   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!