学习笔记26-bootstrapAndXMLAndTomcat

时间:2019-04-15
本文章向大家介绍学习笔记26-bootstrapAndXMLAndTomcat,主要包括学习笔记26-bootstrapAndXMLAndTomcat使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

bootStrap是一个前端开发的框架,来自于Twitter,它是基于HTML,css,JavaScript的,简单灵活,使web开发更加快捷
框架:是一个半成品的软件,开发人员可以在框架的基础上进行开发,简化编码
好处:
1.定义了很多css样式和js插件,开发人员可以利用这些样式和插件,实现丰富的页面效果
2.响应式布局,一套页面可以兼容不同分辨率的设备

bootstrap是依赖于jQuary,所以在引用bootstrap的js文件的时候要先引入jQuary的js文件
meta标签必须放在最前面(head头标签之后),其他内容放在他们之后

响应式布局就是可以适应不同分辨率的设备
实现依赖于栅格系统,将一行平均分成12个格子,可以指定元素占几个格子
步骤:
定义容器 相当于之前的table container 两边留白容器 container-fluid 容器占100%宽度
定义行: 相当于之前的tr row
定义元素:定义元素在不同的设备上占用的格子数目 col-设备代号-格子数目
设备代号: xs超小屏幕(手机) sm小屏幕(平板) md中等屏幕(桌面显示器) lg大屏幕(大桌面显示器)

注意:
1.一行中如果格子数目超过12,则自动换行
2.栅格类属性可以向上兼容
3.如果真实设备宽度小于栅格栅格类属性设备代码的最小值,则一个元素占满一整行

全局css样式
按钮 class=“btn btn-default”
图片class=“img-responsive” 图片在任意尺寸都占100%
图片形状 方形 img-circle圆形 img-thumbnail相框
表单项 class=“form-control”
组件:导航条,分页条
插件:轮播图

利用bootstrap的方式又做了一个旅游网的首页,重点是响应式布局

XML
XML Extensible Markup Language 可扩展标记语言
可扩展是因为它的标签都是自定义的
功能:存储数据 一般存储的是配置文件,在网络中进行传输
XML和HTML的区别
1.XML的标签都是自定义的,HTML的标签是预定义的
2.XML是用来存储数据的,HTML是用来展示数据的
3.XML的语法是严格的,HTML的语法是松散的

w3c 万维网联盟 World Wide Web Consortium

XML的基本语法
1.XML文件必须以.xml结尾
2.xml第一行必须定义为文档声明 <?xml 属性列表 ?> 属性有version版本号(必须写的) encoding编码方式(默认是ISO-8859-1) standalone(是否独立)依赖其他文件yes,不依赖其他文件no
3.xml文档中有且仅有一个根标签
4.属性值必须用引号引起来(单双都可以)
5.标签必须正确关闭
6.xml标签名称区分大小写

组成部分
1.文档声明

<?xml 属性列表 ?> 属性有version版本号(必须写的) encoding编码方式(默认是ISO-8859-1) standalone(是否独立)依赖其他文件yes,不依赖其他文件no

2.指令(结合css的) <?xml-stylesheet type='text/css' href='a.css'?>
3.标签 标签是自己定义的 1.标签可以为字母数字标点符号等 2.标签中不能有空格 3.标签不能以xml三个字母的组合开头 4.不能以数字标点符号开头
4.属性 id属性是唯一的
5.文本 CDATA区 在该区域中的数据会被原样展示 格式: <![CDATA[数据]]>

约束:规定XML文档的书写规则
作为框架的使用者,应该能够在xml中引入约束文档,并读懂约束文档

约束的分类 DTD一种简单的约束技术 schema一种复杂的约束技术

引入DTD文档到xml文档中
1.内部DTD 直接在xml中定义DTD约束规则
2.外部DTD 将约束规则定义在外部DTD文件中
分为本地文件
和网络文件

DTD文件的后缀名是.dtd Document type definition schema文件的后缀是.xsd 即xml schemas definition

引入schema的过程
1.输入根标签
2.引入xsi前缀 xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance
3.引入xsd文件命名空间 xsi:schemaLocation=“http://www.itcast.cn/xml student.xsd”
4.为每一个xsd约束命名一个前缀,作为标识 xmlns:x=“http://www.itcast.cn/xml” 只有有一个xsd文件可以无标识

解析:将xml的内容读取到内存
写入:将内存中的信息写入到xml

xml的解析有两种 DOM和SAX(simple API for XML)
DOM是一次性将xml文件加载到内存并生成一个DOM树 优点:操作方便,可以进行元素的增删改查 缺点:占用内存,效率低
SAX是逐行对xml的内容进行解析并读取,读到相应的元素标签触发相应的动作 优点:几乎不占内存,速度快 缺点:只能读取,不能增删改

XML常见的解析器
1.JAXP(Java API for XMLProcessing):sun公司提供的解析器,支持DOM和SAX两种方式,但不好用
2.DOM4J一款非常优秀的解析器,常用
Jsoup是一款java的HTML的解析器,可以直接解析某个URL地址,HTML文本内容,提供了一套非常省力的api,可以通过DOM,css以及类似于JQuary的方式取出和操作数据

Jsoup的使用
1.获得document对象 方式有三种
(1)解析xml或HTML文件 Jsoup.parse(File file,String charset)
(2)解析一段HTML字符串 Jsoup.parse(str)
(3)解析一个URL Jsoup.parse(URL url)
2.获取元素集合
3.获取元素
4.操作元素或获取元素属性

通过document对象来获取元素对象
getElementById()
getElementsByTag()
getElementsByAttribute()根据属性名称获取元素
getElementsByAttributeValue()根据属性名称和属性值获取元素

元素对象可以继续使用以上的方法获取它的子元素对象
attr(key)根据属性名获取属性值 属性名称是不区分大小写的
text()获取文本内容
html()获取标签体的所有内容(不含自身的标签)

Node对象是document和element对象的父类

以上的查询太过繁琐,可以使用select方法,该方法语法都是在selector类中定义的,和css的一些选择器语法基本相同

Xpath即为xml路径语言,用来确定xml文档中部分内容位置的语言
使用xpath需要额外导入xpath的包 需要先创建一个JXdocument对象在进行操作 还是select方法比较方便


网络通信三要素
ip:计算机设备在网络中的唯一标识
端口号:应用程序在计算机中的唯一标识
传输协议:规定数据传输的规则
基础协议:TCP和UDP TCP经过三次握手,安全协议,速度稍慢 UDP不安全协议,速度快

服务器:安装了服务器软件的计算机
服务器软件:接收用户的访问,处理请求,并做出响应
web服务器软件中可以部署web项目,让用户通过浏览器来访问这些项目 动态资源必须运行在web服务器上,又称为web容器

常见的java web服务器软件
webLogic oracle公司 大型服务器软件 支持所有的JavaEE规范 收费
webSphere IBM公司 大型服务器软件 支持所有的JavaEE规范 收费
JBoss JBoss公司 大型服务器软件 支持所有的JavaEE规范 收费
tomcat Apache基金组织的 中小型的服务器软件 仅仅支持少量的JavaEE规范 servlet/jsp 开源免费的

javaEE java语言在企业级开发中使用的技术规范总和 一共规定了13项大的规范

bin目录是binary二进制的简写,里面放的是可执行文件
webapps这个文件夹里就是存放我们的web项目的
work文件夹存放运行时的数据

8080是tomcat默认的端口号 tomcat是纯java编写的
tomcat在启动时出现的问题
1.黑窗口一闪而过 原因:未正确配置JAVA_HOME 解决方案:正确地配置JAVA_HOME
2.启动失败 原因:经查询日志发现端口被占用 解决方案:1.杀死占用端口的进程 2.换一个端口

进入命令行 netstat -ano 查看所有的被监听端口和进程号 通过端口可以找到进程号PID 然后到任务管理器杀死对应PID的进程
换端口的话 conf/server.xml 修改其中的几个端口

http协议的默认端口号就是80,tomcat的端口改成80后,在访问的时候就不用输端口号了

关闭 正常的 1.双击shutdown.bat 2.在黑窗口中Ctrl+C
点击命令行右上角X属于强制关闭(不建议)

tomcat部署项目的方式有三种
1.直接将项目从其他文件夹拷贝到webapps文件夹下 /hello项目的访问路径 -->虚拟目录 此时虚拟目录和项目文件是一样的
改进:可以将项目打包成war包,以减少网络传输,同时tomcat会自动解压war包,删除war包时也会自动删除解压后的项目
2.项目放在其他文件夹中(不在webapps文件夹中)
在conf/server.xml 的host标签体中增加 其中docBase是项目路径 path是虚拟目录
server.xml是整个tomcat的核心配置文件,所有的项目都用这一个配置文件,在这里配置不安全,所以不会这么做
server.xml改了必须重启服务器 所以不建议
3.在catalina/localhost 文件夹中创建一个xml文件 里面写 也会指向项目路径 而xml的名称就是虚拟目录,这样更改项目,删除项目都不用中断服务,且刷新即可显示最新内容
bak backup备份的意思

静态项目里面只能放静态资源,动态项目里面可以放动态资源和静态资源
动态项目的目录结构:
项目根目录–>下面分两部分 1.静态资源 2.WEB-INF目录–>WEB-INF目录下面是动态资源(1.web.xml(web项目的配置文件) 2.classes目录 存放项目的字节码文件 3.lib目录 存放项目依赖的jar包)

将tomcat和IDEA集成,在run那里的edit Configuration添加tomcat 如果想保持热部署的话,把Update那的两个选项都改成update resources 只有资源改变时可以热部署


servlet 即server applet 运行在服务器上的小程序
web项目中的动态资源是一些具有一定逻辑的java代码,而这些java代码需要依赖于tomcat才能执行,java代码被tomcat识别的规则就是servlet(接口)

servlet入门
1.首先需要创建一个javaweb项目
2.创建一个类实现servlet接口
3.实现接口的抽象方法
4.配置servlet 在web.xml配置文件中配置

servlet执行的原理
1.我们在地址栏输入URL地址(http://ip地址:端口号/项目名称/访问的资源)
2.通过ip和端口号找到了tomcat服务器 tomcat服务器会解析后面的资源路径,找到对应的项目
3.根据资源名称去对应项目的web.xml里面找中是否有一致的,有就会找到其对应的name,根据name找到该servlet的类的全路径
4.tomcat利用反射原理,Class.foeName(类的全路径)将该类加载到内存,生成它的字节码对象,并创建该类的对象
5.调用其service方法(因为它实现了servlet接口,肯定了实现了该方法)

servlet中的5个方法
init()初始化,只会被初始化一次 servlet是单例的,多个用户同时访问时可能会出现线程安全问题,避免方式,在servlet中不要定义成员变量或者即便定义了成员变量但是不修改它的值
service()每次访问都会执行
destroy()服务正常关闭的情况下会执行一次 destroy方法在servlet被销毁之前执行,用于释放资源
getServletConfig()返回它的配置文件对象
getServletInfo()返回它的一些信息
后两个方法很少用到

servlet默认情况下第一次访问时被创建,也可以在项目启动的时候被创建 在标签下进行设置 load-on-startup 值为负数时是第一次被访问时创建(默认是-1),值为0或正整数时项目启动时被创建,整数代表它被初始化的顺序,数越小越先执行,相同时容器自主选择

servlet3以上的版本开始支持注解,不用在xml配置文件中配置了,比较简单 @WebServlet
以上步骤都一样,就是不用有web.xml了,直接在注解中配置即可

IDEA会为tomcat部署的每个项目单独建立一个项目文件夹(里面有三个目录 conf work logs),并单独配置一份配置文件(在conf中server.xml,在conf/catalina/localhost中配置每个资源信息的xml)
工作空间->项目文件夹->.idea out web src四个目录 及xxx.iml(idea给项目的配置文件)
src放置我们java源码,.idea是idea的一些配置文件,web目录放置我们的web资源,
out是编译后所有资源放置的文件夹,下面分production和artifacts,
前者放置的是java.class文件及其目录结构,后者放置的是web项目的资源(包含所有的web目录下的资源和lib下的jar包资源以及编译后的.class资源 artifacts下面是项目war包–>各种web资源+WEB_INF–>)
WEB-INF–>classes(字节码文件及其包结构),lib(jar包),web.xml

WEB-INF目录下的资源浏览器是访问不到的(目前)