Servlet详解
文章目录
- Servlet详解
- 一、Servlet是什么?
- 二、Servlet的生命周期
- 三、创建Servlet的方法
- 1、实现Servlet接口
- 2、继承HttpServlet类
- 三、业务执行流程
- 1.页面发起请求
- 2.Tomcat解析路径,访问对应方法
- servlet对数据进行处理
- 4.返回处理后的返回值
- 四、Web.xml文件的配置
- 五、使用注解配置servlet
Servlet详解
Servlet是JavaWeb开发中最原始的请求处理程序,一些古老的项目仍然还在使用Servlet-JSP技术。对于初学者来说,会使用Servlet开发是一个必修课
一、Servlet是什么?
Servlet是JavaWeb项目中用于处理前端发起请求,并通过一系列的操作处理请求,然后对请求做出响应的一种应用程序。Tomcat服务器,是我们Servlet的容器。
二、Servlet的生命周期
Servlet生命周期主要包含四个部分,分别是创建,初始化,服务,销毁
创建
- 请求映射到这个类,才会创建该类对象
- 创建一次
- 单实例,该类只有这一个对象
初始化
- 创建完立即初始化
- 且只初始化一次
服务
- 后续每次发送请求都会执行服务方法
销毁
- 服务器宕机即销毁
- 或者应用程序从服务器卸载
三、创建Servlet的方法
1、实现Servlet接口
public class MyServlet 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("销毁..." );
}
}
实现接口后需要重写接口的所有方法,在实际开发中此种方法过于冗余,因为我们不需要去完成整个Servlet的生命周期的所有方法,而是只需要关注servlet怎么实现业务。
2、继承HttpServlet类
public class TestServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
相对于第一种创建Servlet的方式,第二种方式有所简化,更加方便了我们的使用
三、业务执行流程
1.页面发起请求
当用户在页面触发了请求事件,例如:点击注册,登陆,刷新等等功能时。这时,前端页面会通过预先设置好的服务器路径(地址url),对服务器发送请求。这些请求一般包含一些数据,例如用户名,密码等等。
2.Tomcat解析路径,访问对应方法
请求通过url进入Tomcat服务器,服务器通过Web.xml的配置文件查找对应的路径。通过servlet-mapping标签内容找到对应的servlet,并访问servlet的方法
3. servlet对数据进行处理
通过上一步,此时请求已经被转发到对应的方法。请求携带的通过Request流传输,按照MVC三层架构思想,servlet充当控制层,将所需要的数据转发入service层处理。并接受返回值。
4.返回处理后的返回值
当Servlet接收到业务层的返回值时,将通过Response流对返回的信息进行输出,通过来时的路径,传输到页面。完成整个流程。
四、Web.xml文件的配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>com.lzl.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/myServlet</url-pattern>
</servlet-mapping>
</web-app>
在整个执行流程中,我们必须要配置好servlet的映射,这样才能让服务器知道前端发送的请求要转发给哪个Servlet进行处理。
整个web.xml当下的解析流程是,通过 标签内部的 (外部访问路径),找到其对应的servlet名。注意,这个servlet名应该是全局唯一的。然后服务器根据找到的这个servlet名去 标签里找的内容进行匹配。匹配成功怎找到对应的全限定名,去找到该servlet,将请求准确无误的转发至目标。
五、使用注解配置servlet
当我们做一些比较复杂的业务时,每一个模块都需要单独的配置web.xml映射。我们不得不写很长串的标签,因为一个servlet就需要六对标签去配置。那么有没有更简单的方式?当然是有的
导入jar包
我们需要导入这两个jar包,这些jar包是在我们安装的Tomcat的lib文件夹里,拷过来即可。然后我们需要在我们建好的servlet文件的类名上方,配置如下注解。
小括号的内容即是我们需要在前端的AJAX配置的访问地址。
注意
当我们配置完注解,必须要把web.xml中的配置删掉。否则是行不通的。
还没有评论,来说两句吧...