JavaWeb 七个步骤,完成一个servlet的hello world程序

Servlet 是一种实现动态页面的技术,是一组 Tomcat 提供给程序猿的 API,帮助程序猿简单高效的开发一
个 web app

动态页面 vs 静态页面:

  • 静态页面也就是内容始终固定的页面,即使 用户不同/时间不同/输入的参数不同 , 页面内容也不会发生
    变化 (除非网站的开发人员修改源代码,否则页面内容始终不变)
  • 对应的,动态页面指的就是 用户不同/时间不同/输入的参数不同页面内容会发生变化

构建动态页面的技术有很多,每种语言都有一些相关的库 / 框架来做这件事
Servlet 就是 Tomcat 这个 HTTP 服务器提供给 Java 的一组 API,来完成构建动态页面这个任务

Servlet 主要做的工作:

  • 允许程序猿注册一个类,在 Tomcat 收到某个特定的 HTTP 请求的时候,执行这个类中的一些代码
  • 帮助程序猿解析 HTTP 请求,把 HTTP 请求从一个字符串解析成一个 HttpRequest 对象
  • 帮助程序猿构造 HTTP 响应,程序猿只要给指定的 HttpResponse 对象填写一些属性字段,Servlet
  • 就会自动的安装 HTTP 协议的方式构造出一个 HTTP 响应字符串,并通过 Socket 写回给客户端

简而言之,Servlet 是一组 Tomcat 提供的 API, 让程序猿自己写的代码能很好的和 Tomcat 配合起来,从而更简单的实现一个 web app
而不必关注 Socket,HTTP协议格式,多线程并发等技术细节,降低了 web app 的开发门槛,提高了开发效率


Hello World!

1、创建一个 maven 项目

在这里插入图片描述


2、引入依赖

需要在代码中引入 Servlet api,这个 api 不是 JDK 内置的,而是第三方 (Tomcat 提供的)
Tomcat 相对于 Java 官方来说,仍然属于第三方

借助 maven 直接就能引入,搜索 servlet 第一个就是,

在这里插入图片描述

使用此版本:

在这里插入图片描述

JDK,Tomcat,Servlet 版本要配套,如果版本不太配套,可能就存在一些问题~~
(不是完全用不了,大概率是大部分功能都正常,但是少数功能有 bug )

  • JDK 8
  • Tomcat 8.5
  • Servlet 3.1

maven 默认仓库的位置:

在这里插入图片描述

在这里插入图片描述


3、创建目录结构

  • 虽然当下 maven 帮我们创建了一些目录,但是还不够,还不足以支撑咱们写一个 Servlet 项目,
  • 因此需要手动的再创建一些目录和文件出来~~
    也有更简单的办法,但是此处先不介绍,先用最朴素的方式,手动搞好

——在 main 下创建一个目录 webapp 。Tomcat 可以同时加载多个 webapp 的,因此目录是 webapps 的 (每个 webapp 就相当于一个网站了),因为此处咱们写的是一个 webapp 就没有 s

——第二个目录 WEB-INF

——创建文件 web.xml

在这里插入图片描述

接下来,需要给 web.xml 中写点内容 (不能是空着的)

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>
</web-app>

4、编写 Servlet 代码

// 如果代码中找不到 HttpServlet 这个类 说明依赖没有被正确引入
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // super.doGet(req, resp);
    }
}

do:处理
Get 对应到 HTTP 的 GET 方法
这个方法就是在 Tomcat 收到了一个 HTTP GET 请求 的时候,会被 Tomcat 调用到 (回调函数)

HttpServletRequest :代表一个 HTTP 请求 (Tomcat 已经收到了,已经解析成对象了)

HttpServletResponse :代表着 HTTP 响应 (当前这里的 resp 是一个空的响应对象,需要在代码中给这个对象设置一些属性的)

doGet 方法要做的工作,就是根据请求,计算生成响应~~

一个服务器的工作流程,就可以分成三个典型的步骤:

  1. 接收请求并解析
  2. 根据请求计算响应
  3. 构造响应数据,并返回给客户端

其中,1 3 这两步,Tomcat 已经帮我们做好了,这个就是咱们程序猿自己要实现的逻辑,也就是 doGet 要实现的内容~~

服务器想象成一个餐馆~~
服务器上运行的代码,就要处理一个一个的请求~~

当老板收到 “来份炸酱面” 这个请求之后,后厨就行动起来了,根据客户提出的要求,来把这个炸酱面给做出来~

后厨这里,有个师傅负责切菜,有个师傅负责拉面,再有个师傅负责炸酱,再来个师傅把这里的结果给进行集成~~

服务员就可以把这份面端给我了~~

这三个师傅并发的工作,相当于三个线程!!

@WebServlet("/hello")
// 如果代码中找不到 HttpServlet 这个类 说明依赖没有被正确引入
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 这个代码一定要干掉! 不能调用父类的 doGet!
        // super.doGet(req, resp);

        // 这是让服务器在自己的控制台里打印
        System.out.println("hello world!");

        // 在页面上也能打印,把 hello world! 字符串放到 http 响应的 body 中,浏览器就会把 body 的内容显示到页面上
        resp.getWriter().write("hello word!" + System.currentTimeMillis());
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值