JavaWeb1-3学习总结(BootStrap,xml,tomcat,servlet)

1.1 BootStrap

1、概念

一个前端开发的框架,Bootstrap,来自 Twitter,是目前很受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JavaScript 的,它简洁灵活,使得 Web 开发更加快捷。

2、好处

  1. 定义了很多的css样式和js插件。我们开发人员直接可以使用这些样式和插件得到丰富的页面效果。
  2. 响应式布局

3、响应式布局

同一套页面可以兼容不同分辨率的设备。
实现:依赖于栅格系统:将一行平均分成12个格子,可以指定元素占几个格子

4、实现步骤

官方文档:https://v4.bootcss.com/docs/4.0/getting-started/introduction/
  1. 定义容器。相当于之前的table
    • 容器分类:
      1. container:两边留白
      2. container-fluid:每一种设备都是100%宽度
  2. 定义行。相当于之前的tr 样式:row
  3. 定义元素。指定该元素在不同的设备上,所占的格子数目。样式:col-设备代号-格子数目
    • 设备代号:
      1. xs:超小屏幕 手机 (<768px):col-xs-12
      2. sm:小屏幕 平板 (≥768px)
      3. md:中等屏幕 桌面显示器 (≥992px)
      4. lg:大屏幕 大桌面显示器 (≥1200px)
  • 注意:
    1. 一行中如果格子数目超过12,则超出部分自动换行
    2. 栅格类属性可以向上兼容。栅格类适用于与屏幕宽度大于或等于分界点大小的设备。
    3. 如果真实设备宽度小于了设置栅格类属性的设备代码的最小值,会一个元素沾满一整行。

2.1 XML

1、概念

Extensible Markup Language 可扩展标记语言(标签均为用户自己定义)

2、 功能

存储数据
  1. 配置文件
  2. 在网络中传输

3、 xml与html的区别

  1. xml标签都是自定义的,html标签是预定义。
  2. xml的语法严格,html语法松散
  3. xml是存储数据的,html是展示数据

4、语法:

  • 基本语法:
  1. xml文档的后缀名 .xml
  2. xml第一行必须定义为文档声明
  3. xml文档中有且仅有一个根标签
  4. 属性值必须使用引号(单双都可)引起来
  5. 标签必须正确关闭
  6. xml标签名称区分大小写
<?xml version='1.0' ?>
<users>
	<user id='1'>
		<name>zhangsan</name>
		<age>23</age>
		<gender>male</gender>
		<br/>
	</user>
	
	<user id='2'>
		<name>lisi</name>
		<age>24</age>
		<gender>female</gender>
	</user>
</users>

5、组成:

1. 文档声明
  1. 格式:<?xml 属性列表 ?>
  2. 属性列表:
    • version:版本号,必须的属性
    • encoding:编码方式。告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1
    • standalone:是否独立
      • yes:不依赖其他文件
      • no:依赖其他文件
2. 指令(了解):结合css的
 <?xml-stylesheet type="text/css" href="a.css" ?>
3. 标签:标签名称自定义的
  • 规则:
    • 名称可以包含字母、数字以及其他的字符
    • 名称不能以数字或者标点符号开始
    • 名称不能以字母 xml(或者 XML、Xml 等等)开始
    • 名称不能包含空格
4. 属性:

id属性值唯一

5. 文本:
  • CDATA区:在该区域中的数据会被原样展示
    • 格式: <![CDATA[ 数据 ]]>

6、解析

操作xml文档
  1. 解析(读取):将文档中的数据读取到内存
  2. 写入:将内存中的数据保存到xml文档中。持久化的存储
解析xml的方式:
  1. DOM:将标记语言文档一次性加载进内存,在内存中形成一颗dom树
    • 优点:操作方便,可以对文档进行CRUD的所有操作
    • 缺点:占内存
  2. SAX:逐行读取,基于事件驱动的。
    • 优点:不占内存。
    • 缺点:只能读取,不能增删改

7、JSoup解析xml

//2.1获取student.xml的path
String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
//2.2解析xml文档,加载文档进内存,获取dom树--->Document
Document document = Jsoup.parse(new File(path), "utf-8");
//3.获取元素对象 Element
Elements elements = document.getElementsByTag("name");
System.out.println(elements.size());
//3.1获取第一个name的Element对象
Element element = elements.get(0);
//3.2获取数据
String name = element.text();
System.out.println(name);
相关对象
  1. Jsoup:工具类,可以解析html或xml文档,返回Document
    * parse:解析html或xml文档,返回Document
    * parse​(File in, String charsetName):解析xml或html文件的。
    * parse​(String html):解析xml或html字符串
    * parse​(URL url, int timeoutMillis):通过网络路径获取指定的html或xml的文档对象
  2. Document:文档对象。代表内存中的dom树
    * 获取Element对象
    * getElementById​(String id):根据id属性值获取唯一的element对象
    * getElementsByTag​(String tagName):根据标签名称获取元素对象集合
    * getElementsByAttribute​(String key):根据属性名称获取元素对象集合
    * getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合
  3. Elements:元素Element对象的集合。可以当做 ArrayList< Element>来使用
  4. Element:元素对象
    1. 获取子元素对象
      * getElementById​(String id):根据id属性值获取唯一的element对象
      * getElementsByTag​(String tagName):根据标签名称获取元素对象集合
      * getElementsByAttribute​(String key):根据属性名称获取元素对象集合
      * getElementsByAttributeValue​(String key, String value):根据对应的属性名和属性值获取元素对象集合

    2. 获取属性值
      * String attr(String key):根据属性名称获取属性值

    3. 获取文本内容
      * String text():获取文本内容
      * String html():获取标签体的所有内容(包括字标签的字符串内容)

  5. Node:节点对象
    * 是Document和Element的父类

8、XPath

XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言
//1.获取student.xml的path
String path = JsoupDemo6.class.getClassLoader().getResource("student.xml").getPath();
//2.获取Document对象
Document document = Jsoup.parse(new File(path), "utf-8");
//3.根据document对象,创建JXDocument对象
JXDocument jxDocument = new JXDocument(document);


//4.结合xpath语法查询
//4.1查询所有student标签
List<JXNode> jxNodes = jxDocument.selN("//student");
for (JXNode jxNode : jxNodes) {
    System.out.println(jxNode);
}
System.out.println("--------------------");


//4.2查询所有student标签下的name标签
List<JXNode> jxNodes2 = jxDocument.selN("//student/name");
for (JXNode jxNode : jxNodes2) {
    System.out.println(jxNode);
}
System.out.println("--------------------");


//4.3查询student标签下带有id属性的name标签
List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id]");
for (JXNode jxNode : jxNodes3) {
    System.out.println(jxNode);
}
System.out.println("--------------------");


//4.4查询student标签下带有id属性的name标签 并且id属性值为itcast
List<JXNode> jxNodes4 = jxDocument.selN("//student/name[@id='itcast']");
for (JXNode jxNode : jxNodes4) {
    System.out.println(jxNode);
}

3.1. Tomcat

一种中小型的免费的Web服务器

安装目录各文件夹:

tomcat根目录各文件夹作用

3.2. Servlet

1、概念

运行在服务器端的小程序
  • Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。
  • 将来我们自定义一个类,实现Servlet接口,复写方法。

2、 执行原理:(3.0后可以使用注解配置(@WebServlet(“资源路径”)),不再使用xml)

  1. 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径
  2. 查找web.xml文件,是否有对应的< url-pattern >标签体内容。
  3. 如果有,则在找到对应的< servlet-class>全类名
  4. tomcat会将字节码文件加载进内存,并且创建其对象
  5. 调用其方法

3、生命周期

1. 被创建:执行init方法,只执行一次
  • Servlet什么时候被创建?

    • 默认情况下,第一次被访问时,Servlet被创建
    • 可以配置执行Servlet的创建时机。
      • 在< servlet>标签下配置
        1. 第一次被访问时,创建
          * < load-on-startup>的值为负数
        2. 在服务器启动时,创建
          • < load-on-startup>的值为0或正整数
  • Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的

    • 多个用户同时访问时,可能存在线程安全问题
    • 解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对修改值
2. 提供服务:执行service方法,执行多次
  • 每次访问Servlet时,Service方法都会被调用一次。
3. 被销毁:执行destroy方法,只执行一次
  • Servlet被销毁时执行。服务器关闭时,Servlet被销毁
  • 只有服务器正常关闭时,才会执行destroy方法。
  • destroy方法在Servlet被销毁之前执行,一般用于释放资源

4、体系结构

Servlet – 接口
|
GenericServlet – 抽象类
|
HttpServlet – 抽象类

  • GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象

    • 将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可
  • HttpServlet:对http协议的一种封装,简化操作

    1. 定义类继承HttpServlet
    2. 复写doGet/doPost方法

5、Servlet相关配置

  1. urlpartten:Servlet访问路径
    1. 一个Servlet可以定义多个访问路径 : @WebServlet({"/d4","/dd4","/ddd4"})
    2. 路径定义规则:
      1. /xxx:路径匹配
      2. /xxx/xxx:多层路径,目录结构
      3. *.do:扩展名匹
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值