一、Ajax
第一个课程ajax:
ajax.pdf

1.全局刷新和局部刷新

全局刷新: 整个浏览器被新的数据覆盖。 在网络中传输大量的数据。 浏览器需要加载,渲染页面。
局部刷新: 在浏览器器的内部,发起请求,获取数据,改变页面中的部分内容。
其余的页面无需加载和渲染。 网络中数据传输量少, 给用户的感受好。

ajax是用来做局部刷新的。局部刷新使用的核心对象是 异步对象(XMLHttpRequest)
这个异步对象是存在浏览器内存中的 ,使用javascript语法创建和使用XMLHttpRequest对象。

2.ajax:Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

Asynchronous: 异步的意思
JavaScript:javascript脚本,在浏览器中执行
and : 和
xml : 是一种数据格式

ajax是一种做局部刷新的新方法(2003左右),不是一种语言。 ajax包含的技术主要有javascript,
dom,css, xml等等。 核心是javascript 和 xml 。
javascript:负责创建异步对象, 发送请求, 更新页面的dom对象。 ajax请求需要服务器端的数据。
xml: 网络中的传输的数据格式。 使用json替换了xml 。

  1. <数据><br /> <数据1>宝马1</数据1><br /> <数据2>宝马2</数据2><br /> <数据3>宝马3</数据3><br /> <数据4>宝马4</数据4><br /> </数据>

3.ajax中使用XMLHttpRequest对象

1)创建异步对象 var xmlHttp = new XMLHttpRequest();
2)给异步对象绑定事件。onreadystatechange :当异步对象发起请求,获取了数据都会触发这个事件。
这个事件需要指定一个函数, 在函数中处理状态的变化。
程序执行到这里的时候,后面的回调函数并不会执行,只是将回调函数注册给xhr对象
等xhr对象的readyState发生改变的时候,后面的回调函数会执行

  1. 例如:<br /> xmlHttp.onreadystatechange= function(){<br /> 处理请求的状态变化。<br /> if(xmlHttp.readyState == 4 && xmlHttp.status== 200 ){<br /> //可以处理服务器端的数据,更新当前页面<br /> var data = xmlHttp.responseText;<br /> document.getElementById("name").value= data;<br /> }<br /> }
  2. 异步对象的属性 readyState 表示异步对象请求的状态变化<br /> 0:创建异步对象时, new XMLHttpRequest();<br /> 1: 初始异步请求对象, xmlHttp.open()<br /> 2:发送请求, xmlHttp.send()<br /> 3: 从服务器端获取了数据,此时3 注意3是异步对象内部使用, 获取了原始的数据。<br /> 4:异步对象把接收的数据处理完成后。 此时开发人员在4的时候处理数据。<br /> 4的时候,开发人员做什么 更新当前页面。
  3. 异步对象的status属性,表示网络请求的状况的, 200 404 500 需要是当status==200<br /> 时,表示网络请求是成功的。

3) 初始异步请求对象(开启浏览器和服务器之间的通道)
异步的方法open().
xmlHttp.open(请求方式get|post, “服务器端的访问地址”, 同步|异步请求(默认是true,异步请求))
例如:
xmlHttp.open(“get”, “loginServlet?name=zs&pwd=123”,true);

4)使用异步对象发送请求
xmlHttp.send()

获取服务器端返回的数据, 使用异步对象的属性 responseText .
使用例子:xmlHttp.responseText

回调:当请求的状态变化时,异步对象会自动调用onreadystatechange事件对应的函数。

访问地址: 使用get方式传递参数
http://localhost:8080/course_myajax/bmiPrint?name=李四&w=82&h=1.8

image.png
image.png

二、Jquery

jQuery.pdf
jQuery:1. jQuery是js库,
库:相当于java的工具类,库是存放东西的, jQuery是存放js代码的地方, 放的用js代码写的function

  1. dom对象和jquery对象
    dom对象,使用javascript的语法创建的对象叫做dom对象, 也就是js对象。
    var obj= document.getElementById(“txt1”); obj是dom对象,也叫做js对象
    obj.value;

    jquery对象: 使用jquery语法表示对象叫做jquery对象, 注意:jquery表示的对象都是数组。
    例如 var jobj = $(“#txt1”) , jobj就是使用jquery语法表示的对象。 也就是jquery对象。 它是一个数组。
    现在数组中就一个值。

    dom对象可以和jquery对象相互的转换。
    dom对象可以转为jquery , 语法: $(dom对象)
    jquery对象也可以转为dom对象, 语法: 从数组中获取第一个对象, 第一个对象就是dom对象, 使用[0]或者get{0).

    为什么要进行dom和jquery的转换:目的是要使用对象的方法,或者方法。
    当你的dom对象时,可以使用dom对象的属性或者方法, 如果你要想使用jquery提供的函数,必须是jquery对象才可以。

    3.选择器: 就是一个字符串, 用来定位dom对象的。定位了dom对象,就可以通过jquery的函数操作dom
    常用的选择器:
    1) id选择器, 语法: $(“#dom对象的id值”)
    通过dom对象的id定位dom对象的。 通过id找对象, id在当前页面中是唯一值。

    2) class选择器, 语法: $(“.class样式名)
    class表示css中的样式, 使用样式的名称定位dom对象的。

  1. 3 标签选择器, 语法: $("标签名称")<br /> 使用标签名称定位dom对象的
  1. 表单选择器,
    使用标签的type属性值,定位dom对象的方式。
    语法: $(“:type属性值”)
    例如: $(“:text”) ,选择的是所有的单行文本框,
    $(“:button”) ,选择的是所有的按钮。

5.过滤器:在定位了dom对象后,根据一些条件筛选dom对象。
过滤器有是一个字符串,用来筛选dom对象的。
过滤器不能单独使用, 必须和选择器一起使用。

1)$(“选择器:first”) : 第一个dom对象
2)$(“选择器:last”): 数组中的最后一个dom对象
3)$(“选择器:eq(数组的下标)”) :获取指定下标的dom对象
4)$(“选择器:lt(下标)”) : 获取小于下标的所有dom对象
5)$(“选择器:gt(下标)”) : 获取大于下标的所有dom对象

6.表单属性过滤器: 根据表单中dom对象的状态情况,定位dom对象的。
启用状态, enabled ,
不可用状态 disabled
选择状态 , checked , 例如radio, checkbox

7.each语法
1). 可以对 数组, json ,dom数组循环处理。 数组, json中的每个成员都会调用一次处理函数。
var arr = { 1, 2, 3} //数组
var json = {“name”:”lisi”,”age”:20 }
var obj = $(“:text”);

  1. 语法: $.each( 循环的内容, 处理函数 ) :表示使用jqueryeach,循环数组,每个数组成员,<br /> 都会执行后面的“处理函数”一次。
  2. $: 相当于是java的一个类名<br /> each:就是类中的静态方法。<br /> 静态方法调用,可以使用 类名.方法名称
  3. 处理函数:function(index, emelent) :<br /> index, element都是自定义的形参, 名称自定义。<br /> index:循环的索引<br /> element:数组中的成员
  4. js循环数组:<br /> for(var i=0;i<arr.length;i++){<br /> var item = arr[i]; //数组成员<br /> //操作数组成员<br /> shuchu( i , item);<br /> }
  5. function shuchu(index, emlemnt){<br /> 输出index element<br /> }

2).循环jquery对象, jquery对象就是dom数组
jquery对象.each( function(index,element) {} )

  1. jquery中给dom对象绑定事件
    1) $(选择器).事件名称( 事件的处理函数)
    $(选择器):定位dom对象, dom对象可以有多个, 这些dom对象都绑定事件了
    事件名称:就是js中事件去掉on的部分, 例如 js中的单击事件 onclick(),
    jquery中的事件名称,就是click,都是小写的。
    事件的处理函数:就是一个function ,当事件发生时,执行这个函数的内容。

    1. 例如给idbtn的按钮绑定单击事件<br /> $("#btn").click(funtion(){<br /> alert("btn按钮单击了")<br /> })

    2) on 事件绑定
    $(选择器).on( 事件名称 , 事件的处理函数)

    事件名称: 就是js事件中去掉on的部分, 例如js中onclick ,这里就是click
    事件的处理函数: function 定义。

    例如,
    $(“#btn”).on(“click”, function() { 处理按钮单击 } )

    9. 使用jquery的函数,实现ajax请求的处理。
    没有jquery之前,使用XMLHttpRequest做ajax , 有4个步骤。 jquery简化了ajax请求的处理。
    使用三个函数可以实现ajax请求的处理。

    1) $.ajax() : jquery中实现ajax的核心函数。
    2) $.post() : 使用post方式做ajax请求。
    3) $.get() : 使用get方式发送ajax请求。

    $.post()和$.get() 他们在内部都是调用的 $.ajax()

  1. 介绍 $.ajax函数的使用, 函数的参数表示请求的url 请求的方式,参数值等信息。<br /> $.ajax()参数是一个json的结构。<br /> <br /> 例如: $.ajax( {名称:值, 名称1:值1..... } )
  2. 例如: $.ajax( { async:true , <br /> contentType:"application/json" , <br /> data: {name:"lisi",age:20 },<br /> dataType:"json",<br /> error:function(){<br /> 请求出现错误时,执行的函数<br /> },<br /> success:function( data ) {<br /> // data 就是responseText, 是jquery处理后的数据。
  3. },<br /> url:"bmiAjax",<br /> type:"get"<br /> } <br /> <br /> )
  4. json结构的参数说明:
  5. 1)async:是一个boolean类型的值, 默认是true ,表示异步请求的。可以不写async这个配置项<br /> xmlHttp.open(get,url,true),第三个参数一样的意思。<br /> 2)contentType: 一个字符串,表示从浏览器发送服务器的参数的类型。 可以不写。<br /> 例如你想表示请求的参数是json格式的, 可以写application/json<br /> 3)data: 可以是字符串,数组,json,表示请求的参数和参数值。 常用的是json格式的数据<br /> 4)dataType: 表示期望从服务器端返回的数据格式,可选的有: xml html text json<br /> 当我们使用$.ajax()发送请求时, 会把dataType的值发送给服务器, 那我们的servlet能够<br /> 读取到dataType的值,就知道你的浏览器需要的是 json或者xml的数据,那么服务器就可以<br /> 返回你需要的数据格式。<br /> 5)error: 一个function ,表示当请求发生错误时,执行的函数。<br /> error:function() { 发生错误时执行 }
  6. 6)sucess:一个function , 请求成功了,从服务器端返回了数据,会执行success指定函数<br /> 之前使用XMLHttpRequest对象, readyState==4 && status==200的时候。<br /> <br /> 7)url:请求的地址<br /> 8)type:请求方式,get或者post 不用区分大小写。 默认是get方式。

主要使用的是 url , data ,dataType, success .

三、动态代理:

一、什么是代理:

  1. 家长————>中介(学校介绍,办理入学手续)—————>美国学校
  2. 中介是专业的,方便.

    二、静态代理:

    (1)创建一个接口
    1. public interface UsbSell {
    2. float sell(float price);
    3. }
    这里面是厂家和商家都要完成的功能
    (2)创建工厂类
    1. //厂家,不接受用户的单独购买,需要商家
    2. public class UsbFactory implements UsbSell {
    3. @Override
    4. public float sell(float price) {
    5. System.out.println("目标类");
    6. return 70;//厂家的U盘价格
    7. }
    8. }
    在工厂类中定义的是U盘的出厂价,但是改价格是不能被普通的消费者使用的,只能是商家使用
    (3)创建商家类(代理类)
    淘宝类:
    1. public class TaoBao implements UsbSell {
    2. //声明商家代理的是哪一个厂家
    3. private UsbSell factory=new UsbFactory();
    4. @Override
    5. public float sell(float price) {//调用目标方法,增强功能,增加价格,优惠券
    6. float p=factory.sell(price);
    7. float p1=p+25;
    8. System.out.println("返回5元优惠券");
    9. return p1;
    10. }
    11. }
    微商类:
    1. public class WeiShang implements UsbSell {
    2. private UsbSell factory=new UsbFactory();
    3. @Override
    4. public float sell(float price) {//调用目标方法,增强功能
    5. float p = factory.sell(price);
    6. float p2=p+1;
    7. return p2;
    8. }
    9. }
    这两个类都实现了与工厂类相同的接口,增强了工程类(目标类)的方法
    (4)创建测试类(普通消费者)
    1. public class ShopMain {
    2. public static void main(String[] args) {
    3. TaoBao taoBao=new TaoBao();
    4. float price=taoBao.sell(100);
    5. System.out.println("淘宝的销售价:"+price);
    6. }
    7. }
    1. 目标类
    2. 返回5元优惠券
    3. 淘宝的销售价:95.0
    (5)优点
  • 实现简单
  • 容易理解

(6)缺点
当目标类增多了,代理类也需要增加(例如:上例中创建了一个工厂类,那么该类只能代表一个工厂,当建立了其它品牌的工厂后,还需要为该工厂创建代理类)
当接口的方法增加或修改的时候,很多类都需要修改。因为,目标类和代理类都实现了相同的接口

三、动态代理:

  1. jdk动态代理的实现
    反射包 java.lang.reflect , 里面有三个类 : InvocationHandler , Method, Proxy.

    InvocationHandler
    InvocationHandler 接口:表示你的代理要干什么。
    怎么用: 1.创建类实现接口InvocationHandler
    2.重写invoke()方法, 把原来静态代理中代理类要完成的功能,写在这。

    方法原型:
    参数: Object proxy:jdk创建的代理对象,无需赋值。
    Method method:目标类中的方法,jdk提供method对象的
    Object[] args:目标类中方法的参数, jdk提供的。

    1. public Object invoke(Object proxy, Method method, Object[] args)

Method
作用:通过Method可以执行某个目标类的方法,Method.invoke();
method.invoke(目标对象,方法的参数)
Proxy.
方法: 静态方法 newProxyInstance()
作用是: 创建代理对象, 等同于静态代理中的TaoBao taoBao = new TaoBao();

public static Object newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h)

  1. ClassLoader loader 类加载器,负责向内存中加载对象的。 使用反射获取对象的ClassLoader
    类a , a.getCalss().getClassLoader(), 目标对象的类加载器
    2. Class<?>[] interfaces: 接口, 目标对象实现的接口,也是反射获取的。
    3. InvocationHandler h : 我们自己写的,代理类要完成的功能。

    返回值:就是代理对象

3. 实现动态代理的步骤:

  1. 1. 创建接口,定义目标类要完成的功能<br /> 2. 创建目标类实现接口<br /> 3. 创建InvocationHandler接口的实现类,在invoke方法中完成代理类的功能<br /> 1.调用目标方法<br /> 2.增强功能

4.使用Proxy类的静态方法,创建代理对象。 并把返回值转为接口类型。

image.png

四、Maven

maven.pdf
maven
1部分
完成一个java项目,需要做哪些工作
1.分析项目要做什么,知道项目有哪些组成部分。
2.设计项目,通过哪些步骤,使用哪些技术。需要多少人, 多长的时间。
3.组建团队,招人, 购置设备,服务器, 软件, 笔记本。
4.开发人员写代码。 开发人员需要测试自己写代码。 重复多次的工作。
5.测试人员,测试项目功能是否符合要求。
测试开发人员提交代码-如果测试有问题—需要开发人员修改—在提交代码给测试
—测试人员在测试代码-如果还有问题-在交给开发人员-开发人员在提交-在测试
直到-测试代码通过。

2.传统开发项目的问题,没有使用maven【meivn】管理的项目
1)很多模块,模块之间有关系, 手工管理关系,比较繁琐。
2)需要很多第三方功能, 需要很多jar文件,需要手工从网络中获取各个jar
3)需要管理jar的版本, 你需要的是mysql.5.1.5.jar 拿你不能给给一个mysql.4.0.jar
4)管理jar文件之间的依赖, 你的项目要使用a.jar 需要使用b.jar里面的类。
必须首先获取到b.jar才可以, 然后才能使用a.jar.

  1. a.jar需要b.jar这个关系叫做依赖, 或者你的项目中要使用mysql的驱动, 也可以叫做项目依赖mysql驱动。<br /> a.class使用b.class a依赖b

3.需要改进项目的开发和管理,需要maven
1)maven可以管理jar文件
2)自动下载jar和他的文档,源代码
3)管理jar直接的依赖, a.jar需要b.jar , maven会自动下载b.jar
4)管理你需要的jar版本
5)帮你编译程序,把java编译为class
6)帮你测试你的代码是否正确。
7)帮你打包文件,形成jar文件,或者war文件
8)帮你部署项目

4.构建: 项目的构建。
构建是面向过程的,就是一些步骤,完成项目代码的编译,测试,运行,打包,部署等等。
maven支持的构建包括有:
1.清理, 把之前项目编译的东西删除掉,我新的编译代码做准备。
2.编译, 把程序源代码编译为执行代码, java-class文件
批量的,maven可以同时把成千上百的文件编译为class。
javac 不一样,javac一次编译一个文件。
3.测试, maven可以执行测试程序代码,验证你的功能是否正确。
批量的,maven同时执行多个测试代码,同时测试很多功能。
4.报告, 生成测试结果的文件, 测试通过没有。
5.打包, 把你的项目中所有的class文件,配置文件等所有资源放到一个压缩文件中。
这个压缩文件就是项目的结果文件, 通常java程序,压缩文件是jar扩展名的。
对于web应用,压缩文件扩展名是.war
6.安装, 把5中生成的文件jar,war安装到本机仓库
7.部署, 把程序安装好可以执行。

5.maven核心概念: 用好maven,了解这些概念
①POM : 一个文件 名称是pom.xml , pom翻译过来叫做项目对象模型。
maven把一个项目当做一个模型使用。控制maven构建项目的过程,管理jar依赖。

②约定的目录结构 : maven项目的目录和文件的位置都是规定的。

③坐标 : 是一个唯一的字符串,用来表示资源的。

④依赖管理 : 管理你的项目可以使用jar文件

⑤仓库管理(了解) :你的资源存放的位置

⑥生命周期 (了解) : maven工具构建项目的过程,就是生命周期。
⑦插件和目标(了解):执行maven构建的时候用的工具是插件
⑧继承
⑨聚合

讲maven的使用,先难后易的。 难是说使用maven的命令,完成maven使用 , 在idea中直接使用maven,代替命令。

6.maven工具的安装和配置。
1)需要从maven的官网下载maven的安装包 apache-maven-3.3.9-bin.zip
2)解压安装包,解压到一个目录,非中文目录。
子目录 bin :执行程序,主要是mvn.cmd
conf :maven工具本身的配置文件 settings.xml
3)配置环境变量
在系统的环境变量中,指定一个M2_HOME的名称, 指定它的值是maven工具安装目录,bin之前的目录

  1. M2_HOME=D:\work\maven_work\apache-maven-3.3.9
  2. 再把M2_HOME加入到path之中,在所有路径之前加入 %M2_HOME%\bin;

4)验证,新的命令行中,执行mvn -v

注意:需要配置JAVA_HOME ,指定jdk路径


C:\Users\Administrator>mvn -v
出现如下内容,maven安装,配置正确。
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:4
Maven home: D:\work\maven_work\apache-maven-3.3.9
Java version: 1.8.0_40, vendor: Oracle Corporation
Java home: C:\java\JDK8-64\jre
Default locale: zh_CN, platform encoding: GBK
OS name: “windows 7”, version: “6.1”, arch: “amd64”, family: “dos”

二部分
1.maven约定的目录结构, 约定是大家都遵循的一个规则。

每一个maven项目在磁盘中都是一个文件夹(项目-Hello)
Hello/
—-/src
———/main #放你主程序java代码和配置文件
—————/java #你的程序包和包中的java文件
—————/resources #你的java程序中要使用的配置文件

  1. ------/test #放测试程序代码和文件的(可以没有)<br /> ----------/java #测试程序包和包中的java文件<br /> ----------/resources #测试java程序中要使用的配置文件
  2. ---/pom.xml #maven的核心文件(maven项目必须有)

2.疑问: mvn compile 编译src/main目录下的所有java文件的。
1)为什么要下载
maven工具执行的操作需要很多插件(java类—jar文件)完成的
2)下载什么东西了
jar文件—叫做插件—插件是完成某些功能

  1. 3)下载的东西存放到哪里了。<br /> 默认仓库(本机仓库):<br /> C:\Users\(登录操作系统的用户名)Administrator\.m2\repository
  2. Downloading: [https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-parameter-documenter-2.0.9.pom](https://repo.maven.apache.org/maven2/org/apache/maven/maven-plugin-parameter-documenter-2.0.9.pom)

https://repo.maven.apache.org :中央仓库的地址

  1. 执行mvn compile 结果是在项目的根目录下生成target目录(结果目录),<br /> maven编译的java程序,最后的class文件都放在target目录中
  2. 设置本机存放资源的目录位置(设置本机仓库):<br /> 1. 修改maven的配置文件, maven安装目录/conf/settings.xml<br /> 先备份 settings.xml
  3. 2. 修改 <localRepository> 指定你的目录(不要使用中文目录)
  4. D:\work\maven_work\maven_repository

3.仓库
1)仓库是什么: 仓库是存放东西的, 存放maven使用的jar 和 我们项目使用的jar
> maven使用的插件(各种jar)
> 我项目使用的jar(第三方的工具)

2)仓库的分类
>本地仓库, 就是你的个人计算机上的文件夹,存放各种jar
>远程仓库, 在互联网上的,使用网络才能使用的仓库
①:中央仓库,最权威的, 所有的开发人员都共享使用的一个集中的仓库,
https://repo.maven.apache.org :中央仓库的地址
②:中央仓库的镜像:就是中央仓库的备份, 在各大洲,重要的城市都是镜像。

  1. ③:私服,在公司内部,在局域网中使用的, 不是对外使用的。

3)仓库的使用,maven仓库的使用不需要人为参与。

开发人员需要使用mysql驱动—->maven首先查本地仓库—->私服—->镜像—->中央仓库

4.pom:项目对象模型,是一个pom.xml文件
1)坐标:唯一值, 在互联网中唯一标识一个项目的
公司域名的倒写
自定义项目名称
自定版本号

  1. [https://mvnrepository.com/](https://mvnrepository.com/) 搜索使用的中央仓库, 使用groupId 或者 artifactId作为搜索条件<br />
  2. 2 packaging 打包后压缩文件的扩展名,默认是jar web应用是war <br /> packaging 可以不写, 默认是jar
  3. 3) 依赖<br /> dependencies dependency ,相当于是 java代码中import
  4. 你的项目中要使用的各种资源说明, 比我的项目要使用mysql驱动
  5. <dependencies><br /> <!--依赖 java代码中 import --><br /> <dependency><br /> <groupId>mysql</groupId><br /> <artifactId>mysql-connector-java</artifactId><br /> <version>5.1.9</version><br /> </dependency><br /> <br /> </dependencies>
  6. 4properties:设置属性
  7. 5build maven在进行项目的构建时, 配置信息,例如指定编译java代码使用的jdk的版本等

5.maven生命周期, maven的命令,maven的插件
maven的生命周期:就是maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署
maven的命令:maven独立使用,通过命令,完成maven的生命周期的执行。
maven可以使用命令,完成项目的清理,编译,测试等等

  1. maven的插件: maven命令执行时,真正完成功能的是插件,插件就是一些jar文件, 一些类。

1)单元测试(测试方法):用的是junit, junit是一个专门测试的框架(工具)。
junit测试的内容: 测试的是类中的方法, 每一个方法都是独立测试的。
方法是测试的基本单位(单元)。

  1. <br /> maven借助单元测试,批量的测试你类中的大量方法是否符合预期的。

2)使用步骤
1.加入依赖,在pom.xml加入单元测试依赖


junit
junit
4.11
test

  1. 2.maven项目中的src/test/java目录下,创建测试程序。<br /> 推荐的创建类和方法的提示:<br /> 1.测试类的名称 Test + 你要测试的类名<br /> 2.测试的方法名称 是:Test + 方法名称
  2. 例如你要测试HelloMaven ,<br /> 创建测试类 TestHelloMaven<br /> @Test<br /> public void testAdd(){<br /> 测试HelloMavenadd方法是否正确<br /> }
  3. 其中testAdd叫做测试方法,它的定义规则<br /> 1.方法是public的,必须的<br /> 2.方法没有返回值, 必须的<br /> 3.方法名称是自定义的,推荐是Test + 方法名称<br /> 4.在方法的上面加入 @Test
  4. 3)mvn compile <br /> 编译main/java/目录下的java class文件, 同时把class拷贝到 target/classes目录下面<br /> main/resources目录下的所有文件 都拷贝到target/classes目录下

第三部分:
1.在idea中设置maven ,让idea和maven结合使用。
idea中内置了maven ,一般不使用内置的, 因为用内置修改maven的设置不方便。
使用自己安装的maven, 需要覆盖idea中的默认的设置。让idea指定maven安装位置等信息

  1. 配置的入口 ①:配置当前工程的设置, file--settings ---Build, Excution,Deployment--Build Tools<br /> --Maven <br /> Maven Home directory: maven的安装目录<br /> User Settings File : 就是maven安装目录conf/setting.xml配置文件<br /> Local Repository : 本机仓库的目录位置
  2. --Build Tools--Maven--Runner <br /> VM Options : archetypeCatalog=internal<br /> JRE: 你项目的jdk
  3. archetypeCatalog=internal , maven项目创建时,会联网下载模版文件,<br /> 比较大, 使用-DarchetypeCatalog=internal,不用下载, 创建maven项目速度快。
  4. ②:配置以后新建工程的设置, file--other settings--Settings for New Project

2.使用模版创建项目
1)maven-archetype-quickstart : 普通的java项目
2)maven-archetype-webapp : web工程

第四部分
1依赖范围, 使用scope表示的。
scope的值有 compile, test, provided ,默认是compile
scope:表示依赖使用的范围,也就是在maven构建项目的那些阶段中起作用。
maven构建项目 编译, 测试 ,打包, 安装 ,部署 过程(阶段)

junit的依赖范围是 test

junit
junit
4.11
test

  1. <dependency><br /> <groupId>a</groupId><br /> <artifactId>b</artifactId> b.jar<br /> <version>4.11</version><br /> </dependency>
  2. <dependency><br /> <groupId>javax.servlet</groupId><br /> <artifactId>javax.servlet-api</artifactId><br /> <version>3.1.0</version> servlet.jar<br /> <scope>provided</scope> 提供者<br /> </dependency>
  3. <br /> 你在写项目的中的用到的所有依赖(jar ) ,必须在本地仓库中有。<br /> 没有必须通过maven下载, 包括provided的都必须下载。
  4. 你在servlet需要继承HttpServlet( provided) , 你使用的HttpServlet是maven仓库中的。
  5. 当你的写好的程序, 放到 tomat服务器中运行时, 此时你的程序中不包含servlet的jar<br /> 因为tomcat提供了 servlet的.jar

第五部分:
maven常用操作
1.maven的属性设置
设置maven的常用属性
2.maven的全局变量
自定义的属性,1.在 通过自定义标签声明变量(标签名就是变量名)
2.在pom.xml文件中的其它位置,使用 ${标签名} 使用变量的值

  1. 自定义全局变量一般是定义 依赖的版本号, 当你的项目中要使用多个相同的版本号,<br /> 先使用全局变量定义, 在使用${变量名}

3.资源插件




src/main/java

/*.properties
/.xml

<!—filtering 选项 false 不启用过滤器,
.property 已经起到过滤的作用了 —>
false


作用: mybatis课程中会用到这个作用

  1. 默认没有使用resources的时候, maven执行编译代码时, 会把src/main/resource目录中的文件拷贝到target/classes目录中。