TomCat与Servlet

Tomcat详解

1.1Tomcat是什么

HTTP服务器是在TCP服务器的基础上,添加了一些额外的功能,让其能够解析请求中的HTTP报文,并将请求转换为结构化数据(对象),方便构造HTTP的响应.
而Tomcat是Java圈子里面最出名的一中HTTP服务器

1.2Tomcat下载

https://tomcat.apache.org/

注:要下载与自己JDK-相对应的版本,(小版本无所谓).
注:选择其中zip的压缩包,下载解压缩时候的目录最好不要带"中文"或者特殊符号
在这里插入图片描述
下载完成后-找到对应的文件目录-这里具体解释下目录作用

①bin目录下主要为:Tomcat的一些脚本-重要点为:start,开启Tomcat文件


.bat的后缀的文件,是Windows的批处理文件 .
sh后缀的文件,是Linux的shell的脚本文件

在这里插入图片描述

②conf 里面主要是 Tomcat的一些配置文件,这些配置文件是通过xml的形式来组织的.而想要修改配置文件在这个里面修改
在这里插入图片描述

③logs文件夹下主要是Tomcat的运行日志

④webapps 里面主要防止部署的Servlet程序,每个Servlet程序,都是一个war后缀的文件.而Tomcat会自动把这个war解压缩,得到一个目录
在这里插入图片描述

在这里插入图片描述

注: Tomcat安装好,输入这个127.0.0.1:8080网址会出现,Tomcat的默认欢迎页面

在这里插入图片描述

1.3启动Tomcat

在bin目录下点击,startup.bat(windows操作系统下),下面这句话代表着Tomcat启动成功
至于为什么会是乱码,原因为:Tomcat内部编码方式是UTF-8,而Windows中的CMD默认为GBK编码方式(如果想改,得去修改注册表中(慎重))

Tomcat启动不成功的原因

①环境变量的问题-有可能是找不到JDK-解决办法,把脚本扔到CMD中找到环境变量手动配置
下图是环境变量
在这里插入图片描述
②端口号被占用,Tomcat一般启动绑定俩个端口号8080,8005如果端口号被占用那么Tomcat一定会启动失败,解决方案:关闭开启占用了8080,8005的端口程序,或者给Tomcat换个端口在之前的conf中找到配置文件修改

访问HTML的俩种方式

①通过Tomcat访问-别人可以访问-需要外网IP(如何最简单得到一个外网IP-买一个云服务器)
②通过本地路径-别人不能访问

1.4Tomcat的使用方法

;主要部署HTML页面,

简单的页面直接放到,Webapps中的root中
而复杂的页面更好的做法是:直接在Webapps中创建一个目录
以上是基于Tomcat来部署静态页面,页面内容是固定不变的,而Tomcat主要为生成动态页面代培Servlet来创建

静态页面和动态页面

注:**静态页面:**指的是即使用户不同/时间不同/输入的参数不同 , 页面内容也不会发生变化.
注:动态页面:指的就是 用户不同/时间不同/输入的参数不同, 页面内容会发生变化

部署静态页面

将之前的HTML文件创建一个文件夹,扔到Webapps中,然后在浏览器中输入环回地址,进行访问

http://127.0.0.1:8080/HelloApp/hello2.html

在这里插入图片描述

这里博主还没有云服务器,等买上了再写动态与利用服务器访问

Tomcat的作用

1.通过本地文件的方式只能打开静态页面, Tomcat 既可以处理静态页面, 也可以处理动态页面.
2. 本地文件的方式只能打开你自己机器上的 HTML, 无法访问别人机器的 HTML. 而通过Tomcat, 配合云服务器, 则可以让别人也访问到你的页面.

Servlet-使用方法

2.1Servlet前置知识

2.1.1Servlet是什么,有什么用?

上文提到了,Tomcat主要为部署动态页面的作用,而Servlet就是一种实现动态页面的技术,是Tomcat提供给程序员的API,能帮助咱们高效开发.

2.1.2 Servlet提供的功能

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

2.1.3Servlet的意义

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

2.2 Servlet的搭配环境

2.2.1 MAVEN

maven是Java生态中著名的构建工具:核心功能:(管理依赖,构建/编译,打包)就是将这些操作一键打包

2.2.1.1 下载maven

https://maven.apache.org/

2.2.1.2 使用maven

1:创建1个maven项目

在这里插入图片描述

2:引入依赖:把Servlet的jar包给引入过来(JDK,Tomcat,Servlet三者版本要配套 )

在这里插入图片描述

3:创建目录结构:webapp/WEB-INF/web.xml 这个.xml是maven的核心配置文件
这些目录中:
①src 表示源代码所在的目录
②main/java 表示源代码的根目录. 后续创建 .java 文件就放到这个目录中.
③main/resources 表示项目的一些资源文件所在的目录. 此处暂时不关注.
④test/java 表示测试代码的根目录. 此处暂时不关注
⑤用来进行交互,在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.使用maven:这里面所列出来的内容都是可以通过maven操作的 其中:最常用Packet打包操作

在这里插入图片描述

5:maven管理依赖-一个项目可以引入多个依赖

中央仓库

①先去中央仓库,找到驱动包

中央仓库链接:   https://mvnrepository.com/repos/central

②然后把maven标签下的xml赋值下来
在这里插入图片描述

③把这个内容粘贴到pom.xml
在这里插入图片描述
④如果看到下图,说明maven依赖引入成功
在这里插入图片描述

3. 编写servlet代码

前置条件-在刚才的Maven项目中,或者新建一个maven项目并且按照上述流程配置
>

①创建一个类,继承自HTTPServlet


②重写里面的doGet/doPost等方法:该方法的参数有两个, 分别表示收到的 HTTP 请求 和要构造的 HTTP 响应. 这个方法会在 Tomcat 收到 GET 请求时触发


③需要给这个类加上一个@WebServlet注解(这个注解表示 Tomcat 收到的请求中, 路径 相同的请求才会调用 HelloServlet 这个类的代码).


④ 服务器的工作流程
  1:接受请求并响应
  2:根据请求计算响应-代码要完成的
  3:构造响应函数,并返回给客户端


⑤:打包-使用maven来打包,1.先修改下pom.xml的配置,改成war.打包的文件名,
在这里插入图片描述


⑥:部署,把war包拷贝到Tomcat的webapps中下面,然后启动 Tomcat , Tomcat 就会自动把 war 包解压缩
在这里插入图片描述


⑦:在网页上面输入127.0.0.1:8080/第一级目录(context path)/第二级目录(Servlet path)
(博主的画图能力实在有限)
在这里插入图片描述


注: smart Tomcat 可以包装5/6操作,变成一键操作

服务器编写代码如下

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/hello")
//将这个helloServlet这个类,与http请求中的URL里面带有/hello这样的请求给关联起来了
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        /*不能调用父类的duget*/
       // super.doGet(req, resp);

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

        //让在页面上输出getWrite返回了一个write对象,write是往http响应的body中写入
        resp.getWriter().write("hello world"+"时间戳"+System.currentTimeMillis());
    }
}

Servlet更方便的提交方式

手动拷贝 war 包到 Tomcat 的过程比较麻烦. 我们还有更方便的办法. 此处我们使用 IDEA 中的 Smart Tomcat 插件完成这个工作

安装步骤

在这里插入图片描述

在这里插入图片描述
③ 重启IDEA
④点击这里增加插件
在这里插入图片描述
⑤配置smart Tomcat

在 Tomcat Server 这一栏选择 Tomcat 所在的目录. 其他的选项不必做出修改.

在这里插入图片描述

⑥点击绿色的三角号, IDEA 就会自动进行编译, 部署, 启动 Tomcat 的过程.
在这里插入图片描述
⑦在浏览器中使用 http://127.0.0.1:8080/一级地址/二级地址 访问页面

常见的访问出错及解决原因

①出现404:
  404 表示用户访问的资源不存在. 大概率是 URL 的路径写的不正确.
  查看一级路径与二级路径及web.xml中的内容
②出现405
  405 表示对应的 HTTP 请求方法没有实现.
  查看doGet/doPost请求
③出现500
  往往是 Servlet 代码中抛出异常导致的.
  仔细查看报错信息在这里插入图片描述
④出现空白页面
  没有增加写入操作resp.getWritter().write() 操作.
⑤出现无法访问网站
  一般是 Tomcat 启动就失败了

3.1什么时候浏览器发的是Get请求?

①直接在地址栏中,输入URL
②通过 a 标签跳转
③通过 img/link/script
④通过form表单,method指定为get
⑤通说Ajax ,type指定为Get

3.2什么时候浏览器发送的post请求?

④通过form表单,method指定为post
⑤通说Ajax ,type指定为post

Servlet运行原理
Servlet是属于上层建筑,下面的传输层,网络层,数据链路层…属于经济基础
Tomcat也是一个应用程序,运行在用户态的普通进程(也是Java进程)
用户写的代码(根据请求计算响应),通过Servlet与Tomcat进行交互
Tomca在进一步的和浏览器之间进行网络传输,仍然是封装和分用

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值