配置文件是用于给应用程序提供配置参数以及初始化设置的一些有特殊格式的文件
aqrlmy.jdbc.url=jdbc:mysql://192.168.198.100:3306/mybatis1026
aqrlmy.jdbc.driver=com.mysql.jdbc.Driver
aqrlmy.jdbc.username=root
aqrlmy.jdbc.password=123456
<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">
<servlet>
<servlet-name>dispatcherServletservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:spring-mvc.xmlparam-value>
init-param>
<load-on-startup>1load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>dispatcherServletservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
web-app>
XML是eXtensible Markup Language的缩写,翻译过来就是可扩展标记语言。所以很明显,XML和HTML一样都是标记语言,也就是说它们的基本语法都是标签。
可扩展
可扩展三个字表面上的意思是XML允许自定义格式。但是别美,这不代表你可以随便写。

在XML基本语法规范的基础上,你使用的那些第三方应用程序、框架会通过设计『XML约束』的方式『强制规定』配置文件中可以写什么和怎么写,规定之外的都不可以写。
XML基本语法这个知识点的定位是:不需要从零开始,从头到尾的一行一行编写XML文档,而是在第三方应用程序、框架已提供的配置文件的基础上修改。要改成什么样取决于你的需求,而怎么改取决于XML基本语法和具体的XML约束。
这部分基本上就是固定格式,要注意的是文档声明一定要从第一行第一列开始写
根标签有且只能有一个。
看到这里大家一定会发现XML的基本语法和HTML的基本语法简直如出一辙。其实这不是偶然的,XML基本语法+HTML约束=HTML语法。在逻辑上HTML确实是XML的子集。
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
从HTML4.01版本的文档类型声明中可以看出,这里使用的DTD类型的XML约束。也就是说http://www.w3.org/TR/html4/loose.dtd这个文件定义了HTML文档中可以写哪些标签,标签内可以写哪些属性,某个标签可以有什么样的子标签。
将来主要就是根据XML约束中的规定来编写XML配置文件,而且会在编写XML的时候根据约束来提示编写, 而XML约束主要包括DTD和Schema两种。
将来在IDEA中有代码提示的协助,在DTD文档的约束下进行配置非常简单。
将来使用SSM框架中的Spring、SpringMVC框架时,会涉及到一点点对Schema约束的设置。不过不必紧张,有IDEA的支持操作会非常简单。
首先要理解一个概念:『名称空间』,英文:name space

Schema约束要求一个XML文档中,所有标签,所有属性都必须在约束中有明确的定义。
下面以web.xml的约束声明为例来做个说明:
<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">
| 属性名 | 作用 |
|---|---|
| xmlns | 指出当前XML文档约束规则的名称空间在哪里 就是通过这个属性来引用一个具体的名称空间 |
| xmlns:xsi | 指出xmlns这个属性是在哪个约束文档中被定义的 |
| xsi:schemaLocation | 语法格式:在xsi名称空间下引用schemaLocation属性 配置含义:指定当前XML文档中所用到的约束文档本身的文件的地址 |
xmlns和xsi:schemaLocation对应关系如下图:

引入多个名称空间的例子如下:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<context:component-scan base-package="com.aqrlmy.crud.component"/>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
bean>
<mvc:default-servlet-handler/>
<mvc:annotation-driven/>
beans>

看到这么复杂,这么长的名称空间字符串,会觉得很担心,根本记不住。但是其实不需要记,在IDEA中编写配置文件时,IDEA会协助导入,会有提示。理解各个部分的含义能够调整即可。
用Java代码读取xml中的数据
建议:一般会采用DOM解析方式来解析XML,除非是解析体积很大的XML文件才会采用SAX解析
在使用Java代码解析XML的时候,通常不会直接使用JDK内置的原生的DOM或者SAX解析XML,因为代码实在是太复杂了。一些公司和组织已经封装好了优秀的XML解析器,通常会使用第三方XML解析器来解析XML
JAXP: sun公司提供的解析。支持dom和sax。(不常用)
JDOM
DOM4J(常用)
SAXReader saxReader = new SAXReader();
Document document = reader.read(inputStream);
Element rootElement = documen.getRootElement()
//获取所有子标签
List<Element> sonElementList = rootElement.elements();
//获取指定标签名的子标签
List<Element> sonElementList = rootElement.elements("标签名");
String text = element.getText();
String value = element.AttributeValue("属性名");
YAML配置文件会在以后的SpringBoot框架中使用
spring:
profiles:
active: fc
datasource:
name: mydb
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://192.168.41.100:3306/spring_boot?serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath*:/mybatis-mapper/*Mapper.xml
logging:
level:
com.aqrlmy.function.compute.mapper: debug
json配置文件一般使用在前端或者移动端
{
"username":"aobama",
"password":"123456",
"nickname":"圣枪游侠"
}
了解Tomcat的作用
掌握Tomcat的安装
掌握使用Tomcat部署项目
掌握使用Idea集成Tomcat
掌握使用Idea创建动态Web工程并部署
掌握导入Web工程
Tomcat 服务器是一个开源的轻量级Web应用服务器,在中小型系统和并发量小的场合下被普遍使用,是开发和调试Servlet、JSP 程序的首选。也是绝大多数JavaEE开发工程师所必用的
Tomcat的作用是作为Web服务器部署Web项目,从而让客户端能够访问,在这个过程中它扮演者两个角色: Web服务器和Servlet容器


配置JAVA_HOME和java环境变量: 因为Tomcat是Java代码编写的,所以必须要配置JAVA_HOME和java环境变量之后才能运行,可以通过下面的命令检测:
C:\Users\Administrator>java -version
java version “1.8.0_141”
Java™ SE Runtime Environment (build 1.8.0_141-b15)
Java HotSpot™ 64-Bit Server VM (build 25.141-b15, mixed mode)C:\Users\Administrator>echo %JAVA_HOME%
D:\software\JavaC:\Users\Administrator>echo %PATH%
D:\software\xftp;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;D:\software\Java\bin;D:\software\apache-maven-3.5.4\bin;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;
将Tomcat压缩包解压到一个非中文无空格的目录下

启动Tomcat并访问首页
运行Tomcat解压后根目录下\bin\startup.bat即可启动Tomcat服务器,然后打开谷歌浏览器,在地址栏输入“http://localhost:8080”就可以访问Tomcat了


编写完Web项目之后,通常是将Web项目打包成war包,然后将war包放入Tomcat的webapps目录中即可。
在Tomcat启动过程中,会将war包进行解压,然后运行解压后的项目
在浏览器访问刚刚部署的项目"http://localhost:8080/项目文件夹名/要访问的文件名"
在Tomcat安装目录下的conf目录中,可以看到一个server.xml文件,这个xml文件中就配置了Tomcat的端口号
……
<Server port="8005" shutdown="SHUTDOWN">
……
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
……
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
三个位置共定义了3个端口号,Tomcat启动后,这个三个端口号都会被占用。





**1. 第一步:**创建Empty Project
**2. 第二步:**创建动态Web的Module


创建好的工程目录结构:

| 目录或文件名 | 功能 |
|---|---|
| src目录 | 存放Java源文件 |
| web目录 | 存放Web开发相关资源 |
| web/WEB-INF目录 | 存放web.xml文件、classes目录、lib目录 |
| web/WEB-INF/web.xml文件 | 别名:部署描述符deployment descriptor 作用:Web工程的核心配置文件 |
| web/WEB-INF/classes目录 | 存放编译得到的*.class字节码文件 |
| web/WEB-INF/lib目录 | 存放第三方jar包 |






对于已经运行过的Web项目,如果增加了目录和文件,那么部署目录有可能不会自动同步过来,从而造成实际运行的效果和期望的不同。
如下图中,在工程目录已经新增了images目录和两个图片:

但是在部署目录并没有出现:

哪怕执行了重新部署也没有起作用。




HTTP:Hyper Text Transfer Protocol 超文本传输协议。
HTTP最大的作用就是确定了请求和响应数据的格式。浏览器发送给服务器的数据:请求报文;服务器返回给浏览器的数据:响应报文。
HTTP协议由请求和响应两部分构成,请求是由客户端往服务器传输数据,响应是由服务器往客户端传输数据。


作用: 展示当前请求的最基本信息
POST /dynamic/target.jsp HTTP/1.1
作用: 通过具体的参数对本次请求进行详细的说明
格式: 键值对,键和值之间使用冒号隔开
相对比较重要的请求消息头:
| 名称 | 功能 |
|---|---|
| Host | 服务器的主机地址 |
| Accept | 声明当前请求能够接受的『媒体类型』 |
| Referer | 当前请求来源页面的地址 |
| Content-Length | 请求体内容的长度 |
| Content-Type | 请求体的内容类型,这一项的具体值是媒体类型中的某一种 |
| Cookie | 浏览器访问服务器时携带的Cookie数据 |
作用:作为请求的主体,发送数据给服务器。具体来说其实就是POST请求方式下的请求参数。
格式:
1. form data(表单提交数据)
含义:当前请求体是一个表单提交的请求参数。

查看源码后,发现格式如下:
username=tom&password=123456
2.Request Payload(在异步请求中会学到)
含义:整个请求体以某种特定格式来组织数据,例如JSON格式。

HTTP1.1中共定义了八种请求方式:
Multipurpose Internet Mail Extensions
为了让用户通过浏览器和服务器端交互的过程中有更好、更丰富的体验,HTTP协议需要支持丰富的数据类型。
可以通过查看Tomcat解压目录下conf/web.xml配置文件,了解HTTP协议中定义的MIME类型。
<mime-mapping>
<extension>mp4extension>
<mime-type>video/mp4mime-type>
mime-mapping>
<mime-mapping>
<extension>docextension>
<mime-type>application/mswordmime-type>
mime-mapping>
<mime-mapping>
<extension>jsonextension>
<mime-type>application/jsonmime-type>
mime-mapping>
<mime-mapping>
<extension>htmlextension>
<mime-type>text/htmlmime-type>
mime-mapping>
从上面的例子中可以看出:MIME的基本格式是
大类/具体类型
MIME类型在HTTP报文中对应的是内容类型:Content-type

HTTP/1.1 200 OK
| 名称 | 功能 |
|---|---|
| Content-Type | 响应体的内容类型 |
| Content-Length | 响应体的内容长度 |
| Set-Cookie | 服务器返回新的Cookie信息给浏览器 |
| location | 在重定向的情况下,告诉浏览器访问下一个资源的地址 |
服务器返回的数据主体,有可能是各种数据类型。
作用:以编码的形式告诉浏览器当前请求处理的结果
| 状态码 | 含义 |
|---|---|
| 200 | 服务器成功处理了当前请求,成功返回响应 |
| 302 | 重定向 |
| 400 | [SpringMVC特定环境]请求参数问题 |
| 403 | 没有权限 |
| 404 | 找不到目标资源 |
| 405 | 请求方式和服务器端对应的处理方式不一致 |
| 406 | [SpringMVC特定环境]请求扩展名和实际返回的响应体类型不一致 |
| 50X | 服务器端内部错误,通常都是服务器端抛异常了 |
404产生的具体原因: