1.Servlet的生命周期

/**
 * Servlet的生命周期:
 *         1、从第一次调用到服务器关闭。
 *         2、如果Servlet在web.xml中配置了load-on-startup,生命周期为从服务器启动到服务器关闭
 * 注意:
 *         init方法是对Servlet进行初始化的一个方法,会在Servlet第一次加载进行存储时执行
 *         destory方法是在servlet被销毁时执行,也就服务器关闭时。
 */
public class ServletLife extends HttpServlet {
    //初始化方法,在servlet第一次加载内容的时候被调用
    @Override
    public void init() throws ServletException {
        System.out.println("servlet初始化完成");
    }

    //service方法,真正处理请求的方法
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        resp.getWriter().write("servlet life");
        System.out.println("servlet life");
    }
    @Override
    public void destroy() {
        System.out.println("我被销毁了...");
    }
}

2.Service方法和doGet方法和doPost方法的区别

/**
 * Service方法和doGet方法和doPost方法的区别
 *     Service方法:
 *         可以处理get/post方式的请求,如果servlet中有Service方法,会优先调用service方法对请求进行处理。
 *     doGet方法:
 *         处理get方式的请求
 *     doPost方法:
 *         处理post方式的请求
 * 注意:
 *         如果在覆写的service方法中调用了父类的service方法(super.service(arg0, arg1)),
 *         则service方法处理完后,会再次根据请求方式响应的doGet和doPost方法执行。所以,一般情况下
 *         我们是不在覆写的service中调用父类的service方法的,避免出现405错误。
 * Servlet的常见错误:
 *         404错误:资源未找到
 *             原因一:在请求地址中的servlet的别名书写错误。
 *             原因二:虚拟项目名称拼写错误
 *        500错误:内部服务器错误
 *            错误一:
 *                java.lang.ClassNotFoundException: com.bjsxt.servlet.ServletMothod
 *                 解决:
 *                     在web.xml中校验servlet类的全限定路径是否拼写错误。
 *            错误二:
 *                因为service方法体的代码执行错误导致
 *                解决:
 *                    根据错误提示对service方法体中的代码进行错误更改。
 *        405错误:请求方式不支持
 *            原因:
 *                请求方式和servlet中的方法不匹配所造成的。
 *            解决:
 *                尽量使用service方法进行请求处理,并且不要再service方法中调用父类的service。
 * @author MyPC
 */
public class ServletMethod extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        int i=5/0;
        System.out.println("我是service");
        super.service(req, resp);

    }
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("我是doGet方法");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("我是doPost方法");
    }
}

3.request对象学习

/**
 * request对象学习:
 *         作用:request对象中封存了当前请求的所有请求信息
 *         使用:
 *             获取请求头数据
 *                     req.getMethod();//获取请求方式
 *                     req.getRequestURL();//获取请求URL信息
 *                     req.getRequestURI();//获取请求URI信息
 *                     req.getScheme();//获取协议
 *             获取请求行数据
 *                     req.getHeader("键名");//返回指定的请求头信息
 *                     req.getHeaderNames();//返回请求头的键名的枚举集合
 *             获取用户数据
 *                     req.getParameter("键名");//返回指定的用户数据
 *                     req.getParameterValues("键名");//返回同键不同值的请求数据(多选),返回的数组。
 *                     req.getParameterNames()//返回所有用户请求数据的枚举集合
 *             注意:
 *                 如果要获取的请求数据不存在,不会报错,返回null。
 *
 *         注意:
 *             request对象由tomcat服务器创建,并作为实参传递给处理请求的servlet的service方法。
 * @author MyPC
 *
 */
public class RequestServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        //获取请求头数据
                //获取请求方式
                    String method = req.getMethod();
                    System.out.println(method);
                //获取请求URL
                    StringBuffer url=req.getRequestURL();
                    System.out.println(url);
                    //获取URI
                    String uri=req.getRequestURI();
                    System.out.println(uri);
                //获取协议
                    String h=req.getScheme();
                    System.out.println(h);
        //获取请求行数据
                    //获取指定的请求行信息
                    String value=req.getHeader("aaa");
                    System.out.println(value);
                    //获取所有的请求行的键的枚举
                    Enumeration e = req.getHeaderNames();
                    while(e.hasMoreElements()){
                        String name=(String) e.nextElement();
                        String value2=req.getHeader(name);
                        System.out.println(name+":"+value2);
                    }
        //获取用户数据
                    String name=req.getParameter("uname");
                    String pwd=req.getParameter("pwd");
                    System.out.println(name+":"+pwd);
                    //String fav=req.getParameter("fav");
                    String[] favs=req.getParameterValues("fav");
                    if(favs!=null){
                        for(String fav:favs){
                            System.out.println(fav);
                        }
                    }
                    //获取所有的用户请求数据的键的枚举集合---req.getParameterNames()
    }
}

4.response对象学习

/**
 * Respone对象学习:
 *         作用:
 *             用来响应数据到浏览器的一个对象
 *         使用:
 *             设置响应头
 *                 setHeader(String name,String value);//在响应头中添加响应信息,但是同键会覆盖
 *                 addHeader(String name,String value);//在响应头中添加响应信息,但是不会覆盖。
 *             设置响应状态
 *                 sendError(int num,String msg);//自定义响应状态码。
 *             设置响应实体
 *                 resp.getWrite().write(String str);//响应具体的数据给浏览器
 *         设置响应编码格式:
 *                 resp.setContentType("text/html;charset=utf-8");
 *         总结:
 *             service请求处理代码流程:
 *                 设置响应编码格式
 *                 获取请求数据
 *                 处理请求数据
 *                     数据库操作(MVC思想)
 *                 响应处理结果
 * @author MyPC
 *
 */

public class ResponseServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
            //获取请求信息
                //获取请求头
                //获取请求行
                //获取用户数据
            //处理请求

            //响应处理结果
                //设置响应头
                resp.setHeader("mouse", "two fly birds");
                resp.setHeader("mouse", "bjsxt");
                resp.addHeader("key", "thinkpad");
                resp.addHeader("key", "wollo");
                //设置响应编码格式
                    //resp.setHeader("content-type", "text/html;charset=utf-8");
                    //resp.setContentType("text/plain;charset=utf-8");
                    //resp.setContentType("text/xml;charset=utf-8");
                    resp.setContentType("text/html;charset=utf-8");
                //设置响应状态吗
                    //resp.sendError(404, "this Method is not supported");
                //设置响应实体
                    resp.getWriter().write("<b>今天天气真好,适合学习</b>");

    }
} 

Servlet(1):request和response对象的更多相关文章

  1. java web(三):ServletContext、session、ServletConfig、request、response对象

    上一篇讲了Servlet: 1)什么是Servlet[servlet本身就是一种Java类,这种Java类提供了web形式的方法,只要实现了servlet接口的类,都是一种servlet资源.] 2) ...

  2. spring aop 获取request、response对象

    在网上看到有不少人说如下方式获取: 1.在web.xml中添加监听 <listener>          <listener-class>              org. ...

  3. request与response对象.

    request与response对象. 1. request代表请求对象 response代表的响应对象. 学习它们我们可以操作http请求与响应. 2.request,response体系结构. 在 ...

  4. request与response对象详述

    request与response对象. 1. request代表请求对象 response代表的响应对象. 学习它们我们可以操作http请求与响应. 2.request,response体系结构. 在 ...

  5. springMVC中获取request和response对象的几种方式(RequestContextHolder)

    springMVC中获取request和response对象的几种方式 1.最简单方式:参数 2.加入监听器,然后在代码里面获取 原文链接:https://blog.csdn.net/weixin_4 ...

  6. Servlet之Request和Response 解析

    原理 tomcat服务器会根据请求url中的资源路径,创建对应的Servlet的对象 tomcat服务器.会创建request和response对象,request对象中封装请求消息数据. tomca ...

  7. Request和Response对象

    Request 和 Response 对象起到了服务器与客户机之间的信息传递作用.Request 对象用于接收客户端浏览器提交的数据,而 Response 对象的功能则是将服务器端的数据发送到客户端浏 ...

  8. 【转】Django中的request与response对象

    关于request与response 前面几个 Sections 介绍了关于 Django 请求(Request)处理的流程分析,我们也了解到,Django 是围绕着 Request 与 Respon ...

  9. SpringMvc4中获取request、response对象的方法

    springMVC4中获取request和response对象有以下两种简单易用的方法: 1.在control层获取 在control层中获取HttpServletRequest和HttpServle ...

  10. springboot的junit4模拟request、response对象

    关键字: MockHttpRequest.Mock测试 问题: 在模拟junit的request.response对象时,会报如下空指针异常. 处理方法: 可用MockHttpServletReque ...

随机推荐

  1. 消息队列(四)--- RocketMQ-消息发送2

    概述   接着我们上一篇继续分析消息发送,上节讲到消息发送前有可能遇到 broker 失效的情况,RocketMQ 主要是采用两种策略 : 重试发送 broker 故障延迟机制   后者指的是当发送给 ...

  2. windows maven配置

    <?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Soft ...

  3. SSL握手两大加密算法 : RAS算法 和 DH算法解析

    写下此博客记录心得体会,如有不足之处请指正   先是手稿笔记 :  正文:   在Https协议中,Client端和Server端需要三个参数才能生成SessionKey来加密信息. 三个参数分别是 ...

  4. 数据库的小案例(三):用递归实现TreeView层级显示

    从这个小案例我学到了不少知识.这些无论如何无法从书里得来.正所谓实践出真知,学习编程需要大量实践这句话永不过时. 首先:好的代码和坏的代码带来的性能上的差异很明显.好的策略可以让你的程序运行速度大大加 ...

  5. 常用的php函数

    最严格身份证号码验证,支持15位和19世纪出生的人的身份证号码 # 计算身份证校验码,根据国家标准GB 11643-1999 function idcard_verify_number($idcard ...

  6. 矩阵matrix

    矩阵matrix 1. 矩阵matrix 1.1. 定义由 m × n 个数aij排成的m行n列的数表称为m行n列的矩阵,简称m × n矩阵.记作: 这m×n 个数称为矩阵A的元素,简称为元,数aij ...

  7. ES6-const定义常量

    在es5中我们一般将变量名大写来表明这是一个常量,但其实它是可以修改的. 在es6中可以用const来定义常量,它定义的常量不能修改.     const NAME = 'tom';     NAME ...

  8. HDU1024 Max Sum Plus Plus (优化线性dp)

    Now I think you have got an AC in Ignatius.L's "Max Sum" problem. To be a brave ACMer, we ...

  9. 大道至简第一章JAVA伪代码形式读后感

    //愚公移山: public class YuGongYiShan{ //原始需求:“惩山北之塞,出入之迂” //沟通方式:“聚室而谋曰” //项目目标:“毕力平险,指通豫南,达于汉阴” //技术方案 ...

  10. i.MX RT600之I2S外设介绍及应用

    恩智浦的i.MX RT600是跨界处理器产品,同样也是i.MX RTxxx系列的开山之作.不同于i.MX RT1xxx系列单片机,i.MX RT600 采用了双核架构,将新一代Cortex-M33内核 ...