javaweb基本概念 web应用程序 静态web 动态web 静态页面和动态页面的区别 web服务器 技术讲解 web服务器 Tomcat 安装tomcat(网上搜教程) Tomcat启动和配置 tomcat配置 发布一个web网站 Http 什么是HTTP http的两个时代 Http请求 请求行 消息头 Http响应 响应体 响应状态码 Maven Maven项目架构管理工具 下载安装并配置Maven 在IDEA中使用Maven 创建一个普通的Maven项目 idea标记文件夹功能 在 IDEA中配置Tomcat pom文件 IDEA操作 解决maven遇到的问题 Maven仓库的使用
目录
- 基本概念
- 前言
- web应用程序
- 静态web
- 动态web
- 静态页面和动态页面的区别
- web服务器
- 技术讲解
- web服务器
- Tomcat
- 安装tomcat(网上搜教程)
- Tomcat启动和配置
- 配置
- 发布一个web网站
- Http
- 什么是HTTP
- 两个时代
- Http请求
- 请求行
- 消息头
- Http响应
- 响应体
- 响应状态码
- Maven
- Maven项目架构管理工具
- 下载安装并配置Maven
- 在IDEA中使用Maven
- 创建一个普通的Maven项目
- 标记文件夹功能
- 在 IDEA中配置Tomcat
- pom文件
- IDEA操作
- 解决遇到的问题
- Maven仓库的使用
基本概念
前言
web开发:
web,网页的意思,www.baidu.com
- 静态web
html,sss
提供给所有人看的数据始终不会发生变化! - 动态web
淘宝,几乎是所有的网站;
提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息各不相同!
技术栈:Servlet/ISP,ASP,PHP
web应用程序
可以提供浏览器访问的程序;
- a.html、b.html.….多个web资源,这些web资源可以被外界访问,对外界提供服务;
- 我们能访问到的任何一个页面或者资源,都存在于这个世界的某一个角落的计算机上。
- URL
- 这个统一的web资源会被放在同一个文件夹下,web应用程序——>Tomcat:服务器
- 一个web应用由多部分组成(静态web,动态web)
- html,sss,is
- jsp,servlet
- Java程序
- jar包
- 配置文件(Properties)
Web应用程序编写完毕后,若想提供给外界访问;需费一个服务蔬来统一管理
静态web
- *.htm, *.html这些都是网页的后缀、如果服务器上一直存在这些东四,我们就可以直接进行读取、需要网络;
静态web存在的缺点
- Web页面无法动态更新,所有用户看到都是同一个页面
- 它无法和数据库交互(数据无法持久化,用户无法交互)
动态web
缺点:
- 加入服务器的动态web资源出现了错误,我们需要重新编写我们的后台程序,重新发布;
- 停机维护
优点:
- Web页面可以动态更新,所有用户看到都不是同一个页面
- 它可以与数据库交互 (数据持久化:注册,商品信息,用户信息…)
静态页面和动态页面的区别
- 工作原理不同。
- 静态
- 动态
- 交互性差异
- 静态
以展示为主,用户仅仅是通过页面获取相应的内容 - 动态
允许用户主动参与到页面之中,例如登录功能、查询功能、定制化页面内容等等
- 更新维护方式不同
修改静态页面的内容,需要找到此页面的源文件并修改源文件的代码。当网站内容信息非常大时,维护成本大
动态页面以数据库技术为基础,当需要修改内容时,可以直接通过数据库修改,而不需要调整页面的源文件。降低网站维护工作量,大幅提高网站运营效率。 - 响应速度不同
静态页面内容是固定的,服务器的响应时间较快
动态页面需要根据需求从数据库中调取相应的数据“组装”成为用户需求的页面,因此其响应速度会比较慢,但几乎可以忽略不计。 - 访问地址
静态页面的每个网页都有一个固定的URL,并且页面以.htm/.html/.shtml/.xml常见形式作为后缀,而且不包含“?”,这样的链接更有利于搜索引擎抓取并且收录。
动态页面的URL包含“?”,并且一般以.asp/.php/.jsp等扩展名结尾。当然我们并不能够直接通过一个网页的URL来判断这个页面是静态页面还是动态页面。这是由于搜索引擎一般不会从一个网站的数据库中访问全部网页,因此动态页面中“?”对搜索引擎检索存在一定的问题。很多企业为了让自己网站有更多的收录,就会将动态页面的URL进行伪静态化。
web服务器
技术讲解
ASP:
- 微软
- 在HTML中嵌入了VB的脚本,ASP+DOM
- 基本一个页面都有几千行的业务代码,页面极其换乱
- 维护成本高!
- C#
- IIS
php:
- PHP开发速度很快,功能很强大,跨平台,代码很简单 (70% , WP)
- 无法承载大访问量的情况(局限性)
**JSP/Servlet : **
B/S:浏览器和服务器
C/S: 客户端和服务器
- sun公司主推的B/S架构
- 基于Java语言的 (所有的大公司,或者一些开源的组件,都是用Java写的)
- 可以承载三高问题带来的影响;高并发,高可用,高性能
- 语法像ASP , ASP——转——>JSP , 加强市场强度;
web服务器
服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息;
IIS(Internet Information Service(Internet信息服务))
微软的; ASP…,Windows中自带的
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,因为Tomcat 技术先进、性能稳定,而且免费且开源,是目前比较流行的Web 应用服务器。
Tomcat 服务器属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
Tomcat 实际上运行JSP 页面和Servlet。
Tomcat
安装tomcat(网上搜教程)
tomcat官网:http://tomcat.apache.org/
Tomcat启动和配置
启动、关闭Tomcat
访问测试:http://localhost:8080/
可能遇到的问题:
- Java环境变量没有配置
- 闪退问题:需要配置兼容性
- 乱码问题:配置文件中设置
配置
可以配置启动的端口号
- 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.yyx.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">
发布一个web网站
- 将自己写的网站,放到服务器(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
-.....
HTTP协议 : 面试
Maven:构建工具
- Maven安装包
Servlet 入门
- HelloWorld!
- Servlet配置
- 原理
Http
什么是HTTP
HTTP(超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上。
- 文本:html,字符串, ….
- 超文本:图片,音乐,视频,定位,地图…….
- 80
Https:安全的
- 443
两个时代
- http1.0
- HTTP/1.0:客户端可以与web服务器连接后,只能获得一个web资源,断开连接
- http2.0
- HTTP/1.1:客户端可以与web服务器连接后,可以获得多个web资源。
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
Cookie:cookie代码
Host: www.baidu.com
请求行
Request URL: https://www.baidu.com/
Request Method: GET
- 请求行中的请求方式: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:主机..../.
Http响应
百度
Cache-Control:private 缓存控制
Connection:Keep-Alive 连接
Content-Encoding:gzip 编码
Content-Type:text/html 类型
响应体
Accept:告诉浏览器,它所支持的数据类型
Accept-Encoding:支持哪种编码格式 GBK UTF-8 GB2312 ISO8859-1
Accept-Language:告诉浏览器,它的语言环境
Cache-Control:缓存控制
Connection:告诉浏览器,请求完成是断开还是保持连接
HOST:主机..../.
Refresh:告诉客户端,多久刷新一次;
Location:让网页重新定位;
响应状态码
- 1xx-信息提示:这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个1xx响应。
100-继续。
101-切换协议。 - 2xx-成功:这类状态代码表明服务器成功地接受了客户端请求。
200-确定。客户端请求已成功。
201-已创建。
202-已接受。
203-非权威性信息。
204-无内容。
205-重置内容。
206-部分内容。 - 3xx-重定向:客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求。
301-对象已永久移走,即永久重定向。
302-对象已临时移动。
304-未修改。
307-临时重定向。 - 4xx-客户端错误:例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。
400-错误的请求。
401-访问被拒绝。IIS定义了许多不同的401错误,它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在IIS日志中显示:
401.1-登录失败。
401.2-服务器配置导致登录失败。
401.3-由于ACL对资源的限制而未获得授权。
401.4-筛选器授权失败。
401.5-ISAPI/CGI应用程序授权失败。
401.7–访问被Web服务器上的URL授权策略拒绝。这个错误代码为IIS6.0所专用。
403-禁止访问:IIS定义了许多不同的403错误,它们指明更为具体的错误原因:
403.1-执行访问被禁止。
403.2-读访问被禁止。
403.3-写访问被禁止。
403.4-要求SSL。
403.5-要求SSL128。
403.6-IP地址被拒绝。
403.7-要求客户端证书。
403.8-站点访问被拒绝。
403.9-用户数过多。
403.10-配置无效。
403.11-密码更改。
403.12-拒绝访问映射表。
403.13-客户端证书被吊销。
403.14-拒绝目录列表。
403.15-超出客户端访问许可。
403.16-客户端证书不受信任或无效。
403.17-客户端证书已过期或尚未生效。
403.18-在当前的应用程序池中不能执行所请求的URL。这个错误代码为IIS6.0所专用。
403.19-不能为这个应用程序池中的客户端执行CGI。这个错误代码为IIS6.0所专用。
403.20-Passport登录失败。这个错误代码为IIS6.0所专用。
404-文件或资源未找到。
404.0-(无)–没有找到文件或目录。
404.1-无法在所请求的端口上访问Web站点。
404.2-Web服务扩展锁定策略阻止本请求。
404.3-MIME映射策略阻止本请求。
405-用来访问本页面的HTTP谓词不被允许(方法不被允许)
406-客户端浏览器不接受所请求页面的MIME类型。
407-要求进行代理身份验证。
412-前提条件失败。
413–请求实体太大。
414-请求URI太长。
415–不支持的媒体类型。
416–所请求的范围无法满足。
417–执行失败。
423–锁定的错误。 - 5xx-服务器错误:服务器由于遇到错误而不能完成该请求。
500-内部服务器错误。
500.12-应用程序正忙于在Web服务器上重新启动。
500.13-Web服务器太忙。
500.15-不允许直接请求Global.asa。
500.16–UNC授权凭据不正确。这个错误代码为IIS6.0所专用。
500.18–URL授权存储不能打开。这个错误代码为IIS6.0所专用。
500.100-内部ASP错误。
501-页眉值指定了未实现的配置。
502-Web服务器用作网关或代理服务器时收到了无效响应。
502.1-CGI应用程序超时。
502.2-CGI应用程序出错。application.
503-服务不可用。这个错误代码为IIS6.0所专用。
504-网关超时。
505-HTTP版本不受支持。
Maven
在Javaweb开发中,需要使用大量的jar包,我们手动去导入;
Maven能够自动帮我导入和配置这个jar包。
Maven项目架构管理工具
Maven的核心思想:约定大于配置
Maven会规定好我们该如何去编写Java代码,必须要按照这个规范来;
下载安装并配置Maven
- 官网:https://maven.apache.org/
- 配置环境变量
- M2_HOME maven目录下的bin目录
- MAVEN_HOME maven的目录
- 在系统的path中配置%MAVEN_HOME%\bin
- 设置阿里云镜像
- maven文件夹下conf/settings.xml
- 镜像: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>
- 本地仓库
maven有本地仓库和远程仓库;
建立一个本地仓库(同样在settings.xml)
<localRepository>E:\maven\apache-maven-3.6.3\maven-repo</localRepository>
在IDEA中使用Maven
- 创建maven项目
- 等待项目初始化完毕
右边是自动导入,pom.xml文件中有改动时就会自动引入jar包
左边import change是手动导入,每次pom文件改动都需要确认一下
- IDEA中的Maven设置
注意:IDEA项目创建成功后,看一眼Maven的配置
创建一个普通的Maven项目
下面这个只有在Web应用下才会有!
标记文件夹功能
在 IDEA中配置Tomcat
解决警告问题
必须要的配置:为什么会有这个问题:我们访问一个网站,需要指定一个文件夹名字;
pom文件
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>
<!--这里就是我们刚才配置的G A V-->
<groupId>com.kuang</groupId>
<artifactId>javaweb-01-maven</artifactId>
<version>1.0-SNAPSHOT</version>
<!--Package:项目的打包方式
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>
<!--具体依赖的jar包配置文件-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
</dependencies>
<!--项目构建用的东西-->
<build>
<finalName>javaweb-01-maven</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
maven由于他的约定大于配置,我们之后可以能遇到我们写的配置文件,无法被导出或者生效的问题,解决方案:
<!--在build中配置resources,来防止我们资源导出失败的问题-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
IDEA操作
解决遇到的问题
- Maven 3.6.2
解决方法:降级为3.6.1
- IDEA中每次都要重复配置Maven
在IDEA中的全局默认配置中去配置
- Maven项目中Tomcat无法配置
- maven默认web项目中的web.xml版本问题
替换为webapp4.0版本和tomcat一致
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"
metadata-complete="true">
</web-app>
Maven仓库的使用
到maven去搜索需要的jar包,选择我们需要的点进去
找到需要的版本(一般找最新和最多人用的,避免用的时候出现问题)
然后点进去找到它的依赖代码,复制到pom文件里,导入就可以了