目录
一、Servlet概述
二、创建servlet程序
1.创建类继承HttpServlet
2.重写HttpServlet类中 service、destroy、init方法
3.重新启动服务器
一、Servlet概述
Server Applet的简称,用Java编写的服务器端的程序。它运行在web服务器中,web服务器负责Servlet和客户的通信以及调用Servlet方法。
前端页面、服务器和后端javaEE程序关系图:
Servlet的作用:
1.接收用户发送的请求数据;
2.调用其他的java程序来处理请求;
3.根据处理结果,将结果响应给客户端。
二、创建servlet程序
1.创建类继承HttpServlet
在src下先创建包,在servlet包下创建一个登录类,继承HttpServlet类,于是我们创建的类就具备了servlet的程序功能,启动服务器时就会加载继承HttpServlet的类。由于HttpServlet是javaEE的类,需要导入tomcat中的servlet-api.jar包。
在安装Tomcat文件里的bin目录中:
复制bin目录中的 servlet-api.jar 包到项目中的web目录下:
加载jar包:
这样,我们的类成功的继承了import javax.servlet.http.HttpServlet包下的HttpServlet类。
2.重写HttpServlet类中 service、destroy、init方法
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class LoginServlet extends HttpServlet {
/*
无参构造方法,初始化创建的对象
在第一次访问这个Servlet时或服务器启动时被调用了,只调用了一次
*/
public LoginServlet() {
System.out.println("LoginServlet无参构造方法");
}
/*
提供服务的,每次访问servlet程序,service方法都会执行, 多次执行
*/
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("service");
}
/*
在服务器关闭时会被调用,可以在服务器关闭时执行一些必要的操作,
此方法可以在我们的类中不重写,会调用父类中destroy()
*/
@Override
public void destroy() {
System.out.println("destroy");
}
/*
在构造方法执行完成后,紧接着来执行,用来初始化servlet,只调用了一次,
如果没有初始化的需要,也可以不进行重写,那么会调用父类中init().
*/
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("init");
}
}
3.在web.xml文件中配置servlet
<?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">
<!-- 配置servlet类的地址 -->
<servlet>
<servlet-name>loginServlet</servlet-name><!-- 定义servlet对象名字 -->
<!-- 配置servlet类地址,在第一次或启动服务器时,由服务器通过反射机创建次servlet对象制
默认是第一次访问servlet时创建对象
还可以配置在启动时创建对象<load-on-startup>1</load-on-startup> 值>=0
-->
<servlet-class>com.yyds.webback2.servlet.LoginServlet</servlet-class>
<!-- <init-param>-->
<!-- <param-name>count</param-name>-->
<!-- <param-value>22</param-value>-->
<!-- </init-param>-->
<!-- <load-on-startup>1</load-on-startup> -->
</servlet>
<!-- 为指定name的servlet配置一个供前端进行访问映射地址-->
<servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
补充:<init-param>中的值可以在init方法中拿到:System.out.println(config.getInitParameter("count"));
3.重新启动服务器
访问 localhost:8080/webBack2/login
可在idea输出台观察构造方法和重写方法的调用顺序。