Servlet
servlet = server+applet运行在服务器端的java程序
servlet是一个接口,一个类如果想通过服务器访问到,那么这个类就必须直接间接的实现Servlet接口
作用是:接受请求,处理逻辑,响应结果
快速开始
定义类实现Servlet接口,并重写该Servlet接口的抽象方法
public class HelloServlet extends HttpServlet {
/**
* 构造器执行顺序
* 优先执行
*/
public HelloServlet(){
System.out.println("构造器执行了");
}
/**
* 前端发送的请求会在service方法中做逻辑处理
* 一般在开发中不会这样写
* @param req
* @param res
* @throws ServletException
* @throws IOException
*/
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("hello requestServlet");
}
/**
* 当web服务器关闭时会执行该方法
*/
@Override
public void destroy() {
System.out.println("销毁容器");
}
/**
* 当前端发送请求时会执行该方法,初始化容器
* @throws ServletException
*/
@Override
public void init() throws ServletException {
System.out.println("开始初始化容器");
}
}配置xml
<!--配置HelloServlet的映射-->
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.lifly.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>servlet的生命周期
生命周期是指一个对象从创建到销毁的过程
init方法,servlet对象创建时,调用此方法
service方法,用户访问servlet,调用此方法,每访问一次,执行一次
destory方法,servlet对象小回迁,调用此方法(Servlet被销毁执行,服务器正常关闭,才会执行destroy方法,destory方法在servlet销毁之前执行,一般用于释放资源)
servletConfig对象
主要用于读取web.xml配置文件servlet中<init-param>信息,实现参数和代码的解耦
例如读取xml中的字符编码配置</init-param>
public class ServletConfigServlet implements Servlet {
// 定义成员变量
private ServletConfig servletConfig;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
// 将init中的servletConfig对象,复制给成员变量
this.servletConfig = servletConfig;
System.out.println("ServletConfigServlet 初始化开始");
}
@Override
public ServletConfig getServletConfig() {
// 获取全局的ServletConfigServlet对象
return servletConfig;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
// 获取web.xml文件中配置的编码
String encode = getServletConfig().getInitParameter("encode");
System.out.println(encode);
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("ServletConfigServlet 销毁");
}
}xml配置
<!--ServletConfigServlet映射-->
<servlet>
<servlet-name>ServletConfigServlet</servlet-name>
<servlet-class>com.lifly.servlet.ServletConfigServlet</servlet-class>
<!--配置局部编码-->
<init-param>
<param-name>encode</param-name>
<param-value>utf-8</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ServletConfigServlet</servlet-name>
<url-pattern>/ServletConfigServlet</url-pattern>
</servlet-mapping>Servlet3.0
简化web.xml配置servlet复杂性,提高开发效率
只需要编写类实现servlet接口,在类上添加@WebServlet("资源路径")即可
例如以下代码
@WebServlet("/ServletDemo01")
public class ServletDemo01 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("初始化开始");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("服务开始");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("销毁");
}
}

京公网安备 11010502036488号