HTTP&Tomcat&Servlet

发布时间 2023-07-07 00:21:08作者: 溯鸣

Web:全球广域网,也称为万维网(www),能够通过浏览器访问的网站。
JavaWeb:是用 Java技术来解决相关web互联网领域的技术栈。

JavaWeb 技术栈

B/S 架构:Browser/Server,浏览器/服务器 架构模式,它的特点是:客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web资源,服务器把Web资源发送给浏览器即可
好处:易于维护升级。服务器端升级后,客户端无需任何部署就可以使用到新的版本。

静态资源:HTML、CSS、JavaScript、图片等。负责页面展现
动态资源:Servlet、JSP 等。负责逻辑处理
数据库:负责存储数据
HTTP协议:定义通信规则
Web服务器:负责解析 HTTP 协议,解析请求数据,并发送响应数据

HTTP

概念:HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则
HTTP 协议特点:
  基于TCP协议:面向连接,安全
  基于请求-响应模型的:一次请求对应一次响应
  HTTP协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的。
    缺点:多次请求间不能共享数据。(Java中使用会话技术(Cookie、Session)来解决这个问题)
    优点:速度快

HTTP-请求数据格式

请求数据分为3部分:
1、请求行:请求数据的第一行。其中GET表示请求方式,/表示请求资源路径,HTTP/1.1表示协议版本
2、请求头:第二行开始,格式为key:value形式。
3、请求体: POST请求的最后一部分,存放请求参数

常见的HTTP 请求头:
  Host: 表示请求的主机名
  User-Agent: 浏览器版本,例如Chrome浏览器的标识类似Mozilla/5.0 ... Chrome/79,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...) like Gecko;
  Accept:表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有;
  Accept-Language:表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
  Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。

GET / HTTP/1.1 
Host: www.itcast.cn 
Connection: keep-alive 
User-Agent: Mozilla/5.0 Chrome/91.0.4472.106
…
POST / HTTP/1.1 
Host: www.itcast.cn 
Connection: keep-alive 
Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 
User-Agent: Mozilla/5.0 Chrome/91.0.4472.106

username=superbaby&password=123456

GET请求和 POST请求区别:
  GET请求请求参数在请求行中,没有请求体。POST请求请求参数在请求体中。
  GET请求请求参数大小有限制,POST没有。

HTTP-响应数据格式

响应数据分为3部分:
1、响应行:响应数据的第一行。其中HTTP/1.1表示协议版本,200表示响应状态码,OK表示状态码描述
2、响应头:第二行开始,格式为key:value形式
3、响应体: 最后一部分。存放响应数据

常见的HTTP 响应头:
  Content-Type:表示该响应内容的类型,例如text/html,image/jpeg;
  Content-Length:表示该响应内容的长度(字节数);
  Content-Encoding:表示该响应压缩算法,例如gzip;
  Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒

HTTP/1.1 200 OK
Server: Tengine
Content-Type: text/html
Transfer-Encoding: chunked…

<html>
<head>
     <title></title>
</head>
<body></body>
</html>

响应状态码:

常见的响应状态码:

Web 服务器 - Tomcat

Web服务器是一个应用程序(软件),对 HTTP协议的操作进行封装,简化开发。让Web开发更加便捷。可以将web项目部署到服务器中,对外提供网上浏览服务。

Tomcat简介

概念: Tomcat是Apache 软件基金会一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范。
JavaEE:Java Enterprise Edition,Java企业版。指Java企业级开发的技术规范总和。包含13项技术规范:JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS、Java IDL、JTS、JTA、JavaMail、JAF
Tomcat 也被称为 Web容器、Servlet容器。Servlet 需要依赖于 Tomcat才能运行
官网:https://tomcat.apache.org/

Tomcat基本使用

下载:官网下载
安装:绿色版,直接解压即可

卸载:直接删除目录即可
启动:双击:bin\startup.bat
控制台中文乱码:修改conf/ logging.properties

关闭:
  直接×掉运行窗口:强制关闭
  bin\shutdown.bat:正常关闭
  Ctrl+C:正常关闭
配置:
  修改启动端口号:conf/server.xml 

  

  注:HTTP协议默认端口号为80,如果将Tomcat端口号改为80,则将来访问Tomcat时,将不用输入端口号
  启动时可能出现的问题:
    1、端口号冲突:找到对应程序,将其关闭掉

    

    2、启动窗口一闪而过:检查JAVA_HOME环境变量是否正确配置
Tomcat 部署项目:
  将项目放置到 webapps 目录下,即部署完成。
  一般 JavaWeb项目会被打成war包,然后将war包放到 webapps目录下,Tomcat会自动解压缩 war文件。

IDEA中创建 Maven Web项目

Web项目结构

Maven Web项目结构:开发中的项目

部署的JavaWeb项目结构:开发完成,可以部署的项目

  1.编译后的Java字节码文件和resources的资源文件,放到WEB-INF下的classes目录下
  2.pom.xml中依赖坐标对应的jar包,放入WEB-INF下的lib目录下

使用骨架

骨架:项目模板
1. 选择web项目骨架,创建项目

2. 删除pom.xml中多余的坐标

3. 补齐缺失的目录结构

不使用骨架

1. 不选择web项目骨架,创建项目

2. pom.xml中添加打包方式为war

3. 补齐缺失的目录结构:webapp

IDEA中使用 Tomcat

集成本地 Tomcat

将本地Tomcat集成到Idea中,然后进行项目部署即可

Tomcat Maven 插件

1、pom.xml 添加 Tomcat插件

<build>
    <plugins>
        <!--Tomcat 插件-->
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
        </plugin>
    </plugins>
</build>
<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>        
        <port>80</port><!--访问端口号-->
        <path>/</path><!--项目访问路径-->
    </configuration>
</plugin>

2、使用Maven Helper 插件快速启动项目,选中项目,右键 --> Run Maven --> tomcat7:run

如果需要断点调试,选择 Debug Maven

Servlet