Servlet
Servlet是一个用于扩展服务器端功能的服务器端组件技术
- 运行在服务器端,所以调用执行是由服务器负责——在web.xml中需要进行配置,就是将servlet和一个请求地址建立对应关系,当浏览器对地址 发起请求时,服务器则按照规则调用serlvet类中的方法
- 服务器端的组件技术 ——直接或者间接的实现Servlet接口
- 用于扩展服务器端功能,可以实现动态网页的开发
Servlet接口
1、定义类实现Servlet接口
public class HelloServlet implements Servlet {
//在Servlet类实例化后自动执行的方法,这个方法在servlet对象的整个生命周期中运行且只运
行一次。主要用于实现Servlet的初始化操作,例如读取配置文件中当前Servlet的初始化配置信息。
当服务器调用该方法时会将当前servlet的初始化配置存储在cnfig对象中
public void init(ServletConfig config) throws ServletException {
this.config=config; //缓存config对象
}
//用于供其它位置获取config对象时进行调用
private ServletConfig config;
public ServletConfig getServletConfig() {
return config;
}
//在init方法执行后,服务器调用service方法用于生成针对客户端的响应信息。服务器采用多
线程的方式运行service方法,一个客户端请求对应一个线程。服务器调用service方法时会传入2个参
数对象,req用于封装客户端的请求信息,resp用于封装服务器的响应信息。Servlet默认采用单实例
多线程的方式对客户端浏览器请求提供服务,service执行完成后不会自动销毁,而是常驻内存
public void service(ServletRequest req, ServletResponse resp) throws
ServletException, IOException {
}
//一般供获取当前servlet对象的说明信息
public String getServletInfo() {
return "当前servlet对象的说明信息";
}
//在servlet对象销毁之前执行,用于进行资源回收。一个servlet对象在整个生命周期运行且只
运行一次。servlet对象默认是常驻内存,只有在服务器关闭或者内存严重不足而当前Servlet对象被
GC机制选中时才会被销毁
public void destroy() {
}
}
2、在web.xml中针对servlet类进行配置,将servlet和一个或者多个地址建立对应关系
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
id="WebApp_ID" version="4.0"> xml文件头用于说明当前xml文件的语法规则
<servlet> 将servlet类和一个名称建立对应关系
<servlet-name>hello</servlet-name>
<servlet-class>com.yan.action.HelloServlet</servlet-class>
</servlet>
<servlet-mapping> 将一个servlet名称和请求地址建立对应关系
<servlet-name>hello</servlet-name>
<url-pattern>/hello.do</url-pattern>
</servlet-mapping>
</web-app>
servlet三生命周期
- init 只运行一次
- service 单实例多线程的方式对外提供服务 常驻内存
- detroy
Servlet开发
- 直接实现Servlet接口
- 抽象类GenericServlet用于非标准协议开发,例如游戏的服务器端
- 抽象类HttpServlet是GenericServlet的子类,用于http协议应用开发,例如网站