一、

1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。

2. 白盒测试:需要写代码,关注程序具体的执行流程。

二、

1.Junit使用:白盒测试

  •       定义一个测试类:测试类名建议为类名+Test.
  •       定义测试方法:可以独立运行:方法名test测试的方法名;返回值void;  参数列表空参。
  •       给方法加@Test:
  •       加入pom.xml依赖或者jar包。
  •       判定结果:红色表示测试失败,绿色测试成功。

2. 初始化方法@Before:用于资源的申请,所有测试的方法在执行之前都会先执行该方法。

3. 释放资源方法@After:  在所有测试方法执行完后,都会自动执行该方法。

三、反射:框架设计的灵魂

1.框架是半成品软件。可以在框架的基础上进行软件开发,简化编码。

2.概念:将类的各个组成部分封装为其他对象,这就是反射机制。

3.Java代码经历的三个阶段:

java 检测网页元素 javaweb测试方法_xml

  • 源代码阶段:.java--->javac编译  为 .class        
  • Class类对象阶段:   类加载器ClassLoader把  .class  加载到内存,class类对象:成员变量、构造方法、成员方法。
  • Runtime运行时阶段:new对象。

4.好处:在程序的运行过程中操作这些对象:   

  •    .   就运用的反射机制。
  • 可以解耦,提高程序的可扩展性。

5.获取Class对象的方式:

  • Class.forName("全类名"): 将字节码文件加载进内存,返回class对象//多用于定义配置文件,读取文件,加载类。
  • 类名.class:  通过类名的属性class获取//多用于参数的传递。
  • 对象.getClass():getClass()方法在Object类中定义着。//多用于对象的获取字节码的方式。
  • 结论: 同一个字节码文件.class在一次程序运行过程中,只会被加载一次,不论通过哪一种方式获取的class对象都是同一个。

6. 使用Class对象:功能:获取功能:

  • 获取成员变量们:Field[ ] getFields()
  • 获取构造方法们: 
  • 获取成员方法们
  • 获取类名

四、JDBC(Java数据库连接),Java语言操作数据库

1.本质:其实就是官方(Sun公司定义了操作所有关系型数据库的规则(接口)。各个数据库厂商去实现这套接口,提供数据库驱动jar包,我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。

2.步骤:

  • 导入驱动jar包
  • 注册驱动
  • 获取数据库连接对象Connection
  • 定义sql
  • 获取执行sql语句的对象Statement
  • 执行sql,接受返回结果
  • 处理结果
  • 释放资源

3.详解各个对象:

//  导入驱动jar包
//                注册驱动
            Class.forName("com.mysql.jdbc.Driver");
//        获取数据库连接对象Connection
            Connection connection = DriverManager.getConnection("jdbc:mysql://localost:3306/db3");


//                定义sql
            String sql="update account set balance=500 where id=1";

//        获取执行sql语句的对象Statement
            Statement statement = connection.createStatement();

//                执行sql,接受返回结果
            int count = statement.executeUpdate(sql);

//        处理结果
            System.out.println(count);
//                释放资源
            statement.close();
            connection.close();

DriverMannager:驱动管理对象

Connection:数据库连接对象

Statement:执行sql对象

PreparedStatement:执行sql对象

ResultSet:结果集对象,封装查询结果

4.JDBC工具类:

package utils;/*
 **@author  王小江
 **@verson  1.0
 */

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

//JDBC工具类
public class JDBCUtils {
    private static String url;
    private static  String user;
    private static String password;
    private  static String driver;
    static {
        try {
            Properties properties = new Properties();
         ClassLoader classLoader=JDBCUtils.class.getClassLoader();
            URL res = classLoader.getResource("jdbc.properties");
String path=res.getPath();
            System.out.println(path);
          //  properties.load(new FileReader("src/jdbc.properties"));
       properties.load(new FileReader(path));
        url=properties.getProperty("url");
        user=properties.getProperty("user");
        password=properties.getProperty("password");
driver=properties.getProperty("driver");
            try {
                Class.forName(driver);

            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /**
     * 获取连接
     */
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url,user,password);
    }

    public static void close(Statement stmt, Connection conn) {
/**
 * 释放资源
 */
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }

        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void close(ResultSet rs, Statement stmt, Connection conn) {
/**
 * 释放资源
 */
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }

        }
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

      

五、JavaScript  = (ECMAScript+BOM+DOM):客户端脚本语言。

1.与Html结合:写的位置就是代码执行的顺序:   <script>   alert("Hello world")   </script>

<script>可以定义多个。

2.数据类型:原始(基本)数据类型

  • number :数字。
  • String:字符串
  • boolran: true  和false
  • null: 一个对象为空的占位符
  • undefined:  未定义

3.Javascript是弱类型语言:可以存放任意类型的数据;Java是强类型语言。

4.var 定义变量;  alert 弹出提示框 ;  document.write() 输出到页面;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js</title>
<script>
    alert("hello word");
    单行注释
    定义变量
    var a=3;
    alert(a);
    a = "abc"
    alert(a);
    var num=1;
    var num2=1.2;
    var num3=NaN;
    //输出到页面
    document.write(num);
    document.write(num2);
    document.write(num3);
    var flag=true;
    document.write(flag);
    var str="1323355"
    document.write(str);

    var num=1;
    document.write(num+typeof (num));

</script>
</head>

<body>

</body>
</html>

5. 运算符: 一元、算数、赋值、比较、逻辑、三元。

6.特殊语法:

  • 语句以分号结尾  
  • 变量的定义可以用var也可以不用,用了就是局部变量,不用就是全局变量。

7.对象function:描述一个方法或函数的对象。

特点:

  • 方法是一个对象,如果定义名称相同时,会覆盖
  • 在js中,方法的调用只与方法名有关,和参数列表无关。
  • 在方法声明中有一个内置对象,arguments,封装所有的实际参数。
  • 方法定义时,形参的类型不用写,返回值类型也不用写
function fun2(a,b) {
            alert(a+b);
        }
            fun2(3,4);
        var fun3=function (a,b) {
            alert(a+b);

        }
   // fun2(3,4);
alert(fun3.length);
        alert(a);

8.Array对象、Date对象、Math对象、RegExp正则表达式对象、Global全局对象。

var date = new Date();
document.write(date+"<br>");
document.write(  date.toLocaleString())
 
 
document.write(Math.PI+"<br>")
  document.write(Math.random())//0-1的随机数
  document.write(Math.round(3.14)+"<br>")

9. DOM事件:控制Html文档的内容

  • 获取页面标签(元素)对象Element:document.getElementById("id值"): 通过元素的id获取元素对象。
  • 修改标签体内容:innerHTML

10.事件

如何绑定事件:

  • 直接在html标签上,指定事件的属性,属性值就是js代码,onclick--单击事件
• 通过js获取元素对象,指定事件属性,设置一个函数
function fun(){
    alert('我被点了');
    alert('我又被点了');

}
 
 
<img id="light" src="img/off.gif" οnclick="fun();">

11.BOM:

概念:浏览器对象模型:将浏览器的各个组成部分封装成对象

组成:windows窗口对象、Location地址栏对象、history对象

window.alert("hello");
 var flag= window.confirm("确定要退出吗?");
 if (flag){
     alert("true")
 }else {
     alert("false")
 }
 var result=prompt("请输入用户名:");
 alert(result);
 open();
 close();
location.href="http://www.baidu.com";
location.reload();//刷新

12.DOM:文档对象模型:将标记语言文档的各个部分,封装成对象。

Document:文档对象、Element: 元素对象、Node: 节点对象

六、   xml:可扩展标记语言

1. xml与html的区别、    w3c:万维网联盟

  • xml标签都是自定义的。<user>    <student>
  • xml的语法严格,html语法松散
  • xml是存储数据,html是展示数据

2. 语法:

  • xml文档后缀名是 .xml
  • xml第一行必须定义为文档声明
  • 只有一个跟标签
  • 属性值必须使用引号引起来
  • 标签必须正确关闭

3.组成部分:

  • 文档声明:格式:<?xml属性列表?>;     属性列表:version,encoding,standalone:yes/no  
  • 指令: 结合css 
  • 标签: 自定义的
  • 属性:id唯一属性
  • 文本:CDATA区:数据被原样展示
  • 约束:规定xml文档的书写规则;能够读懂简单的约束文档

4.:xml解析方式:将文档中的数据读取到内存中:DOM、SAX  

5.xml常见解析器:JAXP、DOM4J、JSOUP、PUL.

JSOUP步骤:

  • 导入jar包
  • 获取Doucument对象
  • 解析xml文档,加载进内存,获取dm树
  • z获取元素对象,Element

  JSOUP对象: