青岛网站建设新元创想,网站开发从整体上,背景图片设计在线制作,免费1级做爰片免费网站一. 网络编程 - 理论
1.项目架构 【Client】/S【Server - Service】 - 放在这个程序的用客户端
用户需要单独安装客户端#xff0c;客户端升级了用于需要重新更新不能跨平台#xff1a;不同的操作系统都需要相应版本的程序 性能和安全性#xff1a;客户端与服务器直接交互…一. 网络编程 - 理论
1.项目架构 【Client】/S【Server - Service】 - 放在这个程序的用客户端
用户需要单独安装客户端客户端升级了用于需要重新更新不能跨平台不同的操作系统都需要相应版本的程序 性能和安全性客户端与服务器直接交互 【Browser】/S【Server - Service】 - 访问这个项目/程序的时候用浏览器 使用浏览器充当客户端用户不需要单独安装浏览器一般不用更新
都用的是浏览器
户端与服务器不直接交互而是通过http协议网络交互
Java语言主要用来开发BS架构的软件2.网络编程 在网络环境中实现前端与后端数据的交互编写的程序 是一种思想需要技术去实现。在Java中使用Socket-套接字来实现
3.网络通信
网络编程中前后端要进行交互前端传输数据到后端后端响应数据给前端这就叫网络通信
ip地址:1. 公网IP是全球唯一的而内网IP只是在局域网内唯一不同的局域网可以存在形同的内网IP2. 内网的IP地址是有交换机或路由器分配公网的IP地址是由国际组织NICNetwork Information Center负责统一分配的port端口号:1. 同一台机器上不能有两个程序使用同一个端口会冲突。例如Java中报错端口号冲突Address already in use2. 以后开发中最好记住我们用到过的常用软件的端口避免我们知己设定端口的时候和他们冲突。例如tomcat-8080、mysql-3306、http协议-80、https-443网络协议UDPUser Datagram Protocol用户数据包协议特点无连接、不可靠通信、通信效率高。适用于视频直播、语音通话、游戏等业务TCPTransmission Control Protocol传输控制协议特点无连接、不可靠通信、通信效率高。适用于视频直播、语音通话、游戏等业务http协议了解了之后会在以后的项目中方便程序员去排错 http协议规定了服务器与浏览器之间数据的传递格式/规范 请求数据包请求行(请求方式请求地址协议)、请求头、请求体(post请求的参数就放在这里) 响应数据包响应行(协议、响应码200)、响应头、响应体(服务器响应给你的数据html,图片,json…)
get请求与post请求的区别突破口get请求把请求参数放在地址栏
1.get请求不安全
2.数据大小有显示大约4kb左右域名
DNS域名解析器:用于解析域名并将其转换为相应的IP地址
二. Tomcat服务器 - 操作
tomcat是开源免费的web服务器(部署项目-服务器开启别人就可以访问)同时也是Servlet容器 1.安装 - 解压安装 2.目录结构 bin - 命令【启动停止的命令】 conf - 配置信息 lib - jar包 logs - 日志 webapps - 保存项目的地方 3.开启tomcat 4.访问http://可以省略掉 - 因为浏览器地址栏默认是是http:// 完整的地址 http://ip:port/项目名/资源名 - http://可以省略如果port是80可以省略掉如果项目名ROOT也可以省略掉资源名是index也可以省略掉 5.演示了修改端口号 - 重启有效
6.演示项目(有页面的项目/web项目)部署 - 纯java项目 java项目只能写java代码 前端js项目写前端代码 web项目既能写java代码也能写前端代码 1. 拷贝项目到tomat的webapps下改名 2. 启动tomcat 3. 访问http://ip:port/项目名/资源名
三. XML - 代码
XML概述
XML英文名称Extensible Markup Language中文名称是可扩展标记语言通过标签为数据赋予意义的行为称为标记为标记定义规则的语言叫做标记语言
XML作用
- 传输数据
- 持久化数据
- 框架配置文件XML语法 XML声明 XML声明或文档申明并非是一种标签其用于指明是什么文档、版本号和编码除了XML还有HTML version指定XML编码XML从创建之初到目前都是1.0版本 encoding避免中文乱码所以指定编码为UTF-8
注意文档声明必须在XML文件的第一行且每个XML文件必须有文档声明XML文件必须以xml结尾 ?xml version1.0 encodingUTF-8 ?标签命名规则 标签名称只能以字母或下划线开头标签名称不能以xml/XML打头标签名称中间不能有空格标签名称之间不能使用冒号 XML语法规则 XML中有且仅有一个根标签/元素XML中的标签是以层级关系进行嵌套内层如何嵌套都可以但是外层必须有一个根标签 必须有闭标签 第一种闭标签此种标签无法编写文本以及其他标签也被称为单标签 - xml基本没有很少第二种闭标签此种标签可以编写文本以及其他标签也被称为双标签 - 开始标签与结束标签 严格区分大小写在XML中标签的名称必须一致 嵌套需要正确标签在XML中可以进行标签嵌套也就是双标签中定义标签 文本内容和属性在XML中所有的标签也被称为元素。双标签中的内容称为文本。标签中可以进行属性定义属性值必须加引号多个属性以空格隔开 转义字符 在文本中使用特殊字符会报错所以我们需要使用转义字符进行代替也可以使用转义标签进行代替 lt; 小于
gt; 大于
amp; 和号
apos; 单引号
quot; 引号转义标签特殊符号会进行原样展示![CDATA[ 这是转义标签特殊字符会进行原样展示 ]]XML约束 约束概述 XML约束限制一个XML文件中标签、属性值、以及顺序等的使用只能按照某种指定的规则书写。其作用如下 在编写XML时有提示写错会报错 常见的约束有两种DTD约束和Schema约束。DTD约束语法简单Schema约束功能强大 DTD约束 DTD约束Document Type Definition - 文档类型定义。DTD约束语法简单可读性高容易理解
Schema约束也叫做XSD约束XML Schema Definition - XML模型定义所以schema约束文件后缀是.xsd
一个XML文件中只能引用一个DTD约束但是一个XML文件可以引用多个schema约束。Schema约束比DTD约束功能更加强大但是编写更加复杂。
DOM模型 DOMDocument Object Mode文档对象模型 当结构化文档XML/HTML加载到内存中会形成一个一个的对象而且这些对象会根据文档的层级关系虚拟一个树型机构的DOM模型编译开发者进行解析CRUD操作
DDocument文档(XML文档) 磁盘上面的xml文件OObject对象(内存中对象) 把xml文件封装成对象MModel模型xml文件与对象对应关系模型
DOM关键字
Document文档文档对象代表整个XML文档Node节点Node节点也叫做Node对象一切都是节点元素属性文本Element元素元素/标签节点Attribute属性属性节点Text文本文本节点
XML解析(重点)
概述
XML解析就是在Java代码中通过一些技术去操作XML因为通常来说我们都需要对XML的数据进行CRUD特别是框架中XML作为配置文件我们填写了配置文件框架要进行读取那么就一定需要某些技术进行XML解析
XML解析四大技术 DOM解析由W3C提供的接口它将整个XML文档读入内存构建一个DOM树来对各个节点进行操作。不仅可以对文档进行查询还可以进行增删改。但对大型XML文件效果可能会不理想 SAX解析SAX不用将整个文档加载到内存基于事件驱动的API他按照xml文件的顺序一步一步的来解析解析速度快但是无法对文档内容进行增删改 JDOM解析JDOM具有树的遍历又有SAX的java规则。JDOM是处理XML的纯JAVA-APIAPI大量使用了Collections类且JDOM仅使用具体类而不使用接口 Dom4J解析Dom4J是一个简单的开源库用于处理XML、 XPath和XSLT它基于Java平台使用Java的集合框架全面集成了DOM、SAX、JAXP。Dom4J是目前在XML解析方面是最优秀的它合并了许多超出基本 XML 文档表示的功能包括集成的 XPath 支持、XML Schema 支持以及用于大文档或流化文档的基于事件的处理
Dom4J学习网站
Dom4j官网https://dom4j.org/XML解析学习网址http://www.51gjie.com/java/736.html 增删改查 新增数据 /** * Description: 新增xml文档 * Author: Neuronet * Date: 2023/5/7 14:06 * Return:**/Testpublic void testAdd() throws Exception{ // 1.创建一个文档对象 Document document DocumentHelper.createDocument(); // 2.创建一个根标签 Element users document.addElement(users); // 3.从根节点中创建两个user标签 Element userOne users.addElement(user); Element userTwo users.addElement(user); // 4.给user标签设置属性 userOne.addAttribute(id, 1); userTwo.addAttribute(id, 2); // 5.添加user标签的子标签 userOne.addElement(name).setText(Neuronet); userOne.addElement(age).setText(18); userOne.addElement(sex).setText(男); userTwo.addElement(name).setText(李四); userTwo.addElement(age).setText(8); userTwo.addElement(sex).setText(男); // 6.生成xml文件 // 6.1.创建dom4j美化xml输出格式的对象 OutputFormat outputFormat OutputFormat.createPrettyPrint(); // 6.2.指定生成的文件路径和名称 XMLWriter xmlWriter new XMLWriter(new FileWriter(new File(D:\\IdeaWorkspace\\xml-demo\\src\\cn\\itsource\\dom4j\\user.xml)), outputFormat); // 6.3.根据document对象生成xml xmlWriter.write(document); // 6.4.关闭资源 xmlWriter.close();}修改数据 /*** Description: 测试修改XML文档* Author: Neuronet* Date: 2023/5/7 14:45* Return:**/Testpublic void testUpdate() throws Exception{// 1.通过SAXReader对象读取xmlSAXReader saxReader new SAXReader();Document document saxReader.read(D:\\IdeaWorkspace\\xml-demo\\src\\cn\\itsource\\dom4j\\user.xml);// 2.获取到根标签也就是usersElement rootElement document.getRootElement();// 3.获取到所有user标签ListElement user rootElement.elements(user);// 4.修改李四的年龄为20岁for (Element element : user) {// 4.1.获取到user标签下name标签的文本值判断是否是李四的user对象if (李四.equals(element.elementText(name))){// 4.3.根据名称获取到age标签修改文本内容为20element.element(age).setText(20);}}// 5.生成xml文件// 5.1.创建dom4j美化xml输出格式的对象OutputFormat outputFormat OutputFormat.createPrettyPrint();// 5.2.指定生成的文件路径和名称XMLWriter xmlWriter new XMLWriter(new FileWriter(new File(D:\\IdeaWorkspace\\xml-demo\\src\\cn\\itsource\\dom4j\\user.xml)), outputFormat);// 5.3.根据document对象生成xmlxmlWriter.write(document);// 5.4.关闭资源xmlWriter.close();}获取数据 /*** Description: 获取标签属性* Author: Neuronet* Date: 2023/5/7 14:46* Return:**/Testpublic void testGetAttr() throws Exception{// 1.通过SAXReader对象读取xmlSAXReader saxReader new SAXReader();Document document saxReader.read(D:\\IdeaWorkspace\\xml-demo\\src\\cn\\itsource\\dom4j\\user.xml);// 2.获取到根标签也就是usersElement rootElement document.getRootElement();// 3.获取到所有user标签ListElement user rootElement.elements(user);// 4.遍历获取所有user标签的属性for (Element element : user) {Attribute id element.attribute(id);System.out.println(id.getText());}}删除数据 /*** Description: 删除标签* Author: Neuronet* Date: 2023/5/7 14:46* Return:**/Testpublic void testDelElement() throws Exception{// 1.通过SAXReader对象读取xmlSAXReader saxReader new SAXReader();Document document saxReader.read(D:\\IdeaWorkspace\\xml-demo\\src\\cn\\itsource\\dom4j\\user.xml);// 2.获取到根标签也就是usersElement rootElement document.getRootElement();// 3.获取到所有user标签ListElement user rootElement.elements(user);// 4.删除李四对应的user标签for (Element element : user) {// 4.1.判断此user标签是否是李四if (李四.equals(element.elementText(name))){// 4.2.使用父标签对象删除子标签rootElement.remove(element);}}// 5.生成xml文件// 5.1.创建dom4j美化xml输出格式的对象OutputFormat outputFormat OutputFormat.createPrettyPrint();// 5.2.指定生成的文件路径和名称XMLWriter xmlWriter new XMLWriter(new FileWriter(new File(D:\\IdeaWorkspace\\xml-demo\\src\\cn\\itsource\\dom4j\\user.xml)), outputFormat);// 5.3.根据document对象生成xmlxmlWriter.write(document);// 5.4.关闭资源xmlWriter.close();}