servlet 1

一、http协议:

  1、http请求:

    基本结构:

      (1)请求行

      (2)消息头

二、防盗链:

  利用http请求的header中的Referer消息,若没有,说明有盗链者。

三、HttpServletResponse对象:

  1、getWriter() 用于向客户机回送字符数据

   getOutputStream()  用于向客户机返回字符或者二进制数据

  如何选择:

    如果回送字符数据,,则使用PrintWriter对象,效率高。

    如果回送字节数据,则只能使用outputstream.

    并且这两个方法不能同时使用。

  2、SendRedirect()实现重定向

    并且可以传送数据。(默认数据是get方式),传送多个值用&符号隔开。

  3、session可以实现传送数据。是request的方法。

  4、文件下载:

  5、随机生成验证码:

四、中文乱码问题:

  1、发生中文乱码的情况:

    (1)表单form

        a、post:

          request.setCharacterEncoding(utf-8或者其他)函数

        b、get方式:

          解决之道:创建一个utf-8的字符串。

          String u=new String(request.getParameter("username").getBytes("iso-8859-1"),"utf-8");

          可以将这个方法写成一个工具类。

    (2)超链接

      可以用get方式的解决方案。

     (3)中文奇数乱码:

        ie6及其以下版本会出现。

五、HttpServletRequest:

  1、概念:代表的是浏览器的请求。

  2、getParameter()方法:获取表单输入的值。

    如果表单是复选框:使用getParametervalues()方法,可以返回数组内容。

    hidden方法来传输一些特殊数据。

   3、常见应用:

    (1)请求转发:

      通知服务器去调用另外一个资源。

    (2)实现:

        request.getRequestDispatcher()

        使用转发方法,将request和response转发给下一个Servlet。缺点:只能到当前web应用的资源。

     (3)request对象作为一个域对象(Map容器)使用时,主要是通过以下的四个方法来操作

        setAttribute(String name,Object o)方法,将数据作为request对象的一个属性存放到request对象中,例如:request.setAttribute("data", data);

        getAttribute(String name)方法,获取request对象的name属性的属性值,例如:request.getAttribute("data")

        removeAttribute(String name)方法,移除request对象的name属性,例如:request.removeAttribute("data")

        getAttributeNames方法,获取request对象的所有属性名,返回的是一个,例如:Enumeration<String> attrNames = request.getAttributeNames();

原文地址:https://www.cnblogs.com/monty12/p/9188782.html