XMLJspServlet基础学习笔记
Posted 工地的搬砖少年
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XMLJspServlet基础学习笔记相关的知识,希望对你有一定的参考价值。
XML、Jsp、Servlet基础学习笔记
XML、Jsp、Servlet基础学习笔记1.XML
2.Jsp
3.Servlet
Web.xml的配置注解配置
1.XML
1.1XML的基本语法
XML是一种表示数据的格式,即可扩展标记语言。按照xml规则编写的文本文件称为xml文件。XML与html的语法类似,但在很多地方上有所不同。
有开始标记必须有结束标记(标记是成套的),标记可以包含标记(可以嵌套,嵌套成对嵌套。
大小写敏感
如:<Message></Message> <message></message>
标记可以是单标记,但必须自己闭合 <xxxx/>
必须有根标记,也叫做根元素。(根元素是其他元素的父元素)
xml文档声明必须放在第一行,否则会报错
<?xml version="1.0" encoding="UTF-8"?>
不建议以XML xml Xml 等跟xml相关名字
xml中特殊符号的表示查询相关文档:http://www.w3school.com.cn/xml/xml_syntax.asp
注释使用的方法与HTML相同
<!-- 注释内容 -->
<!-- 给命名空间起别名 xmlns:w3="http://www.w3school.com.cn" -->
<!-- 当没有起名时会引入默认的命名 xmlns="http://www.w3school.com.cn" -->
1.2XML约束
定义了约束之后,可以防止我们写错文档。比如某个配置文件,按照相同的约束来书写,更容易让别人阅读和别的程序读取。
平时编写xml文件的时候,是没有固定规则的,标记名,属性名,属性值我们可以按照我们的需求随意来开发。
但是当我们使用别人的框架的时候,一般需要提供一个配置文档,来配置我们使用这个框架的时候的一些属性。这个时候,这个配置文档就需要按照框架的要求来编写。框架的要求就是对xml文档的约束。我们可以通过DTD和Schema文档来编写对文档的约束。
DTD约束XML文档
三种引入方法:1,内部引入;2,外部引入(本地);3,外部引入(网络) 具体参考:http://www.w3school.com.cn/dtd/dtd_intro.asp
示例:Struts框架的配置文档的首行
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator 1.0.3//EN" "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
schema约束XML文档
schema约束可用来替代DTD约束,是一种比较厉害的约束。它的约束文档本身也是一个xml文档,后缀为xsd。它的语法更加容易阅读,更加友好,功能更加强大,类型更加完善,里面有命名空间。
同样,我们也不需要写schema约束文档,我们只需要直接使用框架提供给我们的约束文档即可。
schema文档的使用:http://www.w3school.com.cn/schema/schema_howto.asp
1.3XML解析方式
DOM文档对象模型(树形结构)DOM方式解析XML,就是把xml文档加载到内存形成树形结构,可以进行增删改的操作。XML和HTML中的DOM是相似的,都是用来解析标签的,解析成一个树,并得到一个document对象。
我们可以使用dom4j来进行dom方式的解析。dom4j是一个开源的xml解析软件包。
解析的时候需要做的事情
解析根元素
解析有哪些子元素
解析一个元素又哪些属性
得到元素的文本内容
修改、添加、删除某个元素节点
修改、添加、删除某个属性
public class ParseXML {
public static void main(String[] args) throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read("src/NewFile.xml");
Element root = document.getRootElement();
// System.out.println(root.getName());
Iterator<Element> it = root.elementIterator();
while(it.hasNext()) {
Element ele = it.next();
if(ele.getName().equals("good")) {
Element name = ele.element("name");
System.out.println(name.getText());
}
// System.out.println(ele.getName());
// Iterator<Attribute> attributes = ele.attributeIterator();
// while(attributes.hasNext()) {
// Attribute ab = attributes.next();
// System.out.println(ab.getName()+":"+ab.getValue());
// }
}
//xml:读取xml文档的重要两个方法运用 Element Attribute
Element ele = null;
// ele.elmentIterator //遍历方法
// ele.element(); //获取某个指定属性名的值
}
}
解析XML的Java程序
2.Jsp
2.1jsp的简介与使用
jsp是由java和html代码组成的,用于开发动态页面。由于java和html的混合使用,导致可读性和可维护性很低,所以在学习的时候仅到了解的层面。
jsp头部导入包或java类
<%@page import="com.sikiedu.model.User"%>
jsp定义表达式,可在里面定义成员变量
<%! int count=0;%>
jsp的内容输出表达式,在词可输出变量或方法内容,一个jsp对应一个java类,运行的时候,一个jsp会创建一个对应的java对象
<%=count%>
jsp的注释,在java代码中依然可以使用java支持的注释
<%-- --%>
jsp的输出方法与与java不同,System.out.println();是输出在控制台上。
<% out.println(count);%> //输出在页面上
2.2request、session、application、pageContext
作用域:page<request<session<application
request
request请求返回数据消息,示例:登录返回校验信息
request.setAttribute("message", "<font color='red'>登陆失败,用户名或密码错误</font>");
request.getRequestDispatcher("login.jsp").forward(request, response);
request请求接收信息
Object msg = request.getAttribute("message");
if(msg!=null) out.print(msg);
session
开始session会话,并传递对象
session.setAttribute("user", user);
接收session会话的传递对象
Object o = session.getAttribute("user");
if(o!=null){
User user = (User)o;
out.print("当前登录用户:"+user.getUsername()+"<br />");
}
application
application用于保存整个WebApplication的生命周期内都可以访问的数据,任何客户端,任何浏览器都可以访问。网站启动起来,创建一个applition,当网站关闭后,application被销毁。一个web应用只有一个application对象。示例:显示网站登录人数
int number = 0;
if(application.getAttribute("userNumber")!=null){
number = (Integer)application.getAttribute("userNumber");
}
number++;
application.setAttribute("userNumber", number);
Object o2 = application.getAttribute("userNumber");
if(o2!=null){
out.println("当前登录用户:"+o2+"个!<br />");}
pageContext
jsp的内置对象之一page的作用域只在当前页面有效,如果jsp页面发生了请求转发的话,当前页面的page对象就不见了。page就是this当前对象。
1,setAttribute(PAGE_SCOPE、REQUEST_SCOPE、SESSION_SCOPE、APPLICATION_SCOPE)
2,getOut() getRequest() getResponse() getServletContext() getSession()
2.3请求转发与重定向
请求转发,是将消息传递给下一个指定的页面再返回给客务端
request.getRequestDispatcher("login.jsp").forward(request, response);
重定向,当消息传递到服务端时,会发起新的request到客户端,因此原本的消息不能够传递到页面上。
response.sendRedirect("login.jsp");
3.Servlet
3.1Servlet的创建与使用
如果一个jsp页面单纯的只是处理逻辑,不做页面显示用的话,这个时候可以让这个请求交给Servlet来处理。
Servlet是一个java类,继承自javax.servlet.http.HttpServlet。一般由doGet和doPost方法。
Seruvlet的生命周期方法,第一次被请求的时候会调用init,每一次被请求会调用service方法,终止调用destroy。
3.2Servlet的配置
Servlet由两种配置方法:1.XML配置文件;2.注解的方法@WebServlet
Web.xml的配置
<servlet>
<servlet-name>LoginServlet</servlet-name>//类名
<servlet-class>com.sikiedu.servlet.LoginServlet</servlet-class>//类所在路径
</servlet>
//解析
<servlet-mapping>
<servlet-name>RegisterServlet</servlet-name>
<url-pattern>/register_do</url-pattern>访问地址
</servlet-mapping>
注解配置
在Servlet类前进行注解,@WebServlet("/register_do")。
以上是关于XMLJspServlet基础学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
unity shader学习笔记 shader基础结构以及Properties面板
[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段