Javaweb学习笔记day04---Vue、XML

本文介绍了Vue.js的基础知识,包括条件渲染(v-if/v-show)、属性绑定、案例——计算器、表单操作和监听器。同时,详细探讨了XML的相关概念,如概述、组成、约束(DTD、Schema)以及使用Dom4j进行解析。通过实例代码,读者可以深入理解Vue的使用和XML的数据处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Vue条件渲染

概述

	使用v-if、v-show指令根据指定条件渲染元素

v-if

	根据条件渲染元素,满足元素直接消失

v-show

	根据条件渲染元素,满足调价display=none

代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue条件渲染</title>
</head>
<body>

<div id="app">
    <span v-if="flag">
        这是一个span
    </span>
    <span v-show="flag">
        这是二个span
    </span>
</div>
</body>
<script src="js/vue.js"></script>
<script>

    var vue = new Vue({
        el: "#app",
        data: {
            flag: false
        }
    })

</script>
</html>

Vue属性绑定

概述

使用’v-bind:属性”指令给元素的属性赋值,也可简写成":属性名"

代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue属性绑定</title>
</head>
<body>
<div id="app">
    <input type="text" v-bind:value="name"><br>
    <input type="text" :value="name"><br>
</div>
</body>
<script src="js/vue.js"></script>
<script>

    var vue = new Vue({
        el:"#app",
        data:{
            name : "小李子"
        }
    })

</script>
</html>

Vue案例之计算器

代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue案例之计算器</title>
</head>
<body>
<div id="app">
    <input type="text" v-model="num1">
    <select v-model="operate">
        <option value="+"></option>
        <option value="-"></option>
        <option value="*"></option>
        <option value="/"></option>
    </select>
    <input type="text" v-model="num2">
    = <span v-text="result">结果</span><br>
    <button @click="fn1()">计算</button>
</div>
</body>
<script src="js/vue.js"></script>
<script>
    var vue = new Vue({
        el: "#app",
        data: {
            num1: 1,
            operate: "+",
            num2: 1,
            result: 2
        },
        methods: {
            fn1() {
                console.log(this);
                var result = eval(this.num1 + this.operate + this.num2);
                console.log("result : " + result);
                this.result = result;
            }
        }
    })
</script>
</html>

Vue之表单操作

代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue案例之表单操作</title>
</head>
<body>
<div id="app">
    <form @submit.prevent="fn1()">
        姓名:
        <input type="text" name="username" v-model="user.username"/><br><br>
        密码:
        <input type="text" name="password" v-model="user.password"/><br><br>
        性别:
        <input type="radio" name="sex" value="male" v-model="user.sex"><input type="radio" name="sex" value="female" v-model="user.sex"><br/><br>
        爱好:
        <input type="checkbox" value="java" name="hobbys" v-model="user.hobbys">javase
        <input type="checkbox" value="javame" name="hobbys" v-model="user.hobbys">javame
        <input type="checkbox" value="javaee" name="hobbys" v-model="user.hobbys">javaee<br/><br>
        职业:
        <select name="job" v-model="user.job">
            <option value="javase工程师">javase工程师</option>
            <option value="javame工程师">javame工程师</option>
            <option value="javaee工程师">javaee工程师</option>
        </select><br><br>
        个人简介
        <textarea name="introduce" v-model="user.introduce"></textarea> <br><br>
        <input type="submit" value="提交修改"/>
    </form>

</div>
</body>
<script src="js/vue.js"></script>
<script>

    var vue = new Vue({
        el: "#app",
        data: {
            user: {
                username: "",
                password: "",
                sex: "female",
                hobbys: [],
                job: "javase工程师",
                introduce: ""
            }
        },
        methods: {
            fn1(){
                //使用正则表达式对表单中的数据格式进行校验
                var flag = true;
                if (flag) {
                    console.log(this.user)
                }
            }
        }
    })

</script>
</html>

Vue监听器

  • 概述
    • 用于监听Vue变量的改变
  • 分类
    • ①监听普通变量
    • ②监听对象变量
  • ①监听普通变量## Vue生命周期

代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue监听器</title>
    <!--普通变量-->
</head>
<body>
<div id="app">
    <input type="text" v-model="msg"><br>
    <span v-text="msg"></span>
</div>
</body>
<script src="js/vue.js"></script>
<script>

    var vue = new Vue({
        el: "#app",
        data: {
            msg: ""
        },
        watch: {
            /**
             * 监听变量msg的变化
             * @param newVal
             * @param oldVal
             */
            msg(newVal, oldVal) {
                console.log("新值 : " + newVal + " , 老值 : " + oldVal);
            }
        }
    })

</script>
</html>

②监听对象变量
代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue监听器</title>
    <!--对象变量-->
</head>
<body>
<div id="app">
    <input type="text" v-model="user.username"><br>
    <span v-text="user.username"></span>
</div>
</body>
<script src="js/vue.js"></script>
<script>

    var vue = new Vue({
        el: "#app",
        data: {
            user: {
                username: ""
            }
        },
        methods: {},
        watch: {
            "user.username": {
                handler: function (newVal, oldVal) {
                    console.log("新值 : " + newVal + " , 老值 : " + oldVal);
                }
            }
        }

    })

</script>
</html>

Vue生命周期

代码实现

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue生命周期</title>
</head>
<body>
<div id="app">
    <span id="spn">{{msg}}</span><br>
    <button @click="updateMsg()">修改msg</button>
</div>
</body>
<script src="js/vue.js"></script>
<script>

    var vue = new Vue({
        el: "#app",
        data: {
            msg: "hello"
        },
        methods:{
            show(){
                console.log("show show show");
            },
            updateMsg(){
                this.msg = "fuck";
            }
        },
        beforeCreate(){//data和methods还没有初始化
            console.log("----------------------beforeCreate----------------------");
            console.log(this.msg);
            this.show();
        },
        created(){//data和methods已经初始化
            console.log("----------------------created----------------------");
            console.log(this.msg);
            this.show();
        },
        beforeMount(){//生成虚拟dom树
            console.log("----------------------beforeMount----------------------");
            var spanEle = document.getElementById("spn");
            console.log(spanEle.innerText);
        },
        mounted(){//生成真实dom树
            console.log("----------------------mounted----------------------");
            var spanEle = document.getElementById("spn");
            console.log(spanEle.innerText);

        },
        beforeUpdate(){//修改后,生成虚拟dom树
            console.log("----------------------beforeUpdate----------------------");
            //发生修改之前,已经有真实dom树(hello),发生修改之后,生成虚拟dom树(fuck)
            var spanEle = document.getElementById("spn");
            console.log(spanEle.innerText);
        },
        updated(){//修改后,生成真实dom树
            console.log("----------------------updated----------------------");
            var spanEle = document.getElementById("spn");
            //虚拟dom树(fuck) 变成了 真实dom树(fuck)
            console.log(spanEle.innerText);
        }
    })

</script>
</html>

Xml

Xml概述

  • 概述

    • extensive markup language : 可扩展标签语言
    • html文件中的标签是预设好的,而xml文件中的标签是可以随意写的。
  • 作用

    • 用于传输数据,但是因为结构过于复杂,所以已经被json代替
    • 用于存储数据(配置文件),这个还在使用
  • 代码实现

<?xml version="1.0" encoding="UTF-8" ?><!--声明xml文档-->
<bookstore>
    <book category="magic">
        <title lang="english">Harry Potter</title>
        <author>J K.Rowling</author>
        <year>2005</year>
        <price>29.9</price>
    </book>
</bookstore>

Xml组成

组成

  • 元素
  • 属性
  • 文本
  • xml文档声明

Xml约束概述

  • 概述

    • 在xml文件中,可以随意写任何标签,会导致解析出现问题,从而导致数据出现问题。可以使用xml约束来规定xml文件中可以使用哪些标签、属性等等。
  • 分类

    • dtd约束 : 可以写哪些标签、哪些属性
    • schema约束 : 可以写哪些标签、哪些属性,可以规定标签内容、属性值

DTD约束

  • 概述

    • 规定xml文件中,可以写哪些标签,可以写哪些属性
  • ①内部结合

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE students [
        <!ELEMENT students (student*)>
        <!ELEMENT student (name,age,sex)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT age (#PCDATA)>
        <!ELEMENT sex (#PCDATA)>
        <!ATTLIST student id CDATA #REQUIRED>
        <!ATTLIST student classname CDATA #IMPLIED>
        ]>
<students>

    <student id="1">
        <name>张三</name>
        <age>18</age>
        <sex></sex>
    </student>

</students>

②外部结合

<?xml version="1.0" encoding="UTF-8"?>
<!-- xml文件中有一个根节点students,students下可以有n个student子节点(包括0个) -->
<!ELEMENT students (student*)>
<!-- student节点下,可以有name节点、age节点和sex节点,且name节点、age节点和sex节点是按照先后顺序出现 -->
<!ELEMENT student (name,age,sex)>
<!-- 定义name节点,且节点内容的类型为字符  -->
<!ELEMENT name (#PCDATA)>
<!-- 定义age节点,且节点内容的类型为字符 -->
<!ELEMENT age (#PCDATA)>
<!-- 定义sex节点,且节点内容的类型为字符 -->
<!ELEMENT sex (#PCDATA)>
<!-- 给节点student设置属性,属性名称为id,属性的类型为CDATA(字符), #REQUIRED指本属性是必须的  #IMPLIED指属性是可选的 -->
<!ATTLIST student id CDATA #REQUIRED>
<!-- 给节点student设置属性,属性名称为classname,属性的类型为CDATA(字符), #REQUIRED指本属性是必须的  #IMPLIED指属性是可选的 -->
<!ATTLIST student classname CDATA #IMPLIED>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE students SYSTEM "students.dtd">
<students>

   <student id="-1">
       <name>张三</name>
       <age>-18</age>
       <sex></sex>
   </student>

</students>

Schema约束

  • 概述

    • 可以规定xml文件:哪些标签可以写、哪些属性可以写、标签内容可以是什么、属性值可以是什么.
  • 代码实现

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.example.org/students"
        elementFormDefault="qualified">
    <!-- element:申明元素,包括根元素和子元素 这里就是申明根元素class -->
    <element name="students">
        <!-- 复杂元素 -->
        <complexType>
            <!-- squence:子元素按照顺序 1,子元素如果只有一种,那么就写一个,比如student元素 2,子元素如果有多种,那么就按想要的顺序写,比如:name,age,sex -->
            <sequence>
                <!-- 申明子元素student minOccurs:最少出现次数 maxOccurs:最大出现次数,数值或unbounded(无限大) -->
                <element name="student" minOccurs="0" maxOccurs="unbounded">
                    <!--复杂元素-->
                    <complexType>
                        <sequence>
                            <!-- 申明子元素name -->
                            <element name="name" type="string"></element>
                            <!-- 申明子元素age simpleType:元素age是一个简单元素 restriction:age的取值范围在1~150之间 -->
                            <element name="age">
                                <!--简单元素-->
                                <simpleType>
                                    <restriction base="integer">
                                        <minInclusive value="0"></minInclusive>
                                        <maxInclusive value="150"></maxInclusive>
                                    </restriction>
                                </simpleType>
                            </element>

                            <!-- 申明子元素 sex restriction:取值范围在"男"和"女" -->
                            <element name="sex">
                                <simpleType>
                                    <restriction base="string">
                                        <enumeration value=""></enumeration>
                                        <enumeration value=""></enumeration>
                                    </restriction>
                                </simpleType>
                            </element>
                        </sequence>
                        <!--
                            定义了一个属性id
                            use="required":属性是必须的
                            <pattern value="java_\d{4}"></pattern>:id的值必须满足这个正则表达式:以java_开头,后面跟四个数字
                         -->
                        <attribute name="id" use="required">
                            <simpleType>
                                <restriction base="string">
                                    <pattern value="java_\d{4}"></pattern>
                                </restriction>
                            </simpleType>
                        </attribute>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>
<?xml version="1.0" encoding="UTF-8" ?>
<students xmlns="http://www.example.org/students">

   <student id="java_1234">
       <name>张三</name>
       <age>18</age>
       <sex></sex>
   </student>


</students>

总结

  • dtd : mybatis框架
  • schema : spring框架

Dom4j解析

  • 概述

    • 用于获取xml文件中的配置信息
  • 开发步骤

    • ①创建核心解析对象SAXReader
    • ②读取xml文件,并获取文档对象Document
    • ③获取根节点
    • ④获取根节点下所有子节点
    • ⑤获取所有子节点的信息(属性信息、标签信息),并将信息封装到java对象中
  • 代码实现

  • `/**

  • 解析spring.xml
    */
    public class Demo01 {

    public static void main(String[] args) throws Exception {
    //1,创建核心解析对象
    SAXReader saxReader = new SAXReader();
    //2,读取spring.xml,获取document对象
    Document document = saxReader.read(“spring.xml”);
    //3,获取根节点
    Element rootElement = document.getRootElement();
    //4,获取根节点下的所有子节点对象
    List beanEles = rootElement.elements(“bean”);

     List<User> userList = new ArrayList<>();
     for (Element beanEle : beanEles) {
         //获取id属性值
         String id = beanEle.attributeValue("id");
         //获取name标签内容
         String name = beanEle.elementText("name");
         //获取age标签内容
         String age = beanEle.elementText("age");
    
         User user = new User();
         user.setId(id);
         user.setName(name);
         user.setAge(Integer.parseInt(age));
         userList.add(user);
     }
    
     System.out.println("userList = " + userList);
    

    }

}`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值