![a80629cff9f94b31a1c36340b85add86.png](https://i-blog.csdnimg.cn/blog_migrate/6a903cc04af47dd56815cb31c88ebd38.jpeg)
Servlet是什么
Servlet其实并没有一个明确的定义,习惯上更喜欢称它是一种类似于Server applet的服务端小程序. 程序员为一种技术起名字并不喜欢给一种类似于教科书上的定义,更多的是喜欢描述这门技术是用来干什么的。
Servlet有什么用
在说它有什么用之前我们不妨通过一个例子来说明一下。
如果是在学校生活,最直接的交换信息方式实际上是面对面交流。(在宿舍、在教室)但是如果没有面对面又该如何交换信息,大家都知道,可以用微信、QQ、打电话或者发短信,其实就是借助一种媒介来交换信息。
同样,在互联网,你想要交换信息,除非是两台电脑相隔不远,你可以拿U盘从一台电脑拷贝数据到另一台电脑上实现信息交换。但如果相隔千里,总不可能坐飞机或者坐动车去把U盘交到另一台电脑。所以我们可以把我们电脑的数据映射到URL上,别人通过这个URL就可以访问我们电脑上的数据。URL其实就是一种媒介,而Servlet正是用来将信息映射到一个URL上的。
如何应用Servlet
项目准备
- Intelij Idea
- Tomcat
开始
可以在IDEA中创建一个Web项目
![6d60637d7b5e04fa458d7ed20e16fcc5.png](https://i-blog.csdnimg.cn/blog_migrate/6b7e9d2e522cc536308929a50e313381.jpeg)
结构目录如下:
![7dafa2af8d00881f489fa71e221943d1.png](https://i-blog.csdnimg.cn/blog_migrate/cc31aa33edeaa40261b9e0cd59d5df70.png)
src
:用来存放源代码的地方,也就是在里面可以编写我们的各种类。
web
:存放web应用所需的资源和相关配置文件。
WEB-INF
:也叫部署描述符,存放Sevlet映射URL的配置文件。
1)、创建Hello类实现Servlet接口
![e058144badcf750a88f99eae40cec71d.png](https://i-blog.csdnimg.cn/blog_migrate/55013fd2a10a15f2651363591191184e.jpeg)
从接口中的五个方法我们也可悉知这其实就是Servlet的生命周期。
1. 创建Servlet:构造方法
2. 加载ServletConfig进行初始化:init(servletConfig)
3. 处理业务: service()
4. 销毁:destroy()
我们可以通过在代码中输出到控制台进行验证,代码如下:
import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
public class Hello implements Servlet {
public Hello() {
System.out.println("1.Servlet调用构造方法");
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("2.Servlet调用init方法");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("3.Servlet调用service方法");
PrintWriter printWriter = servletResponse.getWriter();
printWriter.write("Hello World!");
printWriter.flush();
printWriter.close();
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("4.Servlet调用destroy方法");
}
}
我们在之后调用Servlet后可以观看到控制台输出。
2)、编写业务代码
![3d5cc24a2cdb25d809e24137106b338e.png](https://i-blog.csdnimg.cn/blog_migrate/bad81ad55da24078fdc7d83d5e3fdd3e.png)
我们可以通过输出流向浏览器输出字符串Hello World。
3)、在web.xml中完成servlet的映射
![108d922b6379005ab305274f7904104a.png](https://i-blog.csdnimg.cn/blog_migrate/b56b0e0d71ed6bc346291d72cf6d4a51.jpeg)
这里涉及到了标签:<servlet>和<servlet-mapping>
<servlet>用来标识servlet,有两个子标签:
<servlet-name>标签表明servlet的名字,也可以说是个外号。
<servlet-mapping>标签表明servlet的类名,也就是我们前面写的Hello
<servlet-mapping>用来映射URL,有两个子标签:
<servlet-name>和之前同理。
<url-pattern>标签表明servlet映射的URL。
完整含义就是:类名为Hello的Servlet映射的URL是"/hello".
到这我们就已经完成了Servlet的编写。我们可以启动项目,在浏览器的url: http://localhost:8080/context/hello 上可以看到Hello World。(context是项目的上下文路径)
![bc4b159b266e26b96689f3c4df675151.png](https://i-blog.csdnimg.cn/blog_migrate/5ebd6ea490c8c95f6e53669036dbaac5.png)
这时候我们可以看下控制台输出:
![608712d0d0fb6815fb3d4fc94eb923c3.png](https://i-blog.csdnimg.cn/blog_migrate/73903874d8f41959a33af03419047e2a.jpeg)
这就证明了我们前文所说的Servlet生命周期的四步。
全文完。