JavaWeb——Servlet
1.Servlet概念
Servlet:server applet,运行在服务器的小程序。Servlet就是一个接口,定义了Java类被浏览器访问到(Tomcat识别)的规则。
将来我们自定义一个类,实现Servlet接口,覆写方法。
2.Servlet快速入门
2.1.创建JavaEE项目
详见Tomcat创建一个项目:https://blog.****.net/LiLiLiLaLa/article/details/90263581
2.2.定义一个类,实现Servlet接口
2.3.实现接口中的抽象方法
2.4.配置Servlet
启动项目:注意!!!
配置虚拟路径再去访问,上篇博客Tomcat里面讲过,默认一个斜杠是从根目录访问,当项目多时就不合适了,所以要给项目配置一个访问路径(虚拟路径):
3.Servlet的执行原理
- 当服务器接收到客户端浏览器的请求后会解析请求的
URL路径
,获取访问的Servlet的资源路径
- 查找web.xml文件是否有对应的
\<url-pattern>
标签内容 - 如果有则再找到对应的
\<servlet-class>
对应的全类名
(所以注意,这里一定要是全类名) - Tomcat会将字节码文件加载进内存,并且创建其对象
- 调用其方法
4.Servlet里面的方法
4.1.具体方法
package xpu.edu.web.servlet;
import javax.servlet.*;
import java.io.IOException;
public class ServletDemo2 implements Servlet {
/**
* 初始化方法
* 在Servlet被创建时执行,只会执行一次
*/
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init....");
}
/**
* 获取ServletConfig对象
* ServletConfig:Servlet的配置对象
*/
@Override
public ServletConfig getServletConfig() {
return null;
}
/**
* 提供服务方法
* 每一次Servlet被访问时执行,会执行很多次
*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("service...");
}
/**
* 获取Servlet的一些信息,比如版本、作者等
*/
@Override
public String getServletInfo() {
return null;
}
/**
* 销毁方法
* 在服务器正常关闭时执行一次
*/
@Override
public void destroy() {
System.out.println("destroy...");
}
}
4.2.Servlet中的声命周期
-
被创建
:执行init方法,只执行一次
1.Servlet什么时候被创建?
默认情况下第一次被访问时Servlet被创建,也可以指定Servlet创建时机
2.init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
,从而多个用户同时访问时可能存在线程安全问题
。如何解决?
解决方法:尽量不要在Servlet中定义成员变量,即使定义了成员变量,也不要对其修改值,只是获取没有进行修改也不会出现问题
-
提供服务
:执行service方法,每次访问Servlet时,service就会被调用一次 -
被销毁
:执行destroy方法,只执行一次,只有服务器正常关闭时才会执行destroy方法,是在Servlet被销毁之前执行,一般用于释放资源
(可以看做要挂之前留下遗言,是在Servlet销毁之前执行,而不是Servlet已经挂了才执行)