从一个servlet转发到另一个servlet_Servlet初体验:编写第一个Servlet应用

dbf6137782b363c53133f97d943eacc7.png

Servlet是什么

Servlet其实并没有一个明确的定义,习惯上更喜欢称它是一种类似于Server applet的服务端小程序. 程序员为一种技术起名字并不喜欢给一种类似于教科书上的定义,更多的是喜欢描述这门技术是用来干什么的。

Servlet有什么用

在说它有什么用之前我们不妨通过一个例子来说明一下。
如果是在学校生活,最直接的交换信息方式实际上是面对面交流。(在宿舍、在教室)但是如果没有面对面又该如何交换信息,大家都知道,可以用微信、QQ、打电话或者发短信,其实就是借助一种媒介来交换信息。
同样,在互联网,你想要交换信息,除非是两台电脑相隔不远,你可以拿U盘从一台电脑拷贝数据到另一台电脑上实现信息交换。但如果相隔千里,总不可能坐飞机或者坐动车去把U盘交到另一台电脑。所以我们可以把我们电脑的数据映射到URL上,别人通过这个URL就可以访问我们电脑上的数据。URL其实就是一种媒介,而Servlet正是用来将信息映射到一个URL上的。

如何应用Servlet

项目准备

  • Intelij Idea
  • Tomcat

开始

可以在IDEA中创建一个Web项目

23745630f340e4fd500175451d2b0c9b.png

结构目录如下:

bf64324f7422255986a126a7c69e3de5.png

src :用来存放源代码的地方,也就是在里面可以编写我们的各种类。

web:存放web应用所需的资源和相关配置文件。

WEB-INF:也叫部署描述符,存放Sevlet映射URL的配置文件。

1)、创建Hello类实现Servlet接口

282aa7e8a68a552d7e6e214ddd16c626.png

从接口中的五个方法我们也可悉知这其实就是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)、编写业务代码

d496f4da3e31429e797dea429b83472e.png

我们可以通过输出流向浏览器输出字符串Hello World。

3)、在web.xml中完成servlet的映射

48bc75e8d543bc647a1e00b1c67da7ed.png

这里涉及到了标签:<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是项目的上下文路径)

033cc78db04c68731ab39e0bb043c4e5.png

这时候我们可以看下控制台输出:

f42622a4ddda4ac10ba0b7298effb7bf.png

这就证明了我们前文所说的Servlet生命周期的四步。

全文完。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值