2021-10-26

Servlet继承体系

  1. servlet运行原理
    在这里插入图片描述servlet属于单例模式,该类只会被创建一次对象,始终调用构造函数一次,可以减少创建servlet频率,减少内存得使用
    问题:
    1.1.我i们子定义的Servlet的为很么不能直接实现servlet接口?
    因为servlet接口中有五个抽象方法,我们的servlet必须重写这五个方法,而我们实际想要的servlce方法,所以GeericServlet重写了四个方法,只浏览一个抽象的service方法。

2.servlet体系结构

在这里插入图片描述

1.2.为什么你子定义的servlet不直接继承GenericServlet?
原因:1.因为我们得请求和响应都是基于Http的,而GenericServlet中的参数是ServletRequest和ServletResponse,此时有一些专属于HttpServlet的方法没办法调用,所有我们需要将ServletRequest转化成HttpServletRequest,将ServletResponse转化成HttpServletResponse.所以需要继承HttpServlet.
2.我们的请求方式一般常用两种,get/post,但是现在用的是service,在service中会根据你请求的方式进行请求的分发,选择合适的方法。
总结
什么时候用Service(),什么时候用doGet()/doPost()?
如果涉及到get和post的就用doGet()/doPost()
如果涉及不到get和post()就用service();

3.servlet的生命周期----面试题

在这里插入图片描述不同阶段执行不同的方法。int–service—destory

/默认servlet什么时候创建,调用时创建 ---开启tomcat服务器自动创建servlet
//loadOnStartup =1 值越小优先级越高。 值得范围0-intmax
@WebServlet(name="LifeServlet",urlPatterns = "/lifeServlet",loadOnStartup =0)
public class LifeServlet extends HttpServlet {
     //构造函数只会被调用一次
     public  LifeServlet(){
         System.out.println("创建Servlet");
     }
    //初始化只会被调用一次
    @Override
    public void init() throws ServletException {
        System.out.println("初始化方法");
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("执行的代码");
    }

    //服务器关闭后会销毁servlet
    @Override
    public void destroy() {
        System.out.println("销毁");
    }
}

4.service中的两个参数

request:接口封装了客户请求信息,如客户请求方式、参数、客户使用的协议、以及发出请求的远程主机信息等,其主要方法
request.getMethod();获取请求方式 request.getParameter(参数名);获取请求参数的值 request.getParameterValues(参数名);根据参数名获取一组值 request.setCharacterEncoding("utf-8"); //设置请求的编码方式

Response对象:接口封装了服务响应信息,主要用来输出信息到客户端浏览器,其主要方法:

response.sendRedirect(url);//重定向
response.getWriter();//获取输出对象
response.setContentType("text/html;charset=utf-8");设置响应的内容类型
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值