javaweb
魔鬼训练(分析原理看源码)->pk场
-
-
Tomcat
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用
Tomcat 实际上运行jsp页面和Servlet. Tomcat最新版本9.0
工作3~5年之后,可以尝试手写Tomcat服务器
3. Tomcat
3.1 安装 tomact
-
tomcat 官网(https://tomcat.apache.org/download-10.cgi)
3.2 Tomcat 启动和配置
-
文件夹作用
-
启动、关闭Tomcat
-
要能遇到的问题
-
1. java 环境变量没有配置
-
2. 闪退问题,需要配置兼容性
-
3.乱码问题:配置文件中设置
-
3.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="www.joey.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
面试题
-
如何访问一个网站
-
1.输入一个域名: 回车
-
2.检查本机的C:\Windows\System32\drivers\etc\hosts 配置文件下有没有这个映射
-
1. 有:直接返回对应的的ip地址,这个地址中,有我们需要访问的Web程序,可以直接访问
127.0.0.1 www.joey.com -
2.没有:去DNS服务器找,找到的话就返回,找不到就返回找不到;
-
-
3.可以配置一个环境变理
-
3.4 发布一个web网站
-
不会就先模仿
-
将自己所写的网站放到放到服务器(tomcat)中指定的web应用文件夹(webapps)下就可以访问了
网站应该有的结构
--webapps :Tomcat 服务器的web目录
-ROOT
-JoeyStudy:网站目录名
-WEB-INF
-classes:java程序
- lib web应用所依赖的jar包
-web.xml 网站的配置文件
-index.html 默认值首页
-static
-css
-style.css
-js
_img
-
4.Http
4.1 什么Http
超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在
-
文本:html,字符串
-
超文本:图片,音乐,视频,定位,地图...
-
80
-
Https:安全的
-
433
-
4.2 两个时代
-
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.38:443
Accept: text/html
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cache-Control: no-cache
Connection: keep-alive
1.请求行
-
请求行中的请求方式:GET
-
请求方式:GET,PSOT,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;charset=utf-8 类型-
1.响应体
Accept: 告诉浏览器他所支持的数据类型
Accept-Encoding: 支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-Language:告诉浏览器他的语言环境
Cache-Control: 缓存控制
Connection: 告诉浏览器,请求完成是断开,还是保持连接
Host: 主机
Reflush :告诉客户多久刷新-次
Location:让网页重新定位 -
2.响应状态码(重点)
-
200:请求响应成功
-
3xx:请求重定向
-
重定向:你重新到我给你新位置去
-
-
4xx:找不到资源 404
-
-
资源不存在
-
5xx:服务器代码错误 500 502:网关错误
-
-
-
常见面试题
-
当你浏览器中地址栏输入地址并回车的一瞬间,到页面能展示回来,经历了什么?
-
5、Maven
我们为什么要学习这个技术?
-
1.在javaweb开发中, 需要使用大量的jar包,我们手动去导入;
-
2.如何能够让一个东西自动帮我们导入和配置这个jar包
-
由此Maven 诞生了
5.1 Maven 项目架构管理工具
我们目前用来就是方便导入jar包的!
Maven的核心思想,约定大于配置
-
有约束,不要去违反。
Maven 会规定好你该如何去编写我们的java代码,必须按照这个规范来;
5.2 下载安装Maven
下载完后,解压即可
小狂神友情建议:电脑上的所有环境都放在一个文件侠下,方便管理;
5.3 环境变量
在我们的系统 环境变量中
配置如下:
-
M2_HOME maven目录下的bin目录
-
MAVEN_HOME maven的目录
-
在系统 的path中配置MAVEN_HOME %MAVEN_HOME%\bin
测试是否安装成功保证必须配置完毕!
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>
5.5本地仓库
在本地的仓库,远程仓库;
建立一个本地仓库; localRepository
<localRepository>G:\javaDevloper\apache-maven-3.6.3-bin\apache-maven-3.6.3\maven-repo</localRepository>
G:\javaDevloper\apache-maven-3.5.3-bin\apache-maven-3.5.3\maven-repo
5.6 在IDEA中使用Maven
1.启动IDEA
2.创建一个Maven web项目
注意Maven3.5.3 对应 idea 2017
4.观察Maven仓库中多了什么东西
5.IDEA中的Maven设置
IDEA项目创建成功后,看一眼Maven的配置
6.到这里Maven 在IDEA中的配置和使用就ok了
5.7 创建一个普通的maven项目
这个只有在web应用下才会有!
5.8 在Idea中标识文件夹目录
5.9 在idea配置Tomcat
解决警告问题
必要的配置:为什么会有这个问题:我们访问一个网站需要指定一个文件夹名字;
5.10 pom文件
maven 仓库(https://mvnrepository.com/artifact/org.springframework/spring-webmvc/5.3.4)
pom.xml 是maven的核心配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!--
maven 的脚本和头文件
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--
这里就是我们刚才配置的GAV
-->
<groupId>come.joey</groupId>
<artifactId>javaweb-01-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<!--
项目的打包方式
jar: java 应用
war:JavaWeb应用
-->
<packaging>war</packaging>
<!--配置-->
<properties>
<!--项目的默认构建编码-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<!--项目依赖-->
<dependencies>
<dependency>
<!-- 具体依赖的jar包配置文件-->
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<!--项目构建东西-->
<build>
<finalName>javaweb-01-maven</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be