纸上谈servlet
Updated:
Servlet是什么
简单来说,Servlet就是一个类,鹅以〒▽〒
- 那那那那详细一点呢?
- 详细一点就!就该放链接了 :
https://www.zhihu.com/question/21416727
下面的第一个回答 感觉写得贼好(`・ω・´)
- 详细一点就!就该放链接了 :
- 嗷~能不能概括一下的呢?
- 概括一下就是,Servlet是个接口,我们要通过实现接口中的方法来明确初始化时、销毁时、接受到请求时要做什么
- 但是呢servlet本身是不和客户端打交道的,真·打交道的是最外面那层容器 –> Tomcat
- Tomcat负责监听端口之类的,在请求过来之后,就根据URL等信息,确定要将请求交给哪个servlet去处理
- 然后就调用那个Servlet的service方法,该service方法返回一个response对象,Tomcat再把这个对象返回给客户端
- 最后放张容器之间的包含关系
- HOST:主机;Content :上下文
- HOST:主机;Content :上下文
servlet执行流程和生命周期
- 以Get请求为例的执行流程
- 注 :
- 点击超链接进行提交 –> 可视为Get请求
- 通过表单进行提交 –> 可视为POST请求
- 具体流程如下 :
- 用户点击超链接(访问URL),向服务器提交请求
- 服务器收到请求后,在web.xml中寻找与之对应的URL地址
- 找到符合的URL之后,就可以知道是给哪个servlet处理啦
- 然后根据这个它的名字,去 < servlet > 标签中找到对应的Servlet处理类
- 最后由提交时的请求方式,执行对应的方法(比如说是通过超链接,也就是GET方式提交的,就会去执行doGet方法)
- 放张图就明白啦 :
- 注 :
- servlet的生命周期
- 生命周期的三个阶段 :
- 初始化阶段 –>
加载并实例化这个类,调用init()方法进行初始化 - 活动阶段 –>
响应客户端的请求,调用service()方法,再由service()方法来根据提交是的请求方式决定是执行doGet()还是doPost() - 销毁阶段 –>
终止服务,调用destroy()方法进行销毁
- 初始化阶段 –>
- 依惯例放图 :
- 生命周期的三个阶段 :
自己写一个servlet (骗人)
- 编写servlet的三个步骤
- 继承HttpServlet
- 重写doGet()或doPost()方法
- 在web.xml中注册这个Servlet
- 写Servlet这个类时的注意事项
- 重写方法的时候要注意这两个输出 :
- System.out.println() :在控制台输出
- out.println() :在HTML页面输出
- out其实不是out是PrintWriter :
- PrintWriter out = response.getWriter();
- 以及在HTML页面输出的时候要指定输出类型 :
- response.setContentType(“text/html;charset=utf-8”);
- 最后还是放个图,
其实啥也没干的doGet() :
- 重写方法的时候要注意这两个输出 :
- 注册这个Servlet
- 要配置的两个标签 :
- < servlet >
- < servlet-mapping >
- 具体来说是这样的:
1
2
3
4
5
6
7
8<servlet>
<servlet-name>Servlet类名</servlet-name>
<servlet-class>Servelt所在包名.类名</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet类名</servlet-name>
<url-pattern>URL请求路径</url-pattern>
</servlet-mapping>
- 要配置的两个标签 :
最后的最后
- 其实Servlet有超多可以钻研的地方来着
- 但是算惹 小可爱学不动了啦!
- 让我们梦里再谈叭 (`・ω・´) 掰掰~