文章目录
前言
本文记录了笔者在学习Java Web相关知识时对Servlet的一些介绍与个人理解,在Java学习阶段的后期自然是需要使用到Spring、SpringMVC、SpringBoot等框架的,在学习完这些框架的过程中,我意识到框架中我们对浏览器操作的各种方法的本质其实都是Web阶段Servlet的封装,故在这里记录并回顾一下Servlet的内容,望能有更深的体会。
一、Servlet是什么?
Servlet介绍
1.Servlet是sun公司开发动态Web的一门技术
2.sun公司在编写API的时候提供了一个接口叫做:Servlet,如果你想要开发一个Servlet程序,只需要完成以下两个步骤
编写一个类,实现Servlet接口
把开发好的实现了Servlet接口的类部署到WEB服务器中。
Servlet的工作流程可以用下面的图来表示
二、使用Servlet的步骤
1.创建一个Maven项目,然后在pom.xml中导入所需的Jar包
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>compile</scope>
</dependency>
2.编写继承了Servlet的实现类
这里继承HttpServlet 要重写里面的doGet 和doPost方法,这两个方法就是像浏览器发送get或者post请求
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("进入doGet方法");
PrintWriter writer = resp.getWriter();//响应流
writer.print("hello,ligou");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
3.然后把编写的类注册到web.xml文件中
我们需要注册Servlet,并且编写请求Servlet的浏览器请求头,才能查看到对应的效果。
注意,这里servlet-class对应是我们类的路径,<servlet>和<servlet-mapping>中<servlet-name>的值要相同。
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
version="5.0"
metadata-complete="true">
<!-- 注册servlet-->
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.he.servlet.HelloServlet</servlet-class>
</servlet>
<!-- servlet的请求路径-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
4.配置Tomcat
url栏写我们浏览器的访问路径,同时这里要注意要记得在部署栏中引入 war包
引入war包
5.启动项目,在浏览器中查看
首先进入的是我们的index.jsp
当我们在浏览器请求行中输入/hello
成功显示了内容 这个时候我们可以打开F12查看
浏览器发起了请求,传递到我们写的Servlet类中,执行了doGet方法。
总结
Servlet是一个运行了面向请求/ 响应服务器中的网络模块。
请求是客户的一个调用,可能是远程的。 请求包含了客户要发送给服务器的数据。
响应是服务器返回给客户的回答该请求的数据。
Servlet是一个JAVA对象,他以请求为输入,分析其数据,执行一些逻辑运算,并给客户发回一个响应。 另一方面,Servlet作为驻留在服务器端HTTP明白的中间层,它们知道怎样在HTTP中通过RMI或IIOP在EJB和客户之间进行通信。
在Spring框架火热的当今,我们也许不会再接触使用原生的Java Web或者原生的Servlet去编写前后端交互的代码了,但是我们仍然应该学习这部分的内容,正所谓,温故而知新,深入底层,了解原理,是一名程序员提升自我的路上必不可少的环节。