Servlet是用Java编写的服务端程序。需要部署到servlet容器上才能运行,tomcat 就是一个servlet容器。
1、Servlet的生命周期
客户端请求该 Servlet --> 加载Servlet类到内存 --> 实例化并调用init()方法初始化该Servlet --> 响应客户请求阶段(调用service()方法) --> 销毁 (destroy())
2、什么时候Servlet容器装载Servlet:
1)Servlet容器启动时自动装载某些Servlet,实现它只需要在web.xml文件中的<servlet></servlet>之间添加如下代码:<load-on-startup>1</load-on-startup>
2)在Servlet容器启动后,客户首次向Servlet发送请求。
3)Servlet类文件被更新后,重新装载Servlet。
Servlet被装载后,Servlet容器创建一个Servlet实例并调用Servlet的init()方法进行初始化。在Servlet的整个生命周期内,init()方法只被调用一次。
3、Servlet与JSP的比较:
相似点:都可以生成动态网页。
JSP的优点是擅长于网页制作,生成动态页面比较直观,缺点是不容易跟踪与排错。
Servlet是纯Java语言,擅长于处理流程和业务逻辑,缺点是生成动态网页不直观。
4、JSP
1) 概念
JSP其实就是一个以“.jsp”为后缀的文件,该文件的内容主要是html和少量的java代码(<% java代码 %> <%=java代码 %>)。
Jsp文件会被容器转换成一个servlet然后执行。
具体转换方式:对于html(css,js)来说,会放到service方法里,使用out.write输出; 而<% %>会照搬到service方法中。
2)隐含对象 --jsp9个内置对象 http://www.cnblogs.com/nannan0226/p/6378968.html
定义:在jsp文件里可以直接使用的对象。比如out、request、response
3)指令
定义:通知容器将jsp文件转换成一个servlet类时做一些额外的处理。比如导包。
格式: <%@指令的名称 属性名称=值%>
常用指令:
i: page指令:
import属性:导包。
contentType属性:设置response.setContentType方法的参数值。
pageEncoding属性:告诉容器jsp文件的字符集,容器会按照属性指定的字符集去解码。例子如下:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
ii: taglib指令:定义标签
<%@ taglib prefix="s" uri="/struts-tags"%>
iii: include指令:引入指定jsp文件
<%@include file="/common/taglibs.jsp"%>