第一种方式:实现Servlet接口
1、新建一个普通的maven工程
首先新建一个普通的maven工程。记得不要勾选下面的webapp
![BRwTmX-2020-11-12-09-49-47](https://img-blog.csdnimg.cn/img_convert/796c0d21c3cb0e00ef44a86f6cac9bda.png)
这是新建好的目录结构
![w5vcP0-2020-11-12-09-50-26](https://img-blog.csdnimg.cn/img_convert/6b6bcd0a1ac8bce5d5a2b6262061b1e7.png)
然后右键项目选择 Add Framework support 最后点击web Application即可
![LwABK6-2020-11-12-09-52-36](https://img-blog.csdnimg.cn/img_convert/8275f6b48c5525354eee6d3cef6eb5ec.png)
![05f6er-2020-11-12-09-54-32](https://img-blog.csdnimg.cn/img_convert/2c2594c3c4e415dcadf0177839fb6710.png)
2、编码
首先在pom.xml文件中加入下面的依赖
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
然后新建一个类去实现Servlet接口,为了方便在service方法中直接打印一句话表示成功相应请求
package top.educy;
import javax.servlet.*;
import java.io.IOException;
/**
* @Author 马小姐
* @ClassName HelloServlet
* @Date 2020-11-12 09:55
* @Version 1.0
* @Description:
*/
public class HelloServlet implements Servlet{
public void init(ServletConfig config) throws ServletException {
}
public ServletConfig getServletConfig() {
return null;
}
/***
* @author MacbookPro
* @param req: service方法专门是去请求和处理相应请求的
* @param res:
* @return void
* @version V1.0.0
* @date 10:02 2020/11/12
*/
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("Hello Servlet被打印了");
}
public String getServletInfo() {
return null;
}
public void destroy() {
}
}
3、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">
<!-- 配置tomcat服务器-->
<servlet>
<!-- 给servlet程序起别名 一般为类名-->
<servlet-name>HelloServlet</servlet-name>
<servlet-class>top.educy.HelloServlet</servlet-class>
</servlet>
<!-- 给servlet程序配置访问地址-->
<servlet-mapping>
<!-- 告诉服务器我当前配置的地址是给哪一个服务器使用-->
<servlet-name>HelloServlet</servlet-name>
<!-- 配置访问地址 /表示服务器访问的时候地址为ip+端口号/工程路径/hello -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
请仔细看下上述每个标签表示的含义是什么,我都有标注。
4、配置服务器
![PeCCex-2020-11-12-10-07-59](https://img-blog.csdnimg.cn/img_convert/f9291e49fe5da234735597043a4fc904.png)
![yYKRqN-2020-11-12-10-09-06](https://img-blog.csdnimg.cn/img_convert/d156e11e3fbc37225a1f315fa941bb5a.png)
可以看到成功启动了
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201112100940748.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTg1Nzg4,size_16,color_FFFFFF,t_70#pic_center)
然后在url后面加上我们刚才在web.xml中配置好的访问地址 /hello 再去观察控制台信息
仔细看好我用乃亮绿标注的。
![K4wE7b-2020-11-12-10-13-00](https://img-blog.csdnimg.cn/img_convert/6c65cbfdcc6d76afb65e5c8f6ca8b7fe.png)
第二种方式:继承HttpServlet
1、新建一个类继承HttpServlet并重写doGet doPost方法
package top.educy.servlet;
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;
import java.io.Writer;
/**
* @Author 马小姐
* @ClassName ResponseIo
* @Date 2020-11-16 上午11:38
* @Version 1.0
* @Description:
*/
public class ResponseIo extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// super.doPost(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// super.doGet(req, resp);
// 字节输入流和字符输入流只能同时存在一个 不然会报500错误
// resp.getOutputStream();
// 没有的话会出现中文乱码
resp.setContentType("text/html;charset=UTF-8");
PrintWriter writer = resp.getWriter();
writer.write("你是猪吗");
}
}
2、配置web.xml
<servlet>
<servlet-name>response</servlet-name>
<servlet-class>top.educy.servlet.ResponseIo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>response</servlet-name>
<url-pattern>/response</url-pattern>
</servlet-mapping>
3、部署项目
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201119095053376.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTg1Nzg4,size_16,color_FFFFFF,t_70#pic_center)
4、输入web.xml配置的url-pattern访问servlet
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201119095231263.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwOTg1Nzg4,size_16,color_FFFFFF,t_70#pic_center)
结束!
Servlet生命周期:
执行Servlet执行器的构造方法
执行init()的初始化方法
执行service()方法
执行destory()销毁方法