XML
XML
xml用来?
编写配置文件
数据传输
加入有一个手机APP客户端,是一个网上商城的软件,打开软件需要显示商品列表。那么这个商品列表的数据就可以使用xml来传输。
xml语法
大小写敏感
有开始标记必须有结束标记(标记是成套的)
标记可以是单标记,但必须自己闭合
标记可以包含标记(可以嵌套,嵌套成对嵌套)
标记可以有自己的属性(属性值必须加引号)
标记里面可以有内容
必须有根标记,也叫做根元素。(根元素是其他元素的父元素)
xml文档声明
<?xml version="1.0" encoding="UTF-8"?>必须放在第一行
标记命名
区分大小写
不能使用空格和冒号
不建议以XML xml Xml 等跟xml相关名字
xml中特殊符号的表示
注释
对XML的约束 DTD,Schema
平时编写xml文件的时候,是没有固定规则的,标记名,属性名,属性值我们可以按照我们的需求随意来开发。
但是当我们使用别人的框架的时候,一般需要提供一个配置文档,来配置我们使用这个框架的时候的一些属性。这个时候,这个配置文档就需要按照框架的要求来编写。框架的要求就是对xml文档的约束。我们可以通过DTD和Schema文档来编写对文档的约束。
定义了约束之后,可以防止我们写错文档
比如某个配置文件,按照相同的约束来书写,更容易让别人阅读和别的程序读取。
什么是DTD
DTD用来约束xml文档,规定xml文档中元素的名称,子元素的名称和顺序,元素的属性。
一般来说我们很少编写自己的DTD文档约束,我们一般会遵循框架提供的DTD约束文档来编写配置文件。
当我们编写的xml不符合DTD约束规则的时候,会报错,方便我们找错。
怎么引入DTD约束
1:内部引入 2:外部引入(本地) 3:外部引入(网络)
示例:Struts框架的配置文档的首行
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
schema约束(比DTD牛逼,替代DTD)
schema约束文档本身也是一个xml文档,后缀为xsd
语法更加容易阅读,更加友好
功能更加强大,类型更加完善
里面有命名空间
同样,我们也不需要写schema约束文档,我们只需要直接使用框架提供给我们的约束文档即可。
schema文档的使用
xml解析方式
DOM方式
DOM文档对象模型(树形结构)
DOM方式解析,就是把xml文档加载到内存形成树形结构,可以进行增删改的操作。
xml里面的dom
html里面的dom
差不多,都是用来解析标签的,解析成一个树,并得到一个document对象。
我们可以使用dom4j来进行dom方式的解析。
dom4j是一个开源是xml解析软件包。
解析的时候需要做的事情
1,解析根元素
2,解析有哪些子元素
3,解析一个元素又哪些属性
4,得到元素的文本内容
5,修改、添加、删除某个元素节点
6,修改、添加、删除某个属性
dom4j解析xml 代码
jsp
简单来说JSP = html + Java代码
在一个正常的网页上,加入java代码之后,就成为了一个jsp页面。
jsp用来开发动态页面
什么是静态页面,什么是动态页面!
某网址首页,登录后用户名的显示。
静态页面上的内容(文字、图片)是不改变的。Web前端工程师开发出来后的页面就是一个静态页面。我们后端人员需要把静态页面变成动态页面。
tomact是干什么的
Eclipse编写代码—>.java—>jdk---->.class—>jre运行
Eclipse编写代码—>.jsp/servlet–>tomcat运行
客户端访问tomcat
项目结构
源码
web内容(html,jsp,图片等资源)
web-inf:配置文件和java程序
web.xml
classes
lib
修改字体大小
window - prefer - general - appearance - colors and fonts
编码格式
默认的编码
ISO-8859-1
乱码问题以及怎么解决
utf-8
在jsp页面上写Java代码
<%
%>
这个东西可以多次出现
实现一个显示当前登录的用户名
jsp内容输出表达式
<%= %>
jsp中java代码可以和页面html代码组合使用
成员变量和局部变量
一个jsp对应一个java类,运行的时候,一个jsp会创建一个对应的java对象。
<%! %> jsp定义表达式
注释
<%-- --%>
不起任何实际作用
还可以注释 <% %>
在java代码中依然可以使用java支持的注释
在jsp中引入java类
<%@page import=“java.util.Random”%>
<%@page import=“java.util.Random,java.text.*”%>
http协议和jsp内置对象
何为协议以及http协议
协议:当我们跟别人合作的时候,需要是先定义好双方要做的事情,利益怎么分配等事情。免得在合作的时候出现分歧。
http协议规定了我们在发起http请求的时候,这个请求的数据包里面都包含了什么样的数据以及数据按照什么样的先后顺序存放在数据包里面。
http请求和http响应
何为jsp的内置对象
不需要声明,不需要创建,就可以直接使用的对象,就是内置对象。
九大内置对象。
session会话
session request 生命周期
session对象什么时候会被销毁
关闭浏览器
到达有效时间(长时间不操作网站)
application
web容器的生命周期
网站启动起来,创建一个applition,当网站关闭后,application被销毁。
一个web应用只有一个application对象。
Servlet
何为Servlet
如果一个jsp页面单纯的只是处理逻辑,不做页面显示用的话,这个时候可以让这个请求交给Servlet来处理。
jsp页面本质上也是Servlet
Servlet创建
Servlet是一个类,继承自javax.servlet.http.HttpServlet
Servlet两种配置方式
1,xml配置文件
2,注解的方式@WebServlet
先详解web.xml
配置方式
<servlet>
<servlet-name>x</servlet-name>
<servlet-class>xx</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name></servlet-name>
<url-pattern></url-pattern>
</servlet-mapping>
得到当前项目名
String basePath = "/"+request.getServletContext().getContextPath();
可以在servlet中使用 response.getWriter().append 给客户端响应来添加页面标签代码
Servlet生命周期
第一次被请求的时候会调用init
每一次被请求会调用service方法
终止调用destroy
ServletContext(Servlet环境,就是jsp的内置对象之一)
整个工程可以认为是一个ServletContext对象(我们在jsp页面获取到的application)
可以认为ServletContext管理着生成的所有的Servlet
(ServletContext里面都可以存放东西,在其他任意地方都可以取)
怎么获取?
jsp里面:application内置
servlet里面:this.getServlet.Context()
ServletConfig
一个Servlet有一些配置信息,一个Servlet对应的配置信息对应一个ServletConfig对象。
怎么获取?
this.getServletConfig();
转发和重定向
转发通过request
重定向通过response
转发
里面只有一个请求(可以通过request来传递数据)
浏览器地址不会发生改变
request.getRequestDispatcher("/xxx.jsp").forward(request,response);
重定向
里面有两个请求(通过url传递数据)
通过application来传递数据,不这么做!!!
地址会发生改变
response.sendRedirect("/project_name/xxx.jsp");
通过response
转发
里面只有一个请求(可以通过request来传递数据)
浏览器地址不会发生改变
request.getRequestDispatcher("/xxx.jsp").forward(request,response);
重定向
里面有两个请求(通过url传递数据)
通过application来传递数据,不这么做!!!
地址会发生改变
response.sendRedirect("/project_name/xxx.jsp");