Servlet介绍
Servlet是一个特殊的Java类,必须继承于HttpServlet,提供了不同的方法响应客户端的请求:
doGet:响应GET请求
doPost:响应POST请求
doPut:响应PUT请求
doDelete:相应DELETE请求
HttpServlet还包含了两种方法:
init(ServletConfig config):创建实例时,初始化资源
destory():销毁Servlet实例,自动调用该方法回收资源
使用标签形式的Servlet
@WebServlet(name="firstServlet", urlPattern={"/firstServlet"})
public class FirstServlet extends HttpServlet {
//客户端的响应方法,使用该方法可以响应客户端所有的请求类型
//service方法可以统一处理用户请求
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//内容
}
}
@WebServlet是属于Servlet 3.0的Annoation
属性:
1.asyncSupported 非必须,指定该Servlet是否支持异步操作模式
2.displayName 非必须,指定该Servlet的显示名
3.initParams 非必须,用于为该Servlet配置参数
4.loadOnStartup 非必须,用于将该Servlet配置成load-on-startup的Servlet
5.name 非必须,指定该Servlet名称
6.urlPatterns/value 非必须,这两个属性都是处理该Servlet的URL
上述方式等同于
<servlet>
<servlet-name>firstServlet</servlet-name> //相当于name属性
<servlet-class>test.firstServlet</servlet-class> //实现类
</servlet>
<servlet-mapping>
<servlet-name>firstServlet</servlet-name>
<url-pattern>/first</url-pattern> //urlPattern属性
</servlet-mapping>
jsp/servlet生命周期
创建Servlet实例的时机
1.客户端第一次请求这个Servlet实例,系统创建该实例
2.WEB应用启动立即创建,即Load-on-startup
生命周期
1.创建Servlet实例
2.web容器调用init方法,进行初始化
3.Servlet初始化后,将一直存在于容器中,用于响应客户端请求
4.web容器决定销毁Servlet时,先调用destroy方法,通常在关闭web应用时销毁servlet
load-on-startup
注解:
@WebServlet(loadOnStartup=1)
等同于配置文件:
<Servlet>
... //省略其他
<load-on-startup>1</load-on-startup>
</Servlet>
initParams
注解:
@WebServlet(initParams={
@WebInitParam(name="driver", value="com.mysql.jdbc.Driver"),
@WebInitParam(name="url", value="jdbc:mysql://localhost:3306/javaee"),
@WebInitParam(name="username", value="root"),
@WebInitParam(name="password", value="root")})
调用:
ServletConfig config = getServletConfig(); //获取ServletConfig对象
String driver = config.getInitParameter("driver"); //获取配置参数driver
等同于配置文件:
<servlet>
<init-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</init-param>
</servlet>
使用Servlet作为控制器
在标准MVC模式中
Servlet作为控制器使用
类似于调度员:将所有用户请求都发给Servlet,Servlet调用Model处理用户请求,并调用JSP呈现处理结果
Model通常由JavaBean充当,所有业务逻辑,数据访问逻辑都在Model中实现。可能还有丰富的组件,例如Dao,领域对象
JSP仅作为View
1.收集用户的请求参数
2.将应用的处理结果,状态呈现给用户