Servlet基础

Tomcat容器等级

四个等级,Servlet的容器管理Context容器,一个Context对应一个Web工程。

容器等级图


手工编写第一个Servlet

1.继承HttpServlet
2.重写doGet()或者doPost()方法
3.在web.xml中注册Servlet

编写好Servlet之后,接下来要告诉Web容器有关于这个Servlet的一些信息。在Servlet 3.0中,可以使用标注(Annotation)来告知容器哪些Servlet会提供服务以及额外信息。
如:


@WebServlet(name = "myServlet", urlPatterns = {"/myServlet"})  
public class MyServlet extends HttpServlet {  
/*--------代码--------*/  
/*--------代码--------*/  
}  

@WebServlet告知容器,HelloServlet这个Servlet的名称是 myServlet 。URL是 /myServlet (绝对路径),则由具 myServlet 名称的Servlet来处理,这是由urlPatterns属性来指定的。


base标签

发送请求到配置好的url路径,通常在jsp页面上做这样的处理:

<!-- 代码 -->
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
            + path + "/";
%>
<!-- 代码 -->
<html>
<head>
    <!-- 代码 -->
    <base href="<%=basePath%>">
    <!-- 代码 -->
</head>
    <!-- 代码 -->
</html>

作用就是将basePath(这里即为根目录下)作为相对路径时的起始位置,因此不必考虑此时编写的文件位置在项目何处。

Servlet生命周期

  1. 初始化阶段
  2. 响应客户端请求阶段,调用servlet()方法。由servlet()方法根据提交方式选择执行doGet()或者doPost()方法。
  3. 终止阶段,调用destroy()方法。值得注意的是,当在控制台直接关闭服务器时是以结束线程的方式关闭,因此不会执行destroy()方法
Created with Raphaël 2.1.2 开始 Servlet实例不存在 装载Servlet类并创建实例 调用init(ServletConfig)方法 调用service(Servlet Request Servlet Response)方法 yes no
Created with Raphaël 2.1.2 服务器关闭 调用destroy()方法 yes

在下列示客Tomcat容器装载Servlet

  1. Servlet容器启动时自动自动装载某些Servlet,实现它只需要在web.xml文件中的<Servlet></Servlet>之间添加如下代码:<loadon-startup>1</loadon-startup>数字越小表示优先级别越高。
    PS:Servlet3.0中可以写在@WebServlet(在上面的”手工编写第一个Servlet”有介绍,每项逗号隔开)
  2. Servlet容器启动后,客户首次向Servlet发送请求。
  3. Servlet类文件被更新后,重新加载Servlet。

Servlet被加载后,将被长期保存在内存中,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet的整个生命周期内,init()方法只被调用一次。


Servlet与JSP九大内置对象对应关系

JSP对象Servlet中怎样获得
outresp.getWriter
requestservice方法中的req参数
responseservice方法中的resp参数
sessionreq.getSession()函数
applicationgetServletContext()函数
exceptionThrowable抛出异常的方式
pagethis
pageContextPageContext
ConfiggetServletConfig函数

阶段案例,servlet实现用户登录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值