java web
web开发:
web ,网页的意思,www.baidu.com
静态web
html css
提供给所有人看的数据始终不会发生变化
动态web
几乎所有的网站都是
提供给所有人看的数据始终会发生变化 ,每个人在不同的时间,不同的地点看到的信息各不相同。
技术栈:Servlet/JSP ASP PHP
在Java中,动态web资源开发的技术统称为JavaWeb
web应用程序:可以提供 浏览器访问的程序
a.html、b.html...多个web资源,这些web资源可以被外界访问,对外界提供服务;
你们能访问到的任何一个页面或者资源,都存在于这个世界的某一角落上的计算机上。
URL
这个统一的web资源会被放在同一的文件夹下,就组成的web应用程序-----》Tomcat:服务器
一个web应用由多部分组成(静态web 动态web)
html,css,js
jsp,servlet
java程序
jar包
配置文件(Properties)
web应用程序编写完毕后,若想提供给外界访问:需要一个服务器来统一管理。
*.html, *.html这些都是网页的后缀,如果服务器上一直存在这些东西,我们就可以直接进行读取,通络。
静态web存在的缺点
web页面无法动态更新,所有用户看到的都是同一个页面
轮播图,点击特效:伪动态
JavaScript
VBScript
它无法和数据库交互(数据无法持久化,用户无法交互)
页面会动态展示:“web的页面展示的效果因人而异”
缺点:
假如服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布。
停机维护
优点:
Web页面可以动态更新,所有用户看到都不是同一个页面
它可以与数据库交互(数据持久化:注册 商品信息 用户信息....)
ASP:
微软:国内最早流行的就是ASP;
在HTML中嵌入了VB脚本,ASP+COM
在ASP开发中,基本一个页面都有几千行的业务代码,页面极其混乱
维护成本高!
C#
IIS
<h1>
<h1><h1>
<h1>
<h1>
<h1>
<h1>
<%
System.out.println("hello")
%>
<h1>
<h1>
<h1><h1>
<h1>
PHP
PHP开发速度很宽,功能很强大,跨平台,代码简单(70%。WP)
无法承载大访问量的情况(局限性)
JSP/Servlet:
B/S:浏览和服务器
C/S:客户端和服务器
sun公司主推B/S架构
基于Java语言的(所有的大公司,或者一些开源的组件,都是用Java写的)
可以承载三高问题带来的影响:高并发 高可用 高性能
语法像ASP , ASP---->JSP,加强市场强度;
服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息
IIS
微软的;ASP...,Windows中自带的
Tomcat
面向百度编程;
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用
Tomcat 实际上运行JSP 页面和Servlet。目前Tomcat最新版本为9.0.41。
...
工作3-5年后,可以尝试手写Tomcat服务器
下载tomcat:
1.安装or解压
2.了解配置文件及目录结构
3.这个东西的作用
下载官网:https://tomcat.apache.org/download-10.cgi
文件夹作用:
启动,关闭Tomcat
输入:http://localhost:8080/可以打开网站
可能会遇到的问题:
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">
高难度面试题:
请你谈谈网站是如何进行访问的:
1 输入一个域名:回车
2 检查本机的:C:\Windows\System32\drivers\etc\hosts配置文件下有没有这个域名映射;
1.有:直接返回对应的ip地址,这个地址中,有我们需要访问的web程序,可以直接访问
127.0.0.1 localhost
2.没有:去DNS服务器找,找到的话就返回,找不到就返回找不到。
4 可以配置一下环境变量(可选项)
不会就先模仿
将自己写的网站,放到服务器中(Tomcat)中指定的web应用的文件夹(webapps)下,就可以访问了
网站应该有的结构
-- webapps:Tomcat服务器的web目录
- ROOOT
- kuangstudy:网站的目录名
- WEB-INF
-classes: java程序
-lib:web应用程序所依赖的jar包
-web.xml:网站的配置文件
- index.html默认的首页
- static
-css
-style.css
-js
-img
-.....
HTTP协议:面试
Maven:构建结构
Maven安装包
Servlet入门
HelloWorld!
Servlet配置
原理
超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在
文本:html,字符串,...
超文本:图片,音乐,视频,定位,地图....
默认端口:80
Https:安全的
默认端口443
http1.0
HTTP/1.0: 客户端可以与web服务器连接后,只能获得一个web资源,然后就断开连接了。
http2.0
HTTP/1.1:客户端可以与web服务器连接后,可以获得多个web资源。
客户端-----发请求(Request)----服务器
百度:
请求 URL: https://www.baidu.com/
请求方法: GET
状态代码: 200 OK
远程地址: 183.232.231.174:443
引用站点策略: strict-origin-when-cross-origin
Request URL:https://www.baidu.com/请求地址
Request Method:GET // get方法/post方法
Status Code:200 OK//状态码:200
Remote Address:14.215.177.39:443
Referrer Policy:no-referrer-when-downgrade
Accept: text/html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6//语言
Cache-Control: max-age=0
Connection: keep-alive
?
请求行中的请求方式: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: 告诉浏览器,请求完成是断开还是保持连接
HOST: 主机
服务器---响应---客户端
百度:
?
Cache-Control: private //缓存控制
Connection: keep-alive //连接
Content-Encoding: gzip//编码
Content-Type: text/html;charset=utf-8//类型
Accept: 告诉浏览器,它所支持的数据类型
Accept-Encoding: 支持哪种编码格式GBK UTF-8 GB2312 ISO8859-1
Accept-Language: 告诉浏览器,它的语言环境
Cache-Control: 缓存控制
Connection: 告诉浏览器,请求完成是断开还是保持连接
HOST: 主机
Refrush:告诉客户端,多久刷新一次
Location:让网页重新定位
200:请求响应成功
3xx: 请求重定向
重定向:你重新到我给你的新位置去;
4xx:找不到资源 404
资源不存在;
5xx:服务器代码错误 500 502:网关错误
常见面试题:
当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么?
在我们输入网址按下回车后,DNS服务器会通过当前网址解析这一网址的ip;在查找到IP之后,浏览器会向服务器发起一个tcp连接请求,此请求包含三次握手,如下: 第一次握手:建立链接时,客户端浏览器会发送syn包到服务器,并进入SYS_SENT状态,等待服务器的确认;
第二次握手:服务器收到syn包后,必须确认客户端的syn,同时之间发送一个ack包,即是syn加ack包,此时服务器进入SYN_RECV状态,此时服务器被动打开后,接收到客户端的syn并且发送了ack时状态;
第三次握手:客户端接收到服务器的syn+ack包后,给服务器发送确认包ack,包发送完毕之后,客户端和服务器端进入ESTABLISHED(tcp连接成功)状态,完成了第三次握手。 当三次握手结束后客户端和服务器端就建立好了连接,此时tcp协议断开,开始访问服务器下的默认index.html页面,并调用该访问的资源文件,展示相应的内容。
为什么要学习这个技术
1.在Javaweb开发中,需要使用大量的jar包,我们手动导入;
2.如何能够让一个东西自动帮我导入和配置这个jar包
由此,Maven诞生了
我们目前用来就是方便导入jar包的!
Maven的核心思想:约定大于配置
有约束,不要去违反
Maven会规定好你该如何去编写我们的Java代码,必须按照这个规范来;
下载地址:https://maven.apache.org/
下载完成后,解压即可;
建议:电脑上的所有环境都放在一个文件夹下,方便管理
在我们的系统环境变量中
配置如下配置:
M2_HOME maven目录下的bin目录 D:\Maven\apache-maven-3.6.3-bin\apache-maven-3.6.3\bin
MAVEN_HOME maven的目录
D:\Maven\apache-maven-3.6.3-bin\apache-maven-3.6.3
在系统的path中配置MAVEN_HOME
%MAVEN_HOME%\bin
重启cmd查看
测试Maven是否安装成功,保证必须配置完毕!
镜像: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>
在本地的仓库,远程仓库;
建立一个本地的仓库:localRepository
配置:
<localRepository>D:\Maven\apache-maven-3.6.3-bin\apache-maven-3.6.3\maven-repo</localRepository>
?
第65天学习打卡(JavaWeb 基本概念 web服务器 Tomcat http maven)
原文:https://www.cnblogs.com/doudoutj/p/14534258.html