理解及使用Servlet

本文深入解析Servlet的概念,从Servlet在Java中的角色到其在Tomcat中的生命周期,详细阐述了Servlet如何处理请求和响应,以及如何在实际应用中使用Servlet进行web开发。同时,介绍了ServletConfig和ServletContext的作用,提供了Servlet调用JSP的示例代码。

Servlet简介

  • 在Java中,Servlet就是一个接口,用来处理Servlet容器发送来的请求和响应的业务逻辑;
  • 在Tomcat中,Servlet运行在Servlet容器中,由容器管理Servlet的一生。

Servlet基础

  • Tomcat是一个web服务器和Servlet容器的结合体。Tomcat剖析参考逝宇、这篇文章

  • web服务器的作用:将某个主机上的资源映射为一个URL供外界访问。

  • 容器这样处理请求:容器接收web服务器发送来的请求;容器“看出”请求指向一个servlet,容器创建两个对象request、response;容器匹配到对应的servlet,为此请求分配一个线程,并创建请求和响应对象传递给此servlet;容器调用servlet的service方法,根据请求的不同类型,service()方法会调用doGet()或doPost()方法;doGet()或doPost()方法根据请求将响应内容填入到响应对象,此期间容器一直保留有响应对象的一个引用;线程结束,容器把响应对象转换为一个Http响应,把它发回给请求方,然后删除请求和响应对象。

  • 每一次请求都会创建一个线程,每一个线程都会分配一个方法栈,这样保证每次执行doGet()和doPost()方法都在一个单独的方法栈中。

  • Servlet的任务是得到一个请求,再发回一个响应

  • Servlet的生命周期:

    此时servlet可处理请求
    类加载
    初始化即构造函数运行
    调用init方法
    调用service方法
    调用doGet或doPost方法
    调用destroy方法
  • ServletConfig

    • 每个Servlet都有一个ServletConfig对象
    • 用于向Servlet传递部署时信息(例:读取配置文件web.xml中配置的初始化属性的值)
      <servlet>
         <init-param>
         	<param-name></param-name>
         	<param-value></param-value>
         </init-parm>
      </servlet>
      
      this.getServletConfig().getInitParam(String name);
      
    • 用于访问ServletContext
  • ServletContext

    • 每个Web应用都有一个ServletContext
    • <web-app>
      	<context-param>
      		<param-name></param-name>
      		<param-value></param-value>
      	</context-param>
      </web-app>
      
      this.getServletContext().getInitParam(String name);
      


Servlet使用

  • 覆盖servlet的doGet()、doPost()方法
  • request对象可增加属性
    • request.setAttribute();
  • Servlet调用JSP:
    • 	//为JSP实例化一个请求分派器
      	RequestDispatcher view=request.getRequestDispatcher("xxx.jsp");
      	//使用请求分派器要求容器准备好JSP,并向JSP发送请求和响应
      	view.forward(request,response); 
      
  • request对象可获取的信息:
    在这里插入图片描述
  • GET是幂等的,POST不是幂等的
  • response的输出可以选择字符或者字节:
    • 	//输出字符
      	PrintWriter writer=response.getWriter();
      	writer.println("");
      
    • 	//输出字节
      	ServletOutputStream out=response.getOutputStream();
      	out.write(aByteArray);
      
  • 下载jar的servlet代码:
    在这里插入图片描述
  • 常用MIME类型(response.setContentType("MIME类型")):
    在这里插入图片描述

推荐书籍

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值