Java学了也有一段时间了,今天想来聊聊关于Servlet的一些概念,顺便也是对自己这几天学习的总结吧!
首先来谈谈servlet是什么?
作为一个程序员来说,servlet是必须掌握的一个知识点,至少我认为目前来讲还是非常重要,那么它为什么重要呢?简单来讲,因为前端和后端都离不开它,servlet是用来处理请求和相应的一个工具。所以不管作为前端程序员还是后端程序员,都是需要去了解它的。
那么现在让我们进入正题!
刚才说前端和后端都离不开servlet,可能有些晦涩,我来画张图演示一下就明白了
简单理一下思路:
1.客户端发送请求到服务器
2.服务器将请求转发给servlet,让servlet去处理请求
3.那么问题来了,servlet是一个接口,它只能去处理自己的接口实现类请求,所以这里它会将request封装成Httpservletrequest,再去处理
4.之后就是在service方法当中去实现我们的业务逻辑,这里是由后端程序员去做
现在我们来搭建一个实现servlet接口的程序,只需要两步
1.编写一个类,实现servlet接口
2.将写好的程序部署到tomcat上
具体步骤:
1.新建一个maven程序,可以直接在创建的时候导入maven-webapp的模板
2.项目创建完以后等待配置完成
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"
metadata-complete="true">
</web-app>
4.编写一个普通类,继承Httpservlet接口
public class HelloServlet extends HttpServlet {
//由于get或者post只是请求实现的不同方式,可以相互调用,业务逻辑都一样
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("进入了doGet方法");
//ServletOutputStream outputStream = resp.getOutputStream();
PrintWriter writer = resp.getWriter(); // 响应流
writer.print("Hello Servlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
值得一提的是为什么这里是Httpservlet接口,而不是servlet接口,实际上servlet的直接接口实现类是GenericServlet,而HttpServlet是继承了GenericServlet的所有方法。这里不细说了,有兴趣的可以自己去看看源码。
5.很重要的一步,在web.xml当中编写映射文件,
<!-- //注册servlet-->
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.fannnnn.servlet.HelloServlet</servlet-class>
</servlet>
<!-- Servlet的请求路径-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
为什么需要这么配置呢?
‘/hello’是hello程序的请求路径,比如服务开启之后客户端访问访问"主机名+端口号"+"/hello”即可访问hello页面
它是一一对应的关系,由/hello定位到servlet-mapping当中的servlet-name,再有servle-name找到对应的servlet-class,便可以访问到我们的资源了。
6.最后一步就是配置tomcat了,在这里不详细说了。
关于servlet,还有一个比较重要的知识点是servletContext,它可以用来处理请求和相应,很有用的东西,有兴趣的朋友可以自己去了解一些。
最后总结:servlet就是一个用来处理客户端发送过来的请求,在接收到请求之后作一些处理,最后生成相应信息由服务端获取,再由服务器返回给客户端。整个流程图如下:
如果有什么错误的地方,希望大家多多指教!感谢指导