Servlet学习笔记

  • doGet和doPost方法:

  get方法就象你在网页的地址栏里看到的一堆乱码,也就是url后面有参数 
       post就是用表单传过去的,就好象把数据都打成包发过去一样 
       如果不知道用的什么方法,你可以在servlet里把功能都写到一起 
       然后在一个方法里调用另一个方法就可以了 
       比如 
       public void doPost(HttpServletRequest request,HttpServletResponse) 
       throws ServletException,IOException 
          { 
            doGet(request,response); 
          } 

  • OutputStream流输出中文:3步

         1. OutputStream out = response.getOutputStream();    //设置响应头控制浏览器以UTF-8显示数据

         2.  response.setHeader(.......);

           3.out.write(data.getBytes("UTF-8"));

  • PrintWriter流输出中文:4步

         1.response.setCharacterEncoding("UTF-8");  //设置字符以UTF-8编码输出到客户端浏览器

         2.response.setHeader("content-type","text/html;charset=UTF-8");   //设置响应头控制浏览器以UTF-8显示数据

         3.PrintWriter out = response.getWriter();

         out.write(data);

(当需要向浏览器输出字符数据时,使用PrintWriter比较方便,省去了将字符转换成字节数组那一步。)

  • Servlet下载文件功能
//1.获取要下载的文件的绝对路径
        String realPath = this.getServletContext().getRealPath("/download/1.JPG");
        //2.获取要下载的文件名
        String fileName = realPath.substring(realPath.lastIndexOf("\\")+1);
        //3.设置content-disposition响应头控制浏览器以下载的形式打开文件
        response.setHeader("content-disposition", "attachment;filename="+fileName);
        //4.获取要下载的文件输入流
        InputStream in = new FileInputStream(realPath);
        int len = 0;
        //5.创建数据缓冲区
        byte[] buffer = new byte[1024];
        //6.通过response对象获取OutputStream流
        OutputStream out = response.getOutputStream();
        //7.将FileInputStream流写入到buffer缓冲区
        while ((len = in.read(buffer)) > 0) {
        //8.使用OutputStream将缓冲区的数据输出到客户端浏览器
            out.write(buffer,0,len);
        }
        in.close();

 

编写文件下载功能时用OutputStream流,因为OutputStream流为字节流,可以处理任意类型的数据,而PrintWriter流是字符流,只能处理字符数据。

Servlet设置响应头控制浏览器不缓存图片数据

response.setDateHeader("expries",-1);

response.setHeader("Cache-Control","no-cache");

response.setHeader("Prama","no-cache");

 

${pageContext.request.contextPath}的效果等同于request.getContextPath(),两者获取到的都是"/项目名称"

WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。
  ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。
  由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象。

  • 回话保存数据cookie和sess

 

posted @ 2018-06-13 20:25  芦苇不学习  阅读(94)  评论(0)    收藏  举报