- 1、Javaweb
- 1.1 web应用程序
- 1.2 静态web
- 1.3 动态web
- 2、web服务器
- 2.1 技术讲解
- 2.2 web服务器
- 发布一个web网站
- 3、HTTP
- 3.1 HTTP是什么
- 3.2 两个时代
- 3.3 http请求
- 3.4 http响应
- 4、Maven
- 4.1 配置环境变量
- 4.2阿里云镜像
- 4.3本地仓库
- 4.4 Idea中使用maven
- 创建一个maven web项目
- mavenWeb项目和普通maven项目结构区别
- 完整构建maven web项目
- 4.5 在IDEA中配置tomcat
- 4.6 pom.xml文件
- 4.7 Maven存在的问题-资源导出问题
- 4.8 IDEA中生成jar包目录树
- 4.9 解决遇到的问题
- 5、tomcat和web.xml中配置理解
- 配置Tomcat Deployment中的Application Context理解
- 配置servlet理解
- 前端页面显示中文问题
-
静态web
html,css
-
动态web
技术栈:Servlet/jsp,asp,php
可以提供浏览器访问的程序: a.html , b.html…
tomcat服务器
一个web应用由多部分组成(静态web,动态web)
- html,css,js
- jsp,servlet
- java程序
- jar包
- 配置文件(properties)
web应用程序编写完毕后,若想要提供给外界访问,需要一个服务器来统一管理
1.2 静态web*.html *.htm,这些都是网页的后缀,如果服务器上一直存在这些东西,就可以直接进行读取,
静态web存在的缺点:
- web页面无法动态更新,所有用户看到的都是同一个页面
- 为了实现轮播图,点击特效:伪动态
- JavaScript [实际开发中,它用的最多]
- VBScript
- 他无法和数据库交互(数据无法持久化,用户无法交互)
页面会动态展示:“web的页面展示的效果因人而异”
缺点:
- 假如服务器的动态web资源出现了错误,我们需要重写编写我们的后台程序,重新发布。
- 停机维护
优点:
- web页面可以动态更新,所有用户看到都不是同一页面
- 它可以与数据库交互(数据持久化)
ASP:
- 微软:国内最早流行的
- 在html中嵌入VB脚本,ASP+COM
- 在ASP开发中,基本一个页面都有几千航的业务代码,页面极其混乱
php:
- 开发速度快,功能强大,跨平台,代码简单(70%,WP)
- 无法承载大访问亮的情况(局限性)
Jsp/servlet:
-
本质上是servlet
-
sun公司主推的B/S架构
(B/S:浏览器和服务器 C/S:客户端和服务器)
-
基于java语言的(所有的大公司,或者一些开源的组件,都是用java写的)
-
可以承载三高问题带来的影响,高并发,高性能,高可用
-
语法像ASP,ASP–>JSP,加强市场强度
Tomcat
面向百度编程;
apache 软件基金会
工作3-5年,尝试手写Tomcat;
下载Tomcat:
- 安装 or 解压
- 了解配置文件及目录结构
- 这个东西的作用
Tomcat官网
tomcat server.xml 文件可以修改启动的端口号,可以修改主机名称,
默认端口号:
tomcat:8080
mysql:3306
http:80
https:443
默认主机名称:
localhost—>127.0.0.1
默认网站应用存放的位置:
webapps
-
高难度面试题:
请你谈一下网站如何进行访问的?
-
输入域名,回车 www.baidu.com
-
检查本机的 C:WindowsSystem32driversetchosts配置问下有没有这个域名映射;
-
有,就直接返回对应ip的地址
127.0.0.1 www.baidu.com
这个地址中有我们需要访问的web程序,可以直接访问
-
没有,去DNS服务器,(DNS全世界的域名都在这里管理 14.215.117.39:443)
-
-
IIS
微软的; ASP … Windows中自带
…
服务器是一种被动的操作,用来处理用户的请求和给用户一些响应信息;
发布一个web网站将自己写的网站 *.html文件,放到服务器tomcat中指定的web应用的文件夹webapps下,就可以访问了
网站应该有的结构
-- webapps: tomcat 服务器的web目录 -- ROOT -- kuangstudy : 网站的目录名 -- WEB-INF -- Classes : java程序 -- lib : web 应用所有需要的jar包 -- web.xml : 网站配置文件 --index.html 默认的首页 -- static --css --style.css --js --img -- ....3、HTTP 3.1 HTTP是什么
HTTP 超文本传输协议,简单的请求、响应协议
- 文本:html ,字符串,…
- 超文本:图片,音乐,视频,定位,地图…
- 80
HTTPS:
- 443
- 安全的
-
http1.0
http/1.0:客户端可以和web服务器连接后,只能获得一个web资源,断开连接。
-
http2.0
http/1.1:客户端可以与web服务器连接后,可以获得多个web资源。
-
客户端—发请求(request)—服务器
-
以百度为例:
General 通用的:请求和响应都有
Request URL: https://www.baidu.com/ 请求地址 Request Method: GET get/post方法 Status Code: 200 OK 状态码:200 Remote Address: 180.101.49.11:443 远程地址 Referrer Policy: strict-origin-when-cross-origin 引荐来源网址策略 “strict-origin-when-cross-origin”,用于修剪用户敏感信息,例如路径和查询字符串,以保护隐私。 referrer 头经常包含用户的隐私数据,比如用户在引用网站上阅读哪些文章、甚至是用户在网站上的账户信息。因此,W3C 官方提出了一些候选策略 Referrer Policy,以规范 referrer 内容。 即当从 HTTPS 网站跳转到 HTTP 网站或者请求其资源时(安全降级 HTTPS→HTTP),不显示 referrer 的信息,其他情况(安全同级 HTTPS→HTTPS,或者 HTTP→HTTP)则在 referrer 中显示完整的源网站的 URL 信息。Request header:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,... 请求类型信息 Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 语言 Connection: keep-alive 连接:一直连接 中间一堆cookie信息 Cookie: BIDUPSID=27CCFA0EF0EC7BE270189BCE89C465F1; PSTM=1597130134; BAIDUID=5B74033ED4696DC25CC97B295A443D76:FG=1; BD_UPN=12314753; MCITY=-352%3A; BAIDUID_BFESS=5B74033ED4696DC25CC97B295A443D76:FG=1; ZFY=N9RnKbDDv1VWhF3plEYx2jnBibjkBClK4C5W7h3a5A0:C; COOKIE_SESSION=4581192_2_9_9_8_9_1_0_8_5_1_0_4581192_0_37_0_1657009934_1652341087_1657009897%7C9%232235112_315_1652341085%7C9; baikeVisitId=fa2ebb37-2746-49fd-a81f-da7ca55cf1f9; BA_HECTOR=04a58la00g25818g201hccfrq14; BDRCVFR[-HoWM-pHJEc]=mk3SLVN4HKm; BD_HOME=1; H_PS_PSSID=31254_26350 Host: www.baidu.com 主机 sec-ch-ua: ".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103" sec-ch-ua-mobile: ?0 移动 sec-ch-ua-platform: "Windows" 平台 windows Sec-Fetch-Dest: document 文档 Sec-Fetch-Mode: navigate 导航 Sec-Fetch-Site: none 网站 Sec-Fetch-User: ?1 用户 Upgrade-Insecure-Requests: 1 升级-不安全-请求 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36 用户代理-
请求行
- 请求行中的请求方式 get
- 请求方式 :GET POST HEAD DELETE PUT TRACT…
- get:请求能够携带的参数比较少,大小有限制,会在浏览器的url地址栏显示数据内容,不安全,但是高效
- post:请求能携带参数没有限制,带下没有限制,不会在浏览器的url地址显示数据内容,安全,不高效
-
消息头
Accept: 告诉浏览器,它所支持的数据类型 Accept-Encoding: 支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1 Accept-Language: 告诉浏览器,他的语言环境 cache-Control: 缓存控制 Connection: keep-alive 告诉浏览器请求完成是断开还是连接 Host...主机
-
-
服务器—响应(respose)—客户端
-
以百度为例,respose header
Cache-Control: private 缓存控制 Connection: keep-alive 保持连接 Content-Encoding: gzip 内容编码 压缩程序 Content-Type: text/html;charset=utf-8 内容类型:文本/超文本标记语言 text/html, 字符集=utf-8 utf:Unicode Transformation Format Unicode转换格式 Date: Thu, 07 Jul 2022 02:13:05 GMT 当前时间 GMT:格林尼治时间 Expires: Thu, 07 Jul 2022 02:12:14 GMT 有效期 Server: BWS/1.1 浏览器服务信息 Strict-Transport-Security: max-age=172800 严格传输安全 Traceid: 1657159985069125325811992526401082961452 跟踪id Transfer-Encoding: chunked 转移编码:分块 X-Frame-Options: sameorigin 框架选项:同源 X-Ua-Compatible: IE=Edge,chrome=1 兼容
-
响应体
Accept: 告诉浏览器,它所支持的数据类型 Accept-Encoding: 支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1 Accept-Language: 告诉浏览器,他的语言环境 cache-Control: 缓存控制 Connection: keep-alive 告诉浏览器请求完成是断开还是连接 Host...主机 Refrush:告诉客户端,多久刷新一次; Location: 让网页重新定位;
-
响应状态码
200 请求响应成功
3** 请求重定向 303
- 重定向:你重新到我给你的位置去
4** 找不到资源 404
- 资源不存在 后端服务器没有找到
5** 服务器代码错误 500 502 网关错误1
常见面试题
当你的浏览器中地址栏输入地址并回车到页面能够展示回来,经历了什么?
-
帮助管理jar包,java开发中大量jar包,需要手动导入很麻烦
maven帮助自动导入和配置jar包
maven是一个项目架构管理工具
目前用它来导入jar包
核心思想:约定大于配置
- 有约束,不要违反
maven会规定如何编写java代码,必须按规范来
下载安装maven
-
apache maven progect 官网下载 bin.zip & src.zip
https://maven.apache.org/
解压 bin.zip
conf – 配置
4.1 配置环境变量在系统环境变量中,配置如下配置:
- M2_HOME maven安装目录下的bin目录
- MAVEN_HOME maven的目录
- 在系统的path中配置%MAEN_HOME%bin
-
镜像 mirrors
- 作用:加速下载
-
国内建议使用阿里云的镜像
alimaven central aliyun maven http://maven.aliyun.com/nexus/comtent/groups/public 或者
nexus-aliyun *,!jeecg,!jeecg-snapshots Nexus aliyun http://maven.aliyun.com/nexus/comtent/groups/public
在本地的仓库,远程仓库;
建立一个本地仓库: 不需要每次去网上下载 localRepository
setting.xml中
4.4 Idea中使用maven这里放的是本地自己新建的maven仓库地址
- 启动idea
选中maven web项目模板,进行创建
点击finish
构建maven项目成功
观察maven仓库中多了什么东西?
IDEA中的maven设置:
idea项目创建成功后,看一下maven配置
maven在idea中的配置和使用就ok了
创建一个普通的maven项目
不选中创建模板,直接next
mavenWeb项目和普通maven项目结构区别maven web项目结构:
WEB-INF----web.xml index.jsp 这个只有在web应用下才会有!
普通maven项目结构:
完整构建maven web项目在 maven web项目下加入一个 java文件 和 resources文件;
java文件中放代码 ,标记为源码目录 Sources Root
resources文件中放资源,标记为资源目录 Resource Root
标记文件夹功能:
项目结构配置:
4.5 在IDEA中配置tomcat创建了一个 maven web项目后,配置Tomcat;
解决了警告问题。
为什么会有警告问题?
我们访问一个网站,需要指定一个文件夹的名字;idea没有主动去找项目名字,需要手动配置。
4.6 pom.xml文件pom.xml是maven的核心配置文件
maven命令使用:
clean:
Maven导入jar包:
4.7 Maven存在的问题-资源导出问题Maven由于他的约定大于配置,所以默认的maven项目在构建编译时不会把我们其他目录下的配置文件导出到target目录中,从而导致配置文件无法导出或者生效的问题。
解决方案:在项目的pom.xml文件中手动配置资源过滤,让它把src/main/java目录下的.properties和.xml文件也能够被导出。
4.8 IDEA中生成jar包目录树 4.9 解决遇到的问题src/main/resources ***.xml true src/main/java ***.xml true
-
Maven 3.6.2 版本有问题,建立依赖的时候依赖无法导入,导入的时候会报错
解决方法:降级为3.6.1
-
Tomcat闪退
因为tomcat需要java的环境,但是tomcat中没有配置java环境,所以就会闪退。
解决办法:tomcat安装文件bincatlina.bat用记事本打开,找到Java环境配置的地方,配置下java的环境。
-
IDEA中每次都要重复配置Maven
解决办法:在IDEA中的全局默认配置中去配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y5QuEWO8-1657265446108)(C:Users16431AppDataRoamingTyporatypora-user-imagesimage-20220707174107079.png)]
-
Maven项目中Tomcat无法配置
-
Maven默认web项目中的web.xml版本问题
默认生成web-app_2_3,这个版本太老了,
替换为webapp4.0版本,和tomcat保持一致
所以需要更换使用 D:Program Filesapache-tomcat-9.0.43webappsROOTWEB-INFweb.xml 中的xml模板:
Welcome to Tomcat Welcome to Tomcat
创建maven web项目结构:
创建servlet类:
这个类模板在tomcatwebappsexamplesservlet中;
操作:启动tomcat,访问localhost:8080/examples/servlets即可得到Servlets examples
项目启动后,浏览器输入url,进行访问,得到页面,后端是怎么进行的?
配置Tomcat Deployment中的Application Context理解/hello,就是给tomcat下加了一层包,包名字叫hello,访问的时候地址变为:localhost:8080/hello
-
如果没有加,访问 localhost:8080 默认进入后端index.jsp页面
-
如果给tomcat这里加了新的包层,则访问路径为localhost:8080/hello/,访问页面默认进入后端index.jsp页面
-
访问 localhost:8080/hello/kuangsheng 访问时先从WEB-INF中的web.xml文件找 servlet-mapping 中 url-pattern 请求路径为 /kuang 的 servlet-name , 由于一个servlet 对应一个 servlet-mapping ,所以再通过找到的servlet-name 去找servlet中的 servlet-class ,servlet-class中是这个类的 路径 ,从而找到类响应的页面;



