回顾:
xml: 可扩展标记语言
组成:
文档声明:
元素: 自定义
属性:
注释:
转义符:
字符区:
约束:
dtd: 约束xml文件中标签的名称和次序
schema: 可以进一步约束标签体内容的类型
解析xml:
dom4j sax pull
1.导入jar包
2.创建SAXReader对象
SAXReader reader = new SAXReader();
3.获取xml文件的流信息(放在src目录下)
Document document = reader.read(is);
4.从dom中获取元素对象
Element rootEle = document.getRootElement(); // 获取根标签对象
rootEle.elements(); // 获取所有的子标签对象
rootEle.elements("标签名称"); //获取指定名称的子标签对象
rootEle.element("标签名称");
rootEle.getName(); // 获取标签的名称
rootEle.getText();
rootEle.elementText("子表签名称"); // 获取指定子标签体的文本信息
rootEle.attributeValue("属性名称"); // 获取当前标签上指定属性的值
Web服务器
WEB概念:
web资源:
web 英文直译"网"的意思 ----> 泛指整个互联网环境
资源:一切数据文件
web资源:通过网络可以访问到的资源,通常指的是一切放在服务器上的数据文件
web资源的分类:
静态的web资源:
内容是一成不变的
无论任何人,任何时间,任何地点访问同一个资源,该资源所展示的==效果==是一样的.
动态的web资源:
内容有可能在不同的时间或者不同的人访问的时候会发生改变的
web技术分类:
静态的web技术:
eg: html css JavaScript
动态的web技术:
eg: servlet jsp
软件的架构: 结构
网络中有很多的计算机,它们直接的信息交流,我们称之为:交互。 在互联网交互的过程的有两个非常典型的交互方式——B/S 交互模型和C/S 交互模型。
B/S 交互模型(B/S架构)
就是浏览器和服务器交互模型。
C/S 交互模型(C/S架构)
就是客户端和服务器交互模型
相同点:
1.都是基于请求和响应的
请求: 浏览器发送给服务器的内容 ★
响应: 服务器返回给浏览器的内容 ★
2.必须先有请求后有响应
3.一次请求对应一次响应,请求和响应必须成对出现.
不同点:
c/s:需要客户下载客户端,页面比较炫,和服务器交互少,可以在客户端处理部分业务逻辑,可降低服务器的压力.需要维护客户端和服务器端
b/s:只需要客户有一个浏览器,一切页面从服务器加载,和服务器交互频繁,由服务器处理业务逻辑,服务器压力较大.只需要维护服务器端.
web服务器:
概述:
本质上就是一台提供服务的电脑,将我们编写好的web项目发布出去,别人就可以通过网络访问到我们的项目(资源)
我们给服务器安装了什么样的软件,就可以提供什么样的服务,我们管它叫什么什么服务器
常见的web服务器软件:
服务器软件名称 厂商 特点
Weblogic oracle 大型的收费的支持javaEE所有规范的web服务器(servlet和jsp)
websphere ibm 大型的收费的支持javaEE所有规范的web服务器(servlet和jsp)
JBoss JBoss 开源,支持JavaEE规范,占用内存、硬盘小,安全性和性能高
tomcat apache组织 小型的免费的支持servlet和jsp规范的"web服务器"
==Tomcat服务器★★★==
下载:
http://tomcat.apache.org
core:
zip:可以在window上运行的(我们今天使用)
tar.gz:运行在linux上的
安装:
安装路径不要有中文
解压缩即可
目录结构
bin:存放可执行的文件
批处理文件(*.bat)
★conf:存放配置文件
lib:存放的是tomcat运行时和项目运行时必须的jar包
logs:存放的是日志文件(catalina.out)
temp:存放临时文件(不用管)
★★webapps:存放要发布的web项目
★work:存放项目运行时jsp转成的java文件和class文件
启动
双击 tomcat目录下/bin/startup.bat
关闭
方式1:点 x
方式2:ctrl + c
(记住)方式3:双击 tomcat目录下/bin/shutdown.bat
访问tomcat服务器的格式:
浏览器访问tomcat服务器的格式:
http://主机地址:端口号
http://127.0.0.1:8080
http://localhost:8080
http://192.168.134.56:8080/
浏览器和服务器的数据交互需要遵循http协议
tomcat服务器默认端口为 : 8080
http默认访问端口 : 80
格式:http://ip地址:端口号
eg: http://localhost:8080
配置:常见问题
一闪而过:
查看JAVA_HOME是否配置正确
端口占用: 可以修改Tomcat的端口号
修改 tomcat目录下/conf/server.xml 大约70行
需要将 8080 修改成其他的端口号
端口号:0~65535
0~1024:系统预留的端口号 一般不要使用 但是可以使用80端口
80端口是http协议的默认端口号,访问的时候可以不写端口号
==web项目==
目录结构:★
部署到tomcat服务器上的目录结构:
web项目本质上就是一个文件夹
myweb: web项目名称
|-- html
|-- css js img ...
|-- WEB-INF : 受保护的目录,通过浏览器不能访问该文件夹下的任何信息
|-- lib: 存放当前项目所需要的第三方jar包
|-- classes : web项目中java类编译后的class文件
|-- web.xml : web项目的核心配置文件(servlet2.5之前是必须要有的,3.0以后可有可无)
项目访问路径:
格式: http://主机地址:端口号/项目名称/资源的完整路径
http://192.168.134.56:80/myweb/index.html
http://192.168.134.56:80/myweb/html/index1.html
http://192.168.134.56:80/myweb/WEB-INF/index2.html
部署web项目到tomcat服务器
方式1: 直接将项目放到tomcat的webapps目录下
方式2:使用虚拟路径 (配置完毕后需要重启服务器)
a:自定义项目存放位置
b:更改tomcat配置文件(server.xml)
在server.xml的最后添加
写在Host标签中
path: 浏览器访问时的项目(该名称和项目名称一致)
docBase: 自定义项目存放的路径
方式3:配置独立xml文件 (无需重启服务器自动加载和卸载项目)
a:自定义项目存放位置
b:在tomcat/conf/Catalina/localhost目录中配置xml文件
tomcat和idea整合
Servlet入门
接口: 制定规范
Servlet的概述:
Servlet就是运行在web服务器上的java程序,本质上就是一个java类.
==一个类要想通过浏览器被访问到,那么这个类就必须直接或间接的实现Servlet接口==
==作用:==
接收浏览器的请求
处理请求
生成响应信息
Servlet入门★
Servlet2.5:
1.编写一个类
实现servlet接口
重写Service(request,response)方法
2.编写配置文件(web.xml)
注册servlet
绑定路径
3.测试
http://localhost:8080/项目名称/绑定路径
Servlet3.0:
注解方式实现
1.编写一个类
实现servlet接口
重写Service(request,response)方法
2.在servlet类上添加 @WebServlet(name = "Demo" ,urlPatterns = "/demo")
name: 起名称
urlPatterns: 访问路径
Servlet API
接口: 制定规范
对象:Servlet:接口
方法/描述:(掌握★)init:初始化 --- (掌握★)service:提供服务 --- (掌握★)destroy:销毁 --- (理解)getServletConfig():获取当前Servlet的配置对象 --- (了解)getServletInfo():获取Servlet信息
对象:GenericServlet:(通用Servlet)
方法/描述:实现了servlet接口的抽象类,实现servlet中除service方法之外的所有方法
对象:HttpServlet:抽象类
方法/描述:继承GenericServlet,实现了Servlet的所有方法.
编写servlet的最终方式: 继承HttpServlet,重写doGet和doPost方法
Servlet执行流程
Servlet的生命周期★
从创建到死亡的过程
控制生命周期的三个方法:
init:初始化
service:提供服务
destroy:销毁
面试题总结:
当浏览器第一次访问该servlet的时候,服务器会给我们创建该servlet的对象,并调用init()方法进行初始化,init()方法执行完毕后service方法会跟着执行.
以后再访问该servlet的时候,直接调用service()方法提供服务,并且是访问一次调用一次.(服务器不会再创建该servlet的对象,也不会调用init()方法进行初始化)
当服务器正常关闭的时候或项目从服务器中移除的时候,服务器会的调用destroy()方法,将该servlet的对象销毁
★: 不论访问多少次只有一个servlet对象
单实例,多线程