javaweb
1.基本概念
1.1前言
web开发
- web,网页的开发 www.baidu.com
- 静态 web
- html css
- 提供给所有人看的数据始终不会发生变化!
- 动态web
- 淘宝推荐,几乎所有的网站都是动态的
- 提供给所有人的数据会发生变化,每个人不同时间,不同地点看到的信息各不相同
- 技术栈:Servlet/jsp,ASP,PHP,
在java中动态的web资源开发技术统称为:javaweb;
1.2 web应用程序
web应用程序:可以提供浏览器访问的程序
- a.html.bhtml....等等多个web资源,此资源可以被外界访问,可以为外界服务;
- 你们可以访问到的任何一个页面或者是资源,都存在与这个世界的某一个角落的计算机上
- URL:通过这个来作为连接访问
- 这个统一的web资源会被放在同一个文件夹下,web应用程序-->tomcat:服务器
- 一个web应用由多部分组成(静态web,动态web)
- html,css,js
- jsp,servlet
- java
- jar包
- 配置文件(Properties)
web程序的应用程序编写完毕后,提供给外界访问,需要一个服务器来统一管理
1.3静态web
- .htm.html这些网页后缀,如果服务器存在这些东西,我们可以直接进行读取
- 静态web存在缺点
- web页面无法动态更新,所有的用户都看到的是同一个页面
- 轮播图,点击特效:伪动态
- javaScript【实际开发中,用的最多】
- VBscript【微软开发】
- 它无法实现和数据库交互(数据无法持久化,用户无法交互)
1.4 页面动态展示
页面会动态的展示:web的页面展示的效果因人而异,
- 缺点:加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布。
- 以前的网站,停机维护就是如此
优点:
- Web页面可以动态更新,所有用户看到的都不是同一个页面
- 可以和数据库交互(数据持久化,注册,信息可以得到保存)
2.web服务器
2.1 服务端技术
ASP:
- 微软:国内最早流星的是ASP
- 在html中嵌入VB的脚本,ASP+HTML
- 在ASP开发中,基本一个页面,大量互相嵌套的业务逻辑代码,造成维护成本过高
PHP:
- PHP将开发速度很快,功能强大,跨平台,代码简单(70%,wp)
- 无法承载大访问量的情况(局限性)
JSP/Servlet
B/S 浏览与服务器
C/S 客户端与服务器
- sun公司主推的B/S架构
- 基于java语言的(所有大公司,或者一些开源的组件,都是用java写的)
- 可以承载三高的问题带来的影响
- 语法想ASP-->JSP加强市场强度
2.2web服务器
作用:接收用户的请求给予相应的响应,是一种被动操做,用来处理用户请求给用户返回响应信息
lls
微软:ASP,,windows中自带的
tomcat:
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个java初学web来说,
诀窍是,当配置正确时,Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet。另外,Tomcat和IIS等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为10。
工作3-5年可以尝试手写tomcat服务器
下载tomcat:
- 安装 and 解压
- 了解配置文件以及目录结构
- 这个东西的作用
3,tomcat
3.1安装tomcat
下载windows 64安装包
解读tomcat的文件目录
3.2启动,关闭tomcat
访问测试url:
3.3配置
核心文件:
可能遇到的问题:
1.java环境变量没有配置
2.闪退问题,需要配置兼容性
3.乱码问题要去配置文件设置
可以配置启动的端口号
- tomcat的默认端口号为:8080
- mysql:3306
- http:80
- https:443
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
可以配置主机名称
- 默认的主机名为localhost=>127.0.0.1
- 默认网站应用存放位置为:webapps
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
高难度面试题
请你谈谈网站是如何进行访问的!
- 输入一个域名:回车
- 检查本机的C:\Windows\System32\drivers\etc\hosts配置文件下有没有这个域名的映射
- 有:直接返回对应的ip地址,这个地址中有我们访问的web程序,可以直接访问
127.0.0.1 www.qingjiang.com
- 没有:上dns服务器上找,找到的话就返回,没有的话返回你的网页走丢了
3.tomcat文档本地地址http://localhost:8080/examples/
3.4发布web网站
- 先写网站放到tomcat/webapps/,服务器中指定的web应用文件夹下,就可以访问了
网站该有的结构
--webapps:tomcat服务器的web目录 -root -项目名: 网站的目录名 -web-inf -web.xml -classes:java -lib:web应用所依赖的jar包 -index.html -static css style js img
HTTP协议:面试
Maven:构建工具
- Maven安装包
Servlet
- helloword
- Servlet
- 原理
4.http
4.1什么是http
Http 超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
- 文本:html,字符串等等
- 超文本:图片,音乐,视频,定位,地图
- 端口号:80
Https:安全的
- 端口443
4.2两个时代
- http1.0
- HTTP/1.0:客户端可以与web服务器连接,只能获得一个web资源,断开连接
- http2.0
- HTTP/1.1:客户端可以与web服务器连接后,可以获得多个web资源。
4.3http请求
- 客户端---》发送请求(Requset)---》服务器
百度:
Request URL: https://www.baidu.com/ //请求地址 Request Method: GET get方法/post方法 Status Code: 200 OK 状态码:200 Remote Address: 163.177.151.110: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/post
- 请求方式: Get/post, HEAD,DELETE,put tract
- get:请求能够携带的参数比较小,大小被限制,会在浏览器的url地址栏显示数据内容,不安全,但高效。
- post:请求能够携带的参数没有限制,没有大小限制,不会在浏览器的URL地址栏显示数据内容,安全但不高效
2.消息头
Accept 告诉浏览器,它所支持的数据类型 Accept-Encoding 支持那种编码格式 gbk,utf-8,gb2312,iso8859-1(java默认编码) Accept-Language 语言 Cache-Control 缓存控制 Connection 告诉浏览器请求完成是断开还是保持连接 HOST:主机
4.4HTTP响应
- 服务器---》响应---》客户端
百度:
Cache-Control: private 缓存控制 Connection: keep-alive 连接:保持连接 Content-Encoding: gzip 编码 Content-Type: text/html;charset=utf-8 类型
1.响应体
Accept 告诉浏览器,它所支持的数据类型 Accept-Encoding 支持那种编码格式 gbk,utf-8,gb2312,iso8859-1(java默认编码) Accept-Language 语言 Cache-Control 缓存控制 Connection 告诉浏览器请求完成是断开还是保持连接 HOST:主机 Refresh:告诉客户端,多久刷新一次 Location:让网页重新定位
2.响应状态码(重点)
200:请求响应成功
3xx:请求重定向
- 重定向:你重新到我给你的新位置去
4xx:找不到资源:404
- 资源不存在:
5xx:服务器代码错误 500 502:网关错误
常见面试题:
当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么?
Java后端进阶之路: JavaWeb(二)https://developer.aliyun.com/article/1469548