🌟个人博客:www.hellocode.top🌟
⭐所有文章均在上方博客首发,其他平台同步更新
🔥本文专栏:《Java Web从入门到实战》
🌞> 如没有Java基础,请先前往《Java零基础指南》专栏学习相应知识
⚡如有问题,欢迎指正,一起学习~~
文章目录
Nginx
- Nginx是一款服务器软件
- 其核心功能是可以和服务器硬件相结合,从而可以将程序发布到Nginx服务器上,让更多用户浏览
安装
-
上传压缩包:
put nginx压缩包位置
(CRT中按alt+p键进入sftp) -
解压压缩包:
tar -zxvf 压缩包名
-
进入解压目录:
cd nginx解压目录
-
安装依赖环境
yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel
yum -y install gcc
-
安装nginx
./configure
make
make install
(安装完会在/usr/local/下有一个nginx目录) -
进入对应目录:
cd /usr/local/nginx/sbin
-
启动nginx服务:
./nginx
停止:./nginx -s stop
重启:./nginx -s reload
-
查看nginx服务状态:
ps -ef | grep nginx
-
测试nginx服务:浏览器打开对应Linux服务器ip地址
最后这里在浏览器打开对应ip地址无法访问,解决方法:
第一步,对80端口进行防火墙配置:firewall-cmd --zone=public --add-port=80/tcp --permanent
第二步,重启防火墙服务:systemctl restart firewalld.service
然后重新在浏览器中访问你的ip,应该就可以访问了。
发布项目
-
在 /home 下创建一个web目录:
mkdir web
-
将项目上传到该目录下:
put web项目压缩包
-
解压项目压缩包:
unzip web程序压缩包
-
编辑nginx配置文件:
vim /home/nginx-1.18.0/conf/nginx.conf
找到server的大括号范围,修改location的路径
-
进入对应目录:
cd /usr/local/nginx/sbin
-
关闭nginx服务:
./nginx -s stop
-
启动nginx服务并加载配置文件:
/usr/local/nginx/sbin/nginx -c/home/nginx-1.18.0/conf/nginx.conf
-
通过浏览器测试网站
企业开发简介
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各个版本所需要的支持
下载和安装
- 下载:官网下载
- 安装:直接解压即可
目录组成
- bin:一些二进制可执行文件
- conf:保存配置文件的路径
- lib:Tomcat在运行过程中所需要的jar包
- logs:日志文件
- temp:临时文件
- webapps:项目发布目录(一个文件夹代表一个web应用)(ROOT代表根项目)
- work:工作目录
基本使用
-
启动
startup.bat
:Windows下启动执行文件
startup.sh
:Linux下启动执行文件启动后浏览器访问:http://localhost:8080可以进入欢迎界面(Tomcat默认端口为8080)
-
停止
shutdown.bat
:Windows下关闭执行文件
shutdown.sh
:Linux下关闭执行文件 -
部署项目
在webapps目录下创建一个文件夹
将资源放到该文件夹中
启动tomcat,输入正确路径
常见问题
-
启动问题
启动窗口一闪而过:没有配置jdk环境变量
java.net.BindException:端口8080被占用
-
控制台乱码问题解决
conf-logging.properties
修改java.util.logging.ConsoleHandler.encoding = UTF-8
Tomcat默认UTF-8,CMD命令窗口默认GBK,将UTF-8改为GBK即可解决乱码问题
IDEA集成Tomcat
- 点击Run -》 Edit Configurations
- 点击Defaults -》 Tomcat Servlet -》 Local
- 点击Configure -》Tomcat Home -》 选择tomcat所在路径
Linux下的安装
- 上传压缩包到/home路径:
put d:/apache-tomcat-9.0.58.tar.gz
- 解压压缩包:
tar -zxvf 压缩包名
- 进入bin目录下:
cd apache-tomcat-9.0.58/bin
- 启动tomcat服务:
./startup.sh
- 使用浏览器测试:浏览器打开对应Linux服务器ip地址:8080
Java WEB项目
- 新建项目模型,选择Java Enterprise
确定JDK版本、Appalication Server版本 - 右键Add Framework Support…
- 勾选Web Appalication选项
项目组成详解
- src:存放Java源代码
- web:存放项目相关资源(html、css、js、jsp、图片等)
- WEB-INFO:存放相关配置的(web.xml等)
IDEA发布项目
- 点击Run -》 Edit Configurations
- 点击Tomcat Server -》 Deployment
Application Context是项目访问路径,/代表默认路径,多个项目中只能有一个默认路径 - 点击Tomcat Server -》 Server
设置关联浏览器
两个Update resources设置
设置JDK、端口号 - 启动Tomcat服务
- 验证结果(浏览器)
通过war包发布项目
- 在项目的web路径下打war包:
jar -cvf myweb.war .
- 将打好的war包剪切到tomcat的webapps路径下
- 启动tomcat服务,自动解压war包
- 验证结果
配置文件
配置默认端口号
主配置文件server.xml
<Connector>
标签中,port属性代表Tomcat默认端口号(8080)
http协议默认端口号为80,Tomcat默认端口号与其不一致,所以每次访问网站需要加上端口号
如果是80端口,就不需要加端口号
真正发布网站的时候,都需要将tomcat默认端口号改为80,这样在访问网站的时候就不需要加端口号了
配置虚拟目录
作用:可以发布任意目录下的项目
-
编辑server.xml 配置文件,找到
<Host>
标签 -
加入以下内容
<Context path="/mytest" docBase="e:/test" />
path
:访问资源的虚拟目录名称(表示在浏览器地址栏中的访问路径)
docBase
表示需要发布的项目的真实路径
配置虚拟主机
作用:可以指定访问路径的名称
- 编辑 server.xml 配置文件,找到
<Engine>
标签 - 加入以下内容
name
:虚拟主机名称
appBase
:项目所保存的根路径
unpackWARs
:是否自动解压war包
autoDeploy
:是否自动发布
Context
:同虚拟目录
- 修改hosts文件
绑定IP地址和对应的域名
文件路径:c:\Windows\System32\drivers\etc
HTTP协议
概述
- HTTP(Hyper Text Transfer Protocol):超文本传输协议
- HTTP协议是基于 TCP/IP 协议的(安全)
- 超文本:比普通文本更加强大(还有图片、音频等等)
- 传输协议:客户端和服务端的通信规则(握手规则)
组成部分
- 请求:客户端发起请求到服务器
- 响应:服务器收到客户端的请求后发起响应给客户端
除了手动发起的请求外,JavaScript、CSS、图片等资源会自动发起请求
协议的请求
请求的组成部分
-
请求行:请求方式 提交路径(提交参数) HTTP/版本号
-
请求头
名称 说明 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 会话管理相关,非常的重要 -
请求空行:普通换行,用于区分请求头和请求体
-
请求体:只有POST提交方式才有请求体,用于显示提交参数
请求的方式
GET
POST
只有POST请求方式存在请求体,GET请求方式没有请求体
get提交的参数在请求行中,post提交的参数在请求体中
协议的响应
响应的组成部分
-
响应行:请求方式 HTTP/版本号 状态码 状态描述
常见状态码状态码 说明 200 一切OK 302/307 请求重定向,两次请求,地址栏发生变化 304 请求资源未发生变化,使用缓存 404 请求资源未找到 500 服务器错误 -
响应头
名称 说明 Location 请求重定向的地址,常与302,307配合使用 Server 服务器相关信息 Content-Type 响应正文的MIME类型 Content-Length 响应正文的长度 Content-Disposition 告知客户端浏览器,以下载的方式打开响应正文 Refresh 定时刷新 Last-Modified 服务器资源的最后修改时间 Set-Cookie 会话管理相关,非常的重要 Expires:-1 服务器资源到客户端浏览器后的缓存时间 Catch-Control:no-catch 不要缓存 -
响应空行:普通换行,用于区分响应头和响应体
-
响应体:将资源文件发送给客户端浏览器进行解析
发布资源案例
发布静态资源
-
创建一个Java WEB项目
-
将静态页面所需资源导入到项目的web目录下
-
修改web.xml配置文件,修改默认主页
<!--在web.xml中加入--> <welcome-file-list> <welcome-file>/路径/文件名.html</welcome-file> </welcome-file-list>
-
将项目部署到tomcat中
-
启动tomcat服务
-
打开浏览器查看页面
Servlet介绍
- Servlet是运行在Java服务器端的程序,用于接收和响应来自客户端基于HTTP协议的请求。
- 如果想实现Servlet的功能,可以通过实现javax.servlet.Servlet接口或者继承它的实现类。
- 核心方法:service(),任何客户端的请求都会经过该方法。
发布动态资源
-
创建一个JavaWEB项目
-
将静态页面所需资源导入到项目的web目录下
-
修改web.xml配置文件,修改默认主页
-
在项目的src路径下编写一个类,实现Servlet接口
-
重写service方法,输出一句话即可
-
修改web.xml配置文件,配置servlet相关资源
<!--Servlet声明--> <servlet> <servlet-name>自定义名称</servlet-name> <servlet-class>java全类名(包名.类名)</servlet-class> </servlet> <!--Servlet映射--> <servlet-mapping> <servlet-name>和声明中的名称保持一致</servlet-name> <url-pattern>/访问路径(浏览器地址栏要输入的访问路径)</url-pattern> </servlet-mapping>
-
将项目部署到tomcat中
-
启动tomcat服务
-
打开浏览器测试功能
执行流程
- 通过浏览器访问到指定的资源路径
- 通过url-pattern找到对应的name标签
- 通过name找到对应的Servlet声明
- 在声明中找到对应的Java实现类
- 执行service方法