【Java WEB】Nginx&Tomcat&HTTP协议

个人博客:www.hellocode.top
⭐所有文章均在上方博客首发,其他平台同步更新
本文专栏:《Java Web从入门到实战》
> 如没有Java基础,请先前往《Java零基础指南》专栏学习相应知识
⚡如有问题,欢迎指正,一起学习~~


文章目录

    • Nginx
      • 安装
      • 发布项目
    • 企业开发简介
      • JavaEE规范
      • WEB概述
      • 系统结构
    • Tomcat
      • 服务器
      • Tomcat
      • 基本使用
      • Java WEB项目
      • 配置文件
    • HTTP协议
      • 概述
      • 协议的请求
      • 协议的响应
    • 发布资源案例
      • Servlet介绍


Nginx

  • Nginx是一款服务器软件
  • 其核心功能是可以和服务器硬件相结合,从而可以将程序发布到Nginx服务器上,让更多用户浏览

安装

  1. 上传压缩包:put nginx压缩包位置(CRT中按alt+p键进入sftp)

  2. 解压压缩包:tar -zxvf 压缩包名

  3. 进入解压目录:cd nginx解压目录

  4. 安装依赖环境

    yum -y install pcre pcre-devel

    yum -y install zlib zlib-devel

    yum -y install openssl openssl-devel
    yum -y install gcc

  5. 安装nginx
    ./configure
    make
    make install(安装完会在/usr/local/下有一个nginx目录)

  6. 进入对应目录:cd /usr/local/nginx/sbin

  7. 启动nginx服务:./nginx
    停止:./nginx -s stop
    重启:./nginx -s reload

  8. 查看nginx服务状态:ps -ef | grep nginx

  9. 测试nginx服务:浏览器打开对应Linux服务器ip地址

最后这里在浏览器打开对应ip地址无法访问,解决方法:
第一步,对80端口进行防火墙配置:firewall-cmd --zone=public --add-port=80/tcp --permanent
第二步,重启防火墙服务:systemctl restart firewalld.service
然后重新在浏览器中访问你的ip,应该就可以访问了。

发布项目

  1. /home 下创建一个web目录:mkdir web

  2. 将项目上传到该目录下:put web项目压缩包

  3. 解压项目压缩包:unzip web程序压缩包

  4. 编辑nginx配置文件:vim /home/nginx-1.18.0/conf/nginx.conf
    找到server的大括号范围,修改location的路径
    【Java WEB】Nginx&Tomcat&HTTP协议_第1张图片

  5. 进入对应目录:cd /usr/local/nginx/sbin

  6. 关闭nginx服务:./nginx -s stop

  7. 启动nginx服务并加载配置文件:/usr/local/nginx/sbin/nginx -c/home/nginx-1.18.0/conf/nginx.conf

  8. 通过浏览器测试网站


企业开发简介

JavaEE规范

  • JavaEE(Java Enterprise Edition):Java企业版
  • 它是由SUN公司领导、各个厂家共同制定并得到广泛认可的工业标准。
  • JavaEE早期叫做J2EE,但是没有继续采用其命名规则。J2EE的版本从1.0开始到1.4结束。而JavaEE版本是从JavaEE 5 版本开始,目前最新的版本是JavaEE 8。
  • JavaEE规范是很多Java开发技术的总称。这些技术规范都是沿用自J2EE的。一共包括了13个技术规范。
  • 包括:JDBC, JNDI, EJB, RMI, IDL/CORBA, JSP, Servlet, XML, JMS, JTA, JTS, JavaMail, JAF。

WEB概述

概述

  • WEB在计算机领域中代表的是网络
  • 像我们之前所用的WWW,它是World Wide Web 三个单词的缩写,称为:万维网
  • 网络相关技术的出现是为了让我们在网络的世界中获取资源,这些资源的存放之处,我们把它叫做网站
  • 我们通过输入网站的地址(网址),就可以访问网站中提供的资源(不区分局域网或广域网)

资源分类

  • 静态资源
    网站中提供给人们展示的资源是一成不变的,也就是说不同人或者在不同时间,看到的内容都是一样的。

    作为开发者来说,我们编写的HTML, CSS, JavaScript 都属于静态资源。

  • 动态资源
    网站中提供给人们展示的资源是由程序产生的,在不同的时间或者不同的人由于身份的不同,所看到的内容是不一样的。

    作为网站开发者来说,我们编写的JSP、Servlet等都属于动态资源。

系统结构

在之前的学习中,开发的都是Java工程。这些工程在企业中称之为项目或者产品。都是有系统架构的!

基础结构划分

  • CS结构:(Client Server)客户端+服务器的方式(把不同的应用直接安装在客户端上)
  • BS结构:(Browser Server)浏览器+服务器的方式

技术选型划分

  • Model1模型
  • Model2模型
  • MVC模型
  • 三层架构 + MVC模型

部署方式划分

  • 一体化结构
  • 垂直拆分结构
  • 分布式结构
  • 微服务结构

Tomcat

服务器

服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。

  • 服务器在网络中为其它客户机(如PC机、智能设备等)提供计算或者应用服务。
  • 服务器具有高速的CPU运算能力、长时间的可靠运行、强大的I/O外部数据吞吐能力以及更好的扩展性。

我们这里所说的服务器,其实是web服务器,或者应用服务器。它本质就是一个软件,通过和硬件相结合,从而达到帮助我们来发布应用的功能,让用户通过客户机访问我们的应用。

常用的应用服务器

服务器名称 说明
weblogic 实现了JavaEE规范,重量级服务器,又称为JavaEE容器
websphereAS 实现了JavaEE规范,重量级服务器
JBOSSAS 实现了JavaEE规范,重量级服务器,免费的
Tomcat 实现了jsp/servlet规范,是一个轻量级服务器,开源免费

Tomcat

  • Tomcat是Apache软件基金会的Jakarta项目组中的一个核心项目,由Apache、Sun和其它一些公司及个人共同开发而成。

    由于有了Sun公司的参与和支持,最新的Servlet、JSP规范总能在Tomcat中得到体现。

  • 因为Tomcat技术先进、性能稳定,而且免费,所以深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。
  • Tomcat官网:https://tomcat.apache.org/
  • Tomcat各个版本所需要的支持
    【Java WEB】Nginx&Tomcat&HTTP协议_第2张图片

下载和安装

  • 下载:官网下载
  • 安装:直接解压即可

目录组成

  • bin:一些二进制可执行文件
  • conf:保存配置文件的路径
  • lib:Tomcat在运行过程中所需要的jar包
  • logs:日志文件
  • temp:临时文件
  • webapps:项目发布目录(一个文件夹代表一个web应用)(ROOT代表根项目)
  • work:工作目录

基本使用

  1. 启动
    startup.bat:Windows下启动执行文件
    startup.sh:Linux下启动执行文件

    启动后浏览器访问:http://localhost:8080可以进入欢迎界面(Tomcat默认端口为8080)

  2. 停止
    shutdown.bat:Windows下关闭执行文件
    shutdown.sh:Linux下关闭执行文件

  3. 部署项目
    在webapps目录下创建一个文件夹
    将资源放到该文件夹中
    启动tomcat,输入正确路径

常见问题

  1. 启动问题
    启动窗口一闪而过:没有配置jdk环境变量
    【Java WEB】Nginx&Tomcat&HTTP协议_第3张图片

    java.net.BindException:端口8080被占用

  2. 控制台乱码问题解决
    conf-logging.properties
    修改java.util.logging.ConsoleHandler.encoding = UTF-8

    Tomcat默认UTF-8,CMD命令窗口默认GBK,将UTF-8改为GBK即可解决乱码问题

IDEA集成Tomcat

  1. 点击Run -》 Edit Configurations
  2. 点击Defaults -》 Tomcat Servlet -》 Local
  3. 点击Configure -》Tomcat Home -》 选择tomcat所在路径

Linux下的安装

  1. 上传压缩包到/home路径:put d:/apache-tomcat-9.0.58.tar.gz
  2. 解压压缩包:tar -zxvf 压缩包名
  3. 进入bin目录下:cd apache-tomcat-9.0.58/bin
  4. 启动tomcat服务:./startup.sh
  5. 使用浏览器测试:浏览器打开对应Linux服务器ip地址:8080

Java WEB项目

  1. 新建项目模型,选择Java Enterprise
    确定JDK版本、Appalication Server版本
  2. 右键Add Framework Support…
  3. 勾选Web Appalication选项

项目组成详解

  • src:存放Java源代码
  • web:存放项目相关资源(html、css、js、jsp、图片等)
  • WEB-INFO:存放相关配置的(web.xml等)

IDEA发布项目

  1. 点击Run -》 Edit Configurations
  2. 点击Tomcat Server -》 Deployment
    Application Context是项目访问路径,/代表默认路径,多个项目中只能有一个默认路径
  3. 点击Tomcat Server -》 Server
    设置关联浏览器
    两个Update resources设置
    设置JDK、端口号
  4. 启动Tomcat服务
  5. 验证结果(浏览器)

通过war包发布项目

  1. 在项目的web路径下打war包:jar -cvf myweb.war .
  2. 将打好的war包剪切到tomcat的webapps路径下
  3. 启动tomcat服务,自动解压war包
  4. 验证结果

配置文件

配置默认端口号

主配置文件server.xml

标签中,port属性代表Tomcat默认端口号(8080)
在这里插入图片描述

http协议默认端口号为80,Tomcat默认端口号与其不一致,所以每次访问网站需要加上端口号
如果是80端口,就不需要加端口号
真正发布网站的时候,都需要将tomcat默认端口号改为80,这样在访问网站的时候就不需要加端口号了

配置虚拟目录

作用:可以发布任意目录下的项目

  1. 编辑server.xml 配置文件,找到标签

  2. 加入以下内容

    【Java WEB】Nginx&Tomcat&HTTP协议_第4张图片

path:访问资源的虚拟目录名称(表示在浏览器地址栏中的访问路径)
docBase表示需要发布的项目的真实路径

配置虚拟主机

作用:可以指定访问路径的名称

  1. 编辑 server.xml 配置文件,找到标签
  2. 加入以下内容
    【Java WEB】Nginx&Tomcat&HTTP协议_第5张图片

name:虚拟主机名称
appBase:项目所保存的根路径
unpackWARs:是否自动解压war包
autoDeploy:是否自动发布
Context:同虚拟目录

  1. 修改hosts文件
    绑定IP地址和对应的域名
    文件路径:c:\Windows\System32\drivers\etc
    【Java WEB】Nginx&Tomcat&HTTP协议_第6张图片

HTTP协议

概述

  • HTTP(Hyper Text Transfer Protocol):超文本传输协议
  • HTTP协议是基于 TCP/IP 协议的(安全)
  • 超文本:比普通文本更加强大(还有图片、音频等等)
  • 传输协议:客户端和服务端的通信规则(握手规则)

组成部分

  • 请求:客户端发起请求到服务器
  • 响应:服务器收到客户端的请求后发起响应给客户端

除了手动发起的请求外,JavaScript、CSS、图片等资源会自动发起请求

协议的请求

请求的组成部分

  1. 请求行:请求方式 提交路径(提交参数) HTTP/版本号

  2. 请求头

    名称 说明
    Accept 客户端浏览器所支持的MIME类型
    Accept-Encoding 客户端浏览器所支持的压缩编码格式。最常用的就是gzip压缩
    Accept-Language 客户端浏览器所支持的语言。一般都是zh_CN或en_US等
    Referer 告知服务器,当前请求的来源
    Content-Type 请求正文所支持的MIME类型
    Content-Length 请求正文的长度
    User-Agent 浏览器相关信息
    Connection 连接的状态。Keep-Alive保持连接
    If-Modified-Since 客户端浏览器缓存文件的最后修改时间
    Cookie 会话管理相关,非常的重要
  3. 请求空行:普通换行,用于区分请求头和请求体

  4. 请求体:只有POST提交方式才有请求体,用于显示提交参数

请求的方式

GET

【Java WEB】Nginx&Tomcat&HTTP协议_第7张图片

POST

【Java WEB】Nginx&Tomcat&HTTP协议_第8张图片

只有POST请求方式存在请求体,GET请求方式没有请求体
get提交的参数在请求行中,post提交的参数在请求体中

协议的响应

响应的组成部分

  1. 响应行:请求方式 HTTP/版本号 状态码 状态描述
    常见状态码

    状态码 说明
    200 一切OK
    302/307 请求重定向,两次请求,地址栏发生变化
    304 请求资源未发生变化,使用缓存
    404 请求资源未找到
    500 服务器错误
  2. 响应头

    名称 说明
    Location 请求重定向的地址,常与302,307配合使用
    Server 服务器相关信息
    Content-Type 响应正文的MIME类型
    Content-Length 响应正文的长度
    Content-Disposition 告知客户端浏览器,以下载的方式打开响应正文
    Refresh 定时刷新
    Last-Modified 服务器资源的最后修改时间
    Set-Cookie 会话管理相关,非常的重要
    Expires:-1 服务器资源到客户端浏览器后的缓存时间
    Catch-Control:no-catch 不要缓存
  3. 响应空行:普通换行,用于区分响应头和响应体

  4. 响应体:将资源文件发送给客户端浏览器进行解析


发布资源案例

发布静态资源

  1. 创建一个Java WEB项目

  2. 将静态页面所需资源导入到项目的web目录下

  3. 修改web.xml配置文件,修改默认主页

    
    <welcome-file-list>
        <welcome-file>/路径/文件名.htmlwelcome-file>
    welcome-file-list>
    
  4. 将项目部署到tomcat中

  5. 启动tomcat服务

  6. 打开浏览器查看页面

Servlet介绍

  • Servlet是运行在Java服务器端的程序,用于接收和响应来自客户端基于HTTP协议的请求。
  • 如果想实现Servlet的功能,可以通过实现javax.servlet.Servlet接口或者继承它的实现类。
  • 核心方法:service(),任何客户端的请求都会经过该方法。

发布动态资源

  1. 创建一个JavaWEB项目

  2. 将静态页面所需资源导入到项目的web目录下

  3. 修改web.xml配置文件,修改默认主页

  4. 在项目的src路径下编写一个类,实现Servlet接口

  5. 重写service方法,输出一句话即可

  6. 修改web.xml配置文件,配置servlet相关资源

    
    <servlet>
        <servlet-name>自定义名称servlet-name>
        <servlet-class>java全类名(包名.类名)servlet-class>
    servlet>
    
    
    <servlet-mapping>
        <servlet-name>和声明中的名称保持一致servlet-name>
        <url-pattern>/访问路径(浏览器地址栏要输入的访问路径)url-pattern>
    servlet-mapping>
    
  7. 将项目部署到tomcat中

  8. 启动tomcat服务

  9. 打开浏览器测试功能

执行流程

  1. 通过浏览器访问到指定的资源路径
  2. 通过url-pattern找到对应的name标签
  3. 通过name找到对应的Servlet声明
  4. 在声明中找到对应的Java实现类
  5. 执行service方法

推荐阅读:【Java WEB】Servlet&注解开发

你可能感兴趣的:(Java,WEB从入门到实战,java,开发语言,后端)