Java.docx
- 文档编号:27486277
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:33
- 大小:666.62KB
Java.docx
《Java.docx》由会员分享,可在线阅读,更多相关《Java.docx(33页珍藏版)》请在冰豆网上搜索。
Java
一、Java部分:
Jstl:
<%@taglibprefix="c"uri="
1、页面分割字段:
‘$fn{fn:
substring(字段,开始位置,fn:
indexof(字段,’分隔符’))}’
2、Js中获取style的属性时例如:
Background-color区分大小写backgroundColor
3、重定向与转发的区别:
重定向(Redirect):
浏览器地址会变,目的任意,
转发(forward):
同一个应用的内部组件才能用转发,可以共享request对象,效率高
4、解析xml
1.解析xml:
bytexmlByte[]转换成map集合
4.1、DOM解析:
xmlversion="1.0"encoding="ISO-8859-1"?
>
新建Java类,解析如下:
packagecom.example.xml.dom;
importjava.io.File;
importjavax.xml.parsers.DocumentBuilder;
importjavax.xml.parsers.DocumentBuilderFactory;
importorg.w3c.dom.Document;
importorg.w3c.dom.Element;
importorg.w3c.dom.NodeList;
publicclassDomTest1
{
publicstaticvoidmain(String[]args)throwsException
{
//step1:
获得DOM解析器工厂
//工厂的作用是创建具体的解析器
DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();
//step2:
获得具体的dom解析器
DocumentBuilderdb=dbf.newDocumentBuilder();
//step3:
解析一个xml文档,获得Document对象(根节点)
//此文档放在项目目录下即可
Documentdocument=db.parse(newFile("books.xml"));
//根据标签名访问节点
NodeListlist=document.getElementsByTagName("book");
System.out.println("listlength:
"+list.getLength());
//遍历每一个节点
for(inti=0;i { System.out.println("----------------------"); //获得元素,将节点强制转换为元素 Elementelement=(Element)list.item(i); //此时element就是一个具体的元素 //获取子元素: 子元素title只有一个节点,之后通过getNodeValue方法获取节点的值 Stringcontent0=element.getElementsByTagName("title").item(0) .getNodeValue(); System.out.println(content0);//此处打印出为null //因为节点getNodeValue的值永远为null //解决方法: 加上getFirstChild() Stringcontent=element.getElementsByTagName("title").item(0) .getFirstChild().getNodeValue(); System.out.println("title: "+content);//此处打印出书名 //后面类似处理即可: content=element.getElementsByTagName("author").item(0) .getFirstChild().getNodeValue(); System.out.println("author: "+content); content=element.getElementsByTagName("year").item(0) .getFirstChild().getNodeValue(); System.out.println("year: "+content); content=element.getElementsByTagName("price").item(0) .getFirstChild().getNodeValue(); System.out.println("price: "+content); } } } 4.2、sax解析 Xml: xmlversion="1.0"encoding="UTF-8"? > Java部分: importjavax.xml.parsers.SAXParser; importjavax.xml.parsers.SAXParserFactory; importorg.xml.sax.Attributes; importorg.xml.sax.helpers.DefaultHandler; publicclassSAXParserTestextendsDefaultHandler{ publicSAXParserTest(){ super(); } publicvoidstartElement(Stringuri,StringlocalName,StringqName,Attributesattr){ if(attr.getLength()>0){ for(inti=0;i System.out.println(attr.getQName(i)+"="+attr.getValue(i)); } } } publicstaticvoidmain(String[]args){ try{ //实例化用于分析的工厂 SAXParserFactoryfactory=SAXParserFactory.newInstance(); //实例化分析类 SAXParserparser=factory.newSAXParser(); SAXParserTesthandler=newSAXParserTest(); parser.parse("example.xml",handler); }catch(Exceptione){ System.out.println(e.toString()); } } } 二、获取元素块名字属性值 xmlversion="1.0"? > xml-stylesheettype="text/xsl"? > Thedefaultnumberofrowstoreturnifnoneisspecified. Themaxageofaresponseinseconds.Usedincachingheaders. Java部分: importjavax.xml.parsers.SAXParser; importjavax.xml.parsers.SAXParserFactory; importorg.xml.sax.Attributes; importorg.xml.sax.helpers.DefaultHandler; importorg.xml.sax.SAXException; importjava.util.Properties; publicclassSAXParserTest2extendsDefaultHandler{ privatePropertiesprops; //用于存放名字属性对(key-value) privateStringcurrentName;//当前扫描到的键值 privateStringBuffercurrentValue=newStringBuffer(); //当前名字对应的值 privateStringName,Value;//键值对 publicSAXParserTest2(){ super(); this.props=newProperties(); } publicvoidstartElement(Stringuri,StringlocalName,StringqName,Attributesattr){ currentValue.delete(0,currentValue.length()); this.currentName=qName; } //碰到节点开始和结束之间的字符 publicvoidcharacters(char[]ch,intstart,intlength)throwsSAXException{ currentValue.append(ch,start,length); } //碰到节点结束 publicvoidendElement(Stringuri,StringlocalName,StringqName){ Stringname=currentName,value=currentValue.toString().trim(); if(name! =""&&value! ="") System.out.println(name+"="+value); if(name=="name") Name=value; if(name=="value") Value=value; if(qName=="property") props.put(Name,Value); this.currentName=""; currentValue.delete(0,currentValue.length()); } publicStringgetElementValue(StringelementName){ //elementValue: 对应于elementName的节点的属性值 StringelementValue=null; elementValue=props.getProperty(elementName); returnelementValue; } publicstaticvoidmain(String[]args) { try{ SAXParserFactoryfactory=SAXParserFactory.newInstance(); SAXParserparser=factory.newSAXParser(); SAXParserTest2handler=newSAXParserTest2(); parser.parse("nutch-default.xml",handler); System.out.println(handler.getElementValue("searcher.response.maxage")); }catch(Exceptione){ System.out.println(e.toString()); } } } 1.2、servlet Servlet生命周期 Servlet运行在Servlet容器中,其生命周期由容器来管理。 Servlet的生命周期通过javax.servlet.Servlet接口中的init()、service()和destroy()方法来表示。 Servlet的生命周期包含了下面4个阶段: (1)加载和实例化 Servlet容器负责加载和实例化Servlet。 当Servlet容器启动时,或者在容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例。 当Servlet容器启动后,它必须要知道所需的Servlet类在什么位置,Servlet容器可以从本地文件系统、远程文件系统或者其他的网络服务中通过类加载器加载Servlet类,成功加载后,容器创建Servlet的实例。 因为容器是通过Java的反射API来创建Servlet实例,调用的是Servlet的默认构造方法(即不带参数的构造方法),所以我们在编写Servlet类的时候,不应该提供带参数的构造方法。 (2)初始化 在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象。 初始化的目的是为了让Servlet对象在处理客户端请求前完成一些初始化的工作,如建立数据库的连接,获取配置信息等。 对于每一个Servlet实例,init()方法只被调用一次。 在初始化期间,Servlet实例可以使用容器为它准备的ServletConfig对象从Web应用程序的配置信息(在web.xml中配置)中获取初始化的参数信息。 在初始化期间,如果发生错误,Servlet实例可以抛出ServletException异常或者UnavailableException异常来通知容器。 ServletException异常用于指明一般的初始化失败,例如没有找到初始化参数;而UnavailableException异常用于通知容器该Servlet实例不可用。 例如,数据库服务器没有启动,数据库连接无法建立,Servlet就可以抛出UnavailableException异常向容器指出它暂时或永久不可用。 (3)请求处理 Servlet容器调用Servlet的service()方法对请求进行处理。 要注意的是,在service()方法调用之前,init()方法必须成功执行。 在service()方法中,Servlet实例通过ServletRequest对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用ServletResponse对象的方法设置响应信息。 在service()方法执行期间,如果发生错误,Servlet实例可以抛出ServletException异常或者UnavailableException异常。 如果UnavailableException异常指示了该实例永久不可用,Servlet容器将调用实例的destroy()方法,释放该实例。 此后对该实例的任何请求,都将收到容器发送的HTTP404(请求的资源不可用)响应。 如果UnavailableException异常指示了该实例暂时不可用,那么在暂时不可用的时间段内,对该实例的任何请求,都将收到容器发送的HTTP503(服务器暂时忙,不能处理请求)响应。 (4)服务终止 当容器检测到一个Servlet实例应该从服务中被移除的时候,容器就会调用实例的destroy()方法,以便让该实例可以释放它所使用的资源,保存数据到持久存储设备中。 当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法。 在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收。 如果再次需要这个Servlet处理请求,Servlet容器会创建一个新的Servlet实例。 在整个Servlet的生命周期过程中,创建Servlet实例、调用实例的init()和destroy()方法都只进行一次,当初始化完成后,Servlet容器会将该实例保存在内存中,通过调用它的service()方法,为接收到的请求服务。 下面给出Servlet整个生命周期过程的UML序列图,如图2-16所示。 如果需要让Servlet容器在启动时即加载Servlet,可以在web.xml文件中配置 例如: 实例1: 编写servlet文件HelloServlet.java文件 配置web.xml文件: 在web.xml中的 说明: 其中, 标记表示Servelt类的名称,该名称可以自由命名,实际上,该名称是类的实例化对象,在这里最好与类名保持一致。 而且,上下两个 表示servlet类的位置,例如该类在test包中 表示在访问这个servlet的网时候,在浏览器中输入的名称,该名称可以改变,但要注意名称的格式。 在浏览器中输入地址访问 目录结构: 实例2: 通过表单向servlet传递数据 首先,创建servlet文件LoginServlet.java 创建LoginServlet.jsp文件 配置web.xml文件(红色小方框中的属性要爆出一致) 访问servlet,点击提交 输入正确的信息,再次访问 实例3: 通过超链接访问servlet 首先创建servlet,DoRequest.java\ 创建link.jsp文件,添加超链接,访问servlet 配置web.xml文件 浏览器访问servlet 点击超链接 1.3、ajax Ajax举例: var options ={ url: 'xxxx.action', type: 'post', data: null, success: function(data){ if(data.statusCode=="OK") { }else{ } } }; var form =$("form[name=form1]");//form1: 表单ID 在表单界面只用这一个表单ID form.ajaxSubmit(options); 1.4、get与post方式的区别 1、GET请求,请求的数据会附加在URL之后,以? 分割URL和传输数据,多个参数用&连接
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java
![提示](https://static.bdocx.com/images/bang_tan.gif)