servlet容器如何创建servlet对象、如何对其进行初始化处理、 如果调用其方法来处理请求,以及如何销毁该对象的整个过程。
a.什么是实例化?
容器调用Servlet的构造器,创建Servlet对象。
b.什么时候实例化?
情形1(默认): 容器收到请求之后,立即创建。
情形2: 容器启动之后,立即创建(需要做一些配置)。
<!--
配置启动加载,即容器启动之后,会立即创建该
Servlet对象。
注:
参数值是一个大于等于零的整数,值越小,
优先级越高(即先被创建)。
-->
<load-on-startup>1</load-on-startup>
c.容器会创建几个实例?
一个!
a.什么是初始化?
容器在创建完servlet对象之后,会立即调用该对象的init方法。
注:
该方法只会执行一次!
b.GenericServlet已经提供了init方法的实现
将容器传递过来的ServletConfig对象保存下来了,并且
提供了一个getServletConfig方法来获得该对象。
c.如何实现自已的初始化处理逻辑?
override GenericServlet的init()方法即可。
d.初始化参数的使用
step1.配置初始化参数
<init-param>
<param-name>company</param-name>
<param-value>IBM</param-value>
</init-param>
step2. 读取初始化参数
String company =
config.getInitParameter("company");
System.out.println("company:" + company);
a.什么是就绪?
容器收到请求之后,会调用Servlet对象的service方法。
b.HttpServlet已经提供了service方法的实现:
依据请求类型,调用对应的doXXX方法。
比如,get请求调用doGet方法,post请求调用doPost方法。
这些doXXX方法,只是抛出了一个异常。
a.什么是销毁?
容器在删除Servlet对象之前,会调用该对象的destroy方法。
注:
该方法只会执行一次!
b.GenericServlet已经提供了destroy方法的基本实现。
可以override destroy方法来实现自己的销毁处理逻辑。
a.Servlet接口
init(ServletConfig config)
service()
destroy()
b.GenericServlet抽象类
该类实现了Servlet接口中的部分方法(init,destroy)。
c.HttpServlet抽象类
该类继承了GenericServlet,实现了service方法。
sun公司制订的一种服务器端动态页面技术规范。
注:
a.因为虽然可以使用servlet生成动态页面,但是过于
繁琐(需要使用out.println输出),并且不利于页面的维护
(修改页面,就需要修改java代码),所以,sun才推出了jsp
规范。
b.jsp是一个以".jsp"为后缀的文件(主要内容是html和少
量的java代码),容器会将jsp转换成一个对应的Servlet然后执行。
也就是说,jsp本质就是一个Servlet!
直接写即可。
方式一: java代码片断
<% java代码 %>
方式二: jsp表达式
<%= java表达式 %>
a.什么是隐含对象?
在jsp里面,直接可以使用的对象。比如out、request、response。
b.为什么可以直接使用这些隐含对象?
容器会添加获得这些对象的代码。
a.什么是指令?
通过指令,告诉容器,在将jsp转换成Servlet时,做一些额外的
处理,比如导包。
b.语法
<%@ 指令名 属性=值 %>
注:
如果有多个属性,使用空格隔开。
c.page指令
import属性:用来指定要导入的包名。
比如 <%@ page import="java.util.*,java.text.*"%>
注:
导多个包,要使用","隔开。
contentType属性:设置response.setContentType方法的参数值。
pageEncoding属性:告诉容器,在读取jsp文件的内容时,使用指
定的字符集来解码。
阶段一: 容器要将jsp转换成一个对应的Servlet。
html(css,js) -----> 在service方法里面,使用out.write输出。
<% %> -----> 照搬到service方法里面。
<%= %> -----> 在service方法里,使用out.print输出。
阶段二:容器调用该Servlet。
容器会编译、然后实例化、初始化、调用service方法。
计算一个人的BMI指数:
用户提交身高、体重和性别,服务器端计算BMI指数,返回体重状况:
bmi = 体重(公斤) / 身高 (米)/ 身高(米)
要求
bmi指数的范围使用初始化参数来配置。
<init-param>
<param-name>male</param-name>
<param-value>20,25</param-value>
</init-param>
<init-param>
<param-name>female</param-name>
<param-value>19,24</param-value>
</init-param>
写一个jsp (date.jsp),输出当前的系统日期,比如输出 2019-01-30