Servlet实例
Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接口的 Java 类。Web 应用程序开发人员通常编写 Servlet 来扩展 javax.servlet.http.HttpServlet,并实现 Servlet 接口的抽象类专门用来处理 HTTP 请求。
Servlet创建方式
实现Servlet接口
因为是实现 Servlet 接口,所以我们需要实现接口里的方法。
下面我们也说明了 Servlet 的执行过程,也就是 Servlet 的生命周期。
package test;
import javax.servlet.*;
import java.io.IOException;
/**
* 1.实例化----使用构造方法创建对象
* 2.初始化----init()
* 3.服务 service()
* 4.销毁 destroy()
*/
public class ServletDemo1 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
//当Servlet第一次被创建对象时执行该方法,该方法在整个生命周期中执行一次
System.out.println("-------------------init------------------");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//对客服端下ing赢得方法,该方法会被执行很多次,每次请求servlet都会执行该方法
System.out.println("=========service===========");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
//当tomcat停止时也就销毁servlet
System.out.println("--=-=-=-=-=destroy()-=-=-=-=-=-=-");
}
}
继承GenericServlet类
它实现了Servlet接口除了service方法,不过这种方法并不常用
package test;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;
public class ServletDemo2 extends GenericServlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("*******yohe******");
}
}
继承HttpServlet类
创建servlet的第三种方法,也是最常用的
package test;
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 ServletDemo3 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("hehe");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("haha");
}
}
创建第一个Servlet项目
创建一个maven项目
-
项目结构
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PxXRpJSG-1643014297733)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1643013039799.png)]
-
pom文件
-
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.top</groupId> <artifactId>ServletDemo</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <properties> <maven.compiler.source>8</maven.compiler.source> <maven.compiler.target>8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> </dependency> </dependencies> </project>
-
Test.java文件
-
package com.top.ServletDemo; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; public class Test extends HttpServlet { //由于get或者post只是请求实现的不同方式,可以互相调用,业务逻辑都一样; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //响应流 PrintWriter writer = resp.getWriter(); writer.println("Hello,Servlet!!"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doPost(req, resp); } }
-
-
web.xml文件
-
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0" metadata-complete="true"> <!--注册servlet--> <servlet> <servlet-name>test</servlet-name> <servlet-class>com.top.ServletDemo.Test</servlet-class> </servlet> <!--Servlet请求路径--> <servlet-mapping> <servlet-name>test</servlet-name> <url-pattern>/test</url-pattern> </servlet-mapping> </web-app>
-
-
-
然后配置tomcat
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M3JzMcOM-1643014297735)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1643013603023.png)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NMEAJH8v-1643014297735)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1643013624736.png)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HeQwNGQl-1643014297736)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1643013636318.png)]
-
启动测试:
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XGxqcwkM-1643014297736)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1643013650114.png)]