对HttpServlet源码分析

  • HttpServlet类是专门为HTTP协议准备的。比GenericServlet更适合HTTP协议下开发。

  • HttpServletRequest对象中封装了什么信息?

    • HttpServletRequest,简称request对象。

    • HttpServletRequest中封装了请求协议的全部内容。

    • Tomcat服务器将“请求协议”中的数据全部解析出来,然后将这些对象全部封装到request对象当中。

  • HttpServletResponse对象是专门来响应HTTP协议到浏览器的。

  • 直接编写一个Servlet直接继承HttpServlet,直接重写HttpServlet类中的service()方法可以么?

    • 可以,只是不会再享受405错误的提示。

  • 如何开发一个Servlet类?

    • 第一步:编写一个Servlet类继承HttpServlet

    • 第二步:重写doGet方法或者重写doPost方法,重写谁?由javaweb程序员说的算。

    • 第三步:将Servlet类配置到web.xml文档中。

    • 第四步:准备前端的页面(form表单),form表单中指定请求路径即可。


一些主要的方法:

  • doGet()和doPost()方法:
    • 在HttpServlet的service(HttpServletRequest,HttpServletResponse)方法会去判断当前请求是GET还是POST。如果是GET请求,那么会去调用本类的doGet()方法,如果是POST请求会去调用doPost()方法,这说明我们在子类中去覆盖doGet()或doPost()方法即可。
    • public void doGet(HttpServletRequest request, HttpServletResponse response)
                          throws ServletException, IOException {
                  }
      
      
      
       public void doPost(HttpServletRequest request, HttpServletResponse response)
                          throws ServletException, IOException {
                  }
  •  HttpServletRequest的方法:
    • String getParameter(String paramName);    //获取指定请求参数的值
      
      String getMethod();   //获取请求方法,例如GET或POST
      
      String getHeader(String name);    //获取指定请求头的值
      
      void setCharacterEncoding(String encoding);    
      //设置请求体的编码!因为GET请求没有请求体,所以这个方法只只对POST请求有效。当调用request.setCharacterEncoding(“utf-8”)之后,再通过getParameter()方法获取参数值时,那么参数值都已经通过了转码,即转换成了UTF-8编码。所以,这个方法必须在调用getParameter()方法之前调用!

       

  •  HttpServletResponse的方法:
    • PrintWriter getWriter();   //获取字符响应流,使用该流可以向客户端输出响应信息
      
      ServletOutputStream getOutputStream();    //获取字节响应流,当需要向客户端响应字节数据时,需要使用这个流,例如要向客户端响应图片
      
      void setCharacterEncoding(String encoding);    //用来设置字符响应流的编码,例如在调用setCharacterEncoding(“utf-8”);之后,再response.getWriter()获取字符响应流对象,这时的响应流的编码为utf-8,使用response.getWriter()输出的中文都会转换成utf-8编码后发送给客户端
      
      void setHeader(String name, String value);    //向客户端添加响应头信息,例如setHeader(“Refresh”, “3;url=http://www.itcast.cn”),表示3秒后自动刷新到http://www.itcast.cn
      
      void setContentType(String contentType);    //该方法是setHeader(“content-type”, “xxx”)的简便方法,即用来添加名为content-type响应头的方法。content-type响应头用来设置响应数据的MIME类型,例如要向客户端响应jpg的图片,那么可以setContentType(“image/jepg”),如果响应数据为文本类型,那么还要台同时设置编码,例如setContentType(“text/html;chartset=utf-8”)表示响应数据类型为文本类型中的html类型,并且该方法会调用setCharacterEncoding(“utf-8”)方法
      
      void sendError(int code, String errorMsg);   //向客户端发送状态码,以及错误消息。例如给客户端发送404:sendError(404, “您要查找的资源不存在!”)
      
      
      

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值