JavaWeb学习笔记——Servlet
Servlet
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器
Servlet是一个接口,定义了Java类被浏览器访问到的规则
基础实现步骤
1. 创建JavaEE项目
2. 定义一个类,实现Servlet接口
public class myServlet1 implements Servlet
3. 实现接口中的抽象方法,在service方法中输出内容
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
// 提供服务的方法
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("Hello Servlet");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
4. 配置Servlet
在web.xml的< web-app >标签中配置Servlet
<!-- Servlet配置 -->
<servlet>
<!-- Servlet的自定义名称 -->
<servlet-name>myServlet1</servlet-name>
<!-- Servlet的全类名 -->
<servlet-class>web.servlet.myServlet1</servlet-class>
</servlet>
<!-- Servlet映射配置 -->
<servlet-mapping>
<!-- Servlet的自定义名称,和servlet标签中的名称一致 -->
<servlet-name>myServlet1</servlet-name>
<!-- Servlet的映射路径 -->
<url-pattern>/myServlet1</url-pattern>
</servlet-mapping>
5. 启动Tomcat,在打开网页的地址栏后添加url-pattern中的映射路径 控制台输出
Servlet执行原理
- 当服务器接收到客户端浏览器的请求后,会解析请求URL路径
http : //localhost:8080/Servlet/myServlet1
localhost:8080:通过localhost找到主机,并通过端口号寻找到tomcat
Servlet:寻找到tomcat下部署的项目
myServlet1:在对应项目的web.xml中查找Servlet的映射路径
- 通过查找到的映射路径,继续查找到对应的servlet-name,并通过servlet-name查找到Servlet的全类名
- tomcat将对应的字节码文件加载进内存,并创建其对象
- 调用对象方法
Servlet生命周期方法
① init():初始化方法,在Servlet被创建时执行,只执行一次
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("创建Servlet init...");
}
默认情况下,第一次被访问时,Servlet被创建
可以在web.xml的< servlet >标签中指定Servlet的创建时机
<load-on-startup></load-on-startup>
如果标签体内值为负数,则在第一次被访问时创建Servlet
如果标签体内值为0或正整数,则在服务器启动时创建Servlet
② service():提供服务方法,每当Servlet被访问时执行,可执行多次
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("提供服务 service...");
}
③ destroy():销毁方法,在服务器正常关闭时执行,只执行一次
@Override
public void destroy() {
System.out.println("关闭服务器 destroy...");
}
启动服务器 多次刷新页面 关闭服务器
Servlet其他方法
① getServletConfig():获取ServletConfig对象
② getServletInfo():获取Servlet的信息(版本,作者等)
Servlet 3.0注解配置
使用注解配置可以不配置web.xml中的内容
实现步骤
-
创建JavaEE项目,选择3.0以上版本的Servlet,可以不创建web.xml
-
定义一个类来实现Servlet接口
-
实现抽象方法
-
在类上使用@WebServlet注解进行配置
@WebServlet("资源路径")
@WebServlet("/myServlet1")
public class myServlet1 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.print("service...");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
Servlet体系结构
GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象方法,在定义Servlet类时,可以继承GenericServlet类,只实现service()方法即可
HTTPServlet:对HTTP协议的封装,简化操作,若类继承了HttpServlet类,需要复写doGet()方法和doPost()方法
Servlet路径定义
一个Servlet可以定义多个访问路径:@WebServlet({"/S1","/S2","S3"})
单层路径:/name
多层路径:/pname/name
评论