javaweb 笔记
1.1、前言
web开发:
-
web,网页的意思,www.baidu.com·
-
静态web
-
html,sss
-
提供给所有人看的数据始终不会发生变化!
-
-
动态web
-
淘宝,几乎是所有的网站;
-
提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息各不相同!
-
技术栈:Servlet/ISP,ASP,PHP
-
1.2、web应用程序web应用程序:
可以提供浏览器访问的程序;
-
a.html、b.html.….多个web资源,这些web资源可以被外界访问,对外界提供服务;
-
你们能访问到的任何一个页面或者资源,都存在于这个世界的某一个角落的计算机上。
-
URL
-
这个统一的web资源会被放在同一个文件夹下,web应用程序>Tomcat:服务器
-
一个web应用由多部分组成(静态web,动态web)
-
html,sss,is
-
jsp,servlet
-
Java程序
-
jar包
-
配置文件(Properties)
-
Web酸用程序编写完毕后,若想提供给外界访问;需费一个服务蔬来统一管理
1.3、静态web
-
*.htm, *.html这些都是网员的后境、如果服务器上一直存在这些东四,我们就可以直接进行读取、需要网络;
-
![在这里插入图片描述]()
-
静态web存在的缺点
-
Web页面无法动态更新,所有用户看到都是同一个页面
-
轮播图,点击特效:伪动态
-
JavaScript[实际开发中,它用的最多]
-
VBScript
-
-
它无法和数据库交互(数据无法持久化,用户无法交互)
-
1.4、 动态web
页面会动态展示,“web页面的展示效果因人而异”
缺点:
-
加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布;
-
停机维护优点:
-
-
Web页面可以动态更新,所有用户看到都不是同一个页面
-
它可以与数据库交互(数据持久化:注册,商品信息,用户信息………)
![在这里插入图片描述]()
2、web服务器
2.1、技术讲解
ASP:
-
微软:国内最早流行的就是ASP;
-
·在HTML中嵌入了VB的脚本,ASP+COM;
-
·在ASP开发中,基本一个页面都有几干行的业务代码,页面极其换乱
-
·维护成本高!
-
C#
-
IIS
php:
-
PHP开发速度很快,功能很强大,跨平台,代码很简单(70%,WP)
-
·无法承载大访问量的情况(局限性)
jSP/Servlet: B/S;浏览和服务器C/S:客户端和服务器
-
sun公司主推的B/S架构
-
基于Java语言的(所有的大公司,或者一些开源的组件,都是用Java写的)
-
可以承载三高问题带来的影响;
-
语法像ASP,ASP->JSP,加强市场强度;
2.2、web服务器
服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息; lIS 微软的;ASP.,Windows中自带的 Tomcat
面向百度编程: Tomcat是Apache 软件基金会(Apache Software Foundation)的jakarta项目中的一个核心项目,最新的Servlet 和ISP 规范总是能在Tomcat中得到体现,因为Tomcat 技术先进、性能稳定,而且免费,因而深受lava爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试ISP程序的首选。对于一个Java初学web的人来说,它是最佳的选择
Tomcat 实际上运行JSP页面和Serlet。Tornct最新版易9.0
工作3-5年之后,可以尝试手写Tomcat服务器;
下载tomcat:
-
安装or解压
-
了解配置文件及目录结构
-
这个东西的作用
3、Tomcat
3.1安装tomcat tomcat

3.2、Tomcat启动和配置
文件夹作用: 
访问测试:http://localhost:8080/ 可能遇到的问题:
-
Java环境变量没有配置
-
闪退问题:需要配置兼容性
-
乱码问题:配置文件中设置
可以修改 conf/logging.properties 中的 java.util.logging.ConsoleHandler.encoding = GBK 解决乱码问题
3.3、配置

可以配置启动的端口号
-
tomcat的默认端口号为:8080
-
mysql:3306
-
http:80
-
https:443
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
可以配置主机的名称
-
默认的主机名为:localhost->127.0.0.1
-
默认网站应用存放的位置为:webapps
<Host name="www.qinjiang.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
高难度面试题:
-
输入一个域名;回车
-
检查本机的C:\Windows\System32\drivers\etc\hosts配置文件下有没有这个域名映射;
-
有:直接返回对应的ip地址,这个地址中,有我们需要访问的web程序,可以直接访问
127.0.0.1 www.qinjiang.com-
1
-
-
没有:去DNS服务器找,找到的话就返回,找不到就返回找不到;
![在这里插入图片描述]()
-
4.可以配置一下环境变量(可选性)
3.4、发布一个web网站
不会就先模仿
-
将自己写的网站,放到服务器(Tomcat)中指定的web应用的文件夹(webapps)下,就可以访问了
-
![img]()
网站应该有的结构
--webapps :Tomcat服务器的web目录
-ROOT
-kuangstudy :网站的目录名
- WEB-INF
-classes : java程序
-lib:web应用所依赖的jar包
-web.xml :网站配置文件
- index.html 默认的首页
- static
-css
-style.css
-js
-img
-.....
HTTP协议:面试 Maven:构建工具
-
Maven安装包
Servlet入门
-
HelloWorld!
-
Servlet配置 ·原理
4、Http
4.1、什么是HTTPHTTP
(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。
-
文本:html,字符串,…
-
超文本:图片,音乐,视频,定位,地图.……
-
端口:80
Https:安全的
4.2、两个时代
http/1.1请求一次资源可以连续获取多个web资源,不需要每次获取一个web资源就必须再次连接一次
-
http1.0
-
HTTP/1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接。这是一种短链接
-
-
http2.0
-
HTTP/1.1:客户端可以与web服务器连接后,可以获得多个web资源。这是一种长连接。
-
-
4.3、Http请求
-
客户端–发请求(Request)–服务器
百度:
Request URL:https://www.baidu.com/ 请求地址
Request Method:GET get方法/post方法
Status Code:200 OK 状态码:200
Remote(远程) Address:14.215.177.39:443
Accept:text/html
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.9 语言
Cache-Control:max-age=0
Connection:keep-alive
1、请求行
-
请求行中的请求方式:GET
-
请求方式:Get,Post,HEAD,DELETE,PUT,TRACT.…
-
get:请求能够携带的参数比较少,大小有限制,会在浏览器的URL地址栏显示数据内容,不安全,但高效
-
post:请求能够携带的参数没有限制,大小没有限制,不会在浏览器的URL地址栏显示数据内容,安全,但不高效。
-
2、消息头
Accept:告诉浏览器,它所支持的数据类型
Accept-Encoding:支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-Language:告诉浏览器,它的语言环境
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成是断开还是保持连接
HOST:主机..../.
4.4、Http响应
-
服务器–响应…….客户端
百度:
Cache-Control:private 缓存控制
Connection:Keep-Alive 连接
Content-Encoding:gzip 编码
Content-Type:text/html 类型
1、响应体
Accept:告诉浏览器,它所支持的数据类型
Accept-Encoding:支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-Language:告诉浏览器,它的语言环境
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成是断开还是保持连接
HOST:主机..../.
Refresh:告诉客户端,多久刷新一次;
Location:让网页重新定位;
2、响应状态码
200:请求响应成功200 3xx:请求重定向·重定向:你重新到我给你新位置去; 4xx:找不到资源404·资源不存在; 5xx:服务器代码错误 500 502:网关错误
常见面试题:
环境变量的作用
https://blog.csdn.net/wdfscsdn2015/article/details/76652375
1、随着电脑安装的软件越来越多,我们记不住所有软件的安装路径,想运行某一软件就很麻烦。2、如果想在某一路径下直接运行某款软件,我们无能为力。
通过在环境变量里面加入所有软件的安装路径,当我们想运行某一软件时双击其快捷方式或者在DOS界面输入软件名称,此时,计算机除了在其当前目录下寻找该软件的.exe文件外,还在环境变量中搜索软件的路径,找到,运行。
综上,Windows和DOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。
网关和502错误
从网络设备上的“网关”讲,这个设备有时候又叫“路由器”或者“防火墙”又或者叫“(三层)交换机”。如果给出一张拓扑图,可以想见网关是处于两个或两个以上的网络之间的,负责路由转发或者地址转换或者执行数据包过滤的设备。从别的角度看描述起来不会这么绕,比如说终端配置的网关地址,它的意义就在于访问本网段以外的地址都经由所配置网关地址所在的网关设备转发。
出现502的原因是: 对用户访问请求的响应超时造成的,简单来说 502 是报错类型代码 bad gateway 错误的网关。连接超时 我们向服务器发送请求 由于服务器当前链接太多,导致服务器方面无法给于正常的响应,产生此类报错。在最基本的级别上,502错误网关表示服务器通信出现了问题。它涉及网关或代理服务器之间的通信,这些网关或代理服务器接受来自上游(或源)服务器的无效响应。当上游服务器和网关服务器无法决定交换数据的协议,就会出现问题,因此无法显示网站。502错误通常意味着在你的网站设置过程中出现了错误配置。
具体分析有几下几点:
服务器超载——如果服务器耗尽内存,服务器可能会崩溃,原因是站点上有大量访问者或DDOS攻击。 防火墙阻止请求——防火墙可能会阻止边缘服务器和上游服务器之间的通信。某些DDoS保护系统可能会过度反应并阻止来自内容传送系统的请求。 编程错误——有时网站代码中的一个错误可能意味着请求不能得到正确的响应,从而导致出现这个错误。 网络错误——DNS问题、路由问题和ISP相关的问题也可以导致错误网关。 服务器软件超时——当Web服务器需要更多时间来完成并且缓存工具达到其超时值时,也会发生此错误。慢查询也会导致此问题。 解决办法: 1.提高 Web 服务器的响应速度,也即减少内部的调用关系,可以把需要的页面、素材或数据,缓存在内存中,可以是专门的缓存服务器 ,也可以Web服务器自身的缓存,提高响应速度;
2.网络带宽的问题,则对传输的数据包进行压缩处理,或者向IDC申请增加带宽;
3.属于内部网络的故障或设置问题,也即内部网络拥塞,可能内部存在大量的数据调用或交互造成的,则需要优化内部网络传输或协议;
4.另外很大的问题在MySQL数据库这一块,如果数据库执行命令超时也会大延长php脚本的执行时间,导致 Nginx 等待超时。可以my.cnf的 slow log进行确认效能低下的sql语句是哪些,进行优化配置。数据库的数据读取造成前端服务器 ,响应用户的请求变慢,那么必须提高数据库的处理能力,若是只读业务可以增加数据缓存的模式 或者增加数据库备机,分散读压力; 若是写的压力,则可以考虑延迟写的模式,想这个时候做数据写分散肯定来不及。
5.在发生错误时检查Web服务器日志将是一个很好的起点。如果你是该网站的所有者,则可以检查你的FQDN(完全
5、Maven
<!-- maven的高级之处在于 他会帮你导入这个jar包所依赖的其他jar包-->
<!-- 在build中配置resource 来防止资源导出失败的问题-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.xml</exclude>
</excludes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
我为什么要学习这个技术?
-
在Javaweb开发中,需要使用大量的jar包,我们手动去导入;
-
如何能够让一个东西自动帮我导入和配置这个jar包。
由此,Maven诞生了!
5.1 Maven项目架构管理工具
我们目前用来就是方便导入jar包的! Maven的核心思想:约定大于配置
-
有约束,不要去违反。
Maven会规定好你该如何去编写我们Java代码,必须要按照这个规范来;
5.2下载安装Maven
下载完成后,解压即可; 小狂神友情建议:电脑上的所有环境都放在一个文件夹下,方便管理;
5.3配置环境变量
在我们的系统环境变量中配置如下配置:
-
M2_HOME maven目录下的bin目录
-
MAVEN_HOME maven的目录
-
在系统的path中配置%MAVEN_HOME%\bin
测试Maven是否安装成功,保证必须配置完毕!
5.4阿里云镜像
-
镜像:mirrors
-
作用:加速我们的下载
-
国内建议使用阿里云的镜像
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*,!jeecg,!jeecg-snapshots</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
D:Enmvironment\apache-maven-3.6.2conf\ettings.xml (狂神老师配置源和仓库的文件位置)
5.5本地仓库
在本地的仓库,远程仓库; 建立一个本地仓库:localRepository
<localRepository>D:\Environment\apache-maven-3.6.2\maven-repo</localRepository>
5.6在idea中使用Maven
-
启动idea
-
创建一个maven项目
![1567844785602]()
![1567844841172]()
![1567844917185]()


等待项目初始化

等右下角跑完,再点击enable auth-import
-
观察maven仓库中多了什么东西?

这里设置是项目的设置,所以会出现这种情况,在file中选择other
settrings,setting,for,new,projects可以解决

到这 maven配置差不多了
5.7开始创建一个普通maven项目



5.8标记文件夹功能



5.9idea 配置tomcat




解决警告问题
必须要的配置:为什么会有这个问题:我们访问一个网站,需要制定一个文件夹名字



5.10pom文件
pom.xml是maven核心配置文件

要用的









