zoukankan      html  css  js  c++  java
  • 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)常用方法

          

        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");),当客户端接收到响应后, 立刻、马上、自动根据服务器 给的地址进行请求的发送第二个请求,服务器接收请求并作出响应,重定向完成。从描述中可以看出重定向当中有两个请求存在,并且属于客户端行为

       实现方式 

       请求转发和重定向比较:

        

    四、Cookie

      1、Cookie是浏览器提供的技术,客户端进行处理的数据放在本地,不需要通过网络进行传输,提高网页处理的效率

      2、Cookie的格式:键值对用“=”链接,多个键值对之间用“;”隔开

      3、Cookie的创建和发送

        

        如果再次创建的Cookie的name值一样,会覆盖前面创建的Cookie

      4、Cookie的获取

        

          

      5、Cookie到期时间的设定

         

           maxAge取值:单位 秒

            负整数:表示关闭浏览器cookie失效,默认

            正整数:表示cookie在浏览器中存活指定秒数

            0:表示删除cookie,即刻删除

      6、Cookie的注意

        1)Cookie不能跨浏览器

        2)Cookie不能存储中文

          如果一定要存中文,需要编码-URLEncoder.encode();  读取解码-URLDecoder.decode();

          否则会报错

        3)Cookie的覆盖

          ·如果服务器端发送name属性值相同的 Cookie 那么会覆盖原有的 Cookie。

          ·除了value和maxAge的值被改变的情况下回覆盖,其他的(path、domain)都会重新创建一个cookie对象

      

      7、Cookie的路径

        setPath("/"):只要在当前服务器下,所有的项目都可以获取到该cookie

        如果path设定的是指定路径,必须要求访问的路径包含该path才能获取到path设定指定路径时,需要加上站点名 . /站点名/路径

  • 相关阅读:
    [考试反思]0511省选模拟93:平衡
    [考试反思]0509省选模拟92:警示
    [考试反思]0508省选模拟91:小雨
    [考试反思]0507省选模拟90:信任
    [考试反思]0506省选模拟89:无事
    [专题总结]2-sat及题目&题解(3/5 complete)
    [考试反思]0505省选模拟88:滑稽
    [考试反思]0504省选模拟87:开花
    [考试反思]0502省选模拟86:恐惧
    [考试反思]0501省选模拟85:低落
  • 原文地址:https://www.cnblogs.com/dhome/p/9551520.html
Copyright © 2011-2022 走看看