学习笔记
主要学习drp(分销资源计划系统)但是要和erp(企业资源计划系统)分开来
1 建立web项目时,浏览器键入http://localhost:8080/项目/所看到的是index.jsp页面这是缺省的,可以在web.xml文件中看到当自己的项目建立时,删了index.jsp时就不会出现了
2显示 页面时候应键入window——到show view、
3 连接oracl数据库时要连接串的在网上找:Class.forName("oracle.jdbc.driver.OracleDriver");
String url = "jdbc:oracle:thin:@localhost:1521:bjpowern";
连接sqlserver数据库:Class.forName(“com.microsoft.jdbc.sqlserver.SQLServer.Driver”);
url=”jdbc:microsoft:server://localhost:1433; bjpowern”;
连接mysql数据库:Class.forName(“com.mysql.jdbc.Driver”);
url=”jdbc:mysql://localhost:3306/ bjpowern”;
bjpowern这个名字在控制面板——管理工具——服务找见启动的项。
4 xml文件可以自动的识别数据类型可以建立小一点的数据库;在xml中隐含了一个/这是重点从而显示了表格等<?xml-stylesheet type="text/xsl" href="student.xsl"?>这里体现的是用xsl装饰xml从而可看见xml像表格一样的展现。XML文本本身可以看成是数据库中的数据区,DTD或者Schemas可以看成是数据库模式设计,XQL可以看成是数据库查询语言,SAX或DOM可以看成是数据库处理工具。当然它还是缺少数据库所必须的一些东西,比如有效的存储组织、索引结构、安全性、事务处理、数据完整性、触发器、多用户处理机制等等。
小一点的数据库可以用xml文件代替可以达到同样的效果,xml文件与dtd文件是不一样的dtd和schme都是限制文档的比xml更加规范、
<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet type="text/xsl" href="student.xsl"?>
<学生信息>
<学校>动力节点</学校>
<学生>
<编号>0001</编号>
<姓名>张三</姓名>
<性别>男</性别>
<年龄>23</年龄>
</学生>
<学生>
<编号>0002</编号>
<姓名>李斯</姓名>
<性别>女</性别>
<年龄>25</年龄>
</学生>
</学生信息>
Dtd文件的格式是这样的
<?xml version="1.0" encoding="gb2312"?>
<!ELEMENT 丛书 (书*)>
<!ELEMENT 书 (名,人+,价*)>
<!ELEMENT 名 (#PCDATA)>
<!ELEMENT 人 (#PCDATA)>
<!ELEMENT 价 (#PCDATA)>
<!ATTLIST 价
unit (RMB|美元|日元) 'RMB'>
a、逗号间隔表示严格按照顺序,空格间隔元素可以不按照顺序
b、+代表至少出现一次
c、*表示出现0或多次
d、没有+或*的修饰表示必须出现一次
5 dom只能读小一点的数据,大数据会占用内存。Sax用于读取大文件。Sax被包含在jdk中,可在jdk的文档中找到相应的说明都可以用来读取xml文件。
6 xml文件使用 在文件中这些标签随便写都可以,建好后就可以建立一个单独的类来读取,用的方法是dom4j和w3c方法;hibernate也是用dom4j来读去配置的文件;
Dom采用树型结构读取xml文件,而sax采用的是事件模型来读取xml文件
使用dom4j读取文件时要将相关的jar包复制到web——INF/lib中。
dom4j-1.6.1.jar;
jaxen-1.1.beta-6.jar
读取xml文件的时候要注意将File文件的地址打“/“才对;
将xml文件导入数据库中的表的时候,将其每个字段最好设为String类型的,然后将每个字段所对应的标签在数据表中设一个字段
后来出现了jdom它是专门为读取Java文档的,使用的是具体的类而不使用接口,dom4j使用:使用了公共类和接口,大量使用了api中的connection类。
3)SAX表现较好,这要依赖于它特定的解析方式-事件驱动。一个SAX检测即将到来的XML流,但并没有载入到内存(当然当XML流被读入时,会有部分文档暂时隐藏在内存中)。
3. 四种xml操作方式的基本使用方法
xml文件:
<?xml
version="1.0" encoding="utf-8" ?>
<Result>
<VALUE>
<NO
DATE="2005">A1</NO>
<ADDR>GZ</ADDR>
</VALUE>
<VALUE>
<NO
DATE="2004">A2</NO>
<ADDR>XG</ADDR>
</VALUE>
</Result>
1)DOM读取
import
java.io.*;
import java.util.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;
public
class MyXMLReader{
public static void main(String arge[]){
long lasting =System.currentTimeMillis();
try{
File f=new File("data_10k.xml");
DocumentBuilderFactory
factory=DocumentBuilderFactory.newInstance();
DocumentBuilder
builder=factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList nl =
doc.getElementsByTagName("VALUE");
for (int i=0;i<nl.getLength();i++){
System.out.print("车牌号码:"
+ doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());
System.out.println("车主地址:" +
doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());
}
}catch(Exception e){
e.printStackTrace();
}
2)SAX读取
import
org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;
public class MyXMLReader extends DefaultHandler {
java.util.Stack tags = new java.util.Stack();
public MyXMLReader() {
super();
}
public static void main(String args[]) {
long lasting = System.currentTimeMillis();
try {
SAXParserFactory sf =
SAXParserFactory.newInstance();
SAXParser sp = sf.newSAXParser();
MyXMLReader reader = new MyXMLReader();
sp.parse(new InputSource("data_10k.xml"),
reader);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("运行时间:" +
(System.currentTimeMillis() - lasting) + "毫秒");}
public void characters(char ch[], int start, int
length) throws SAXException {
String tag = (String) tags.peek();
if (tag.equals("NO")) {
System.out.print("车牌号码:"
+ new String(ch, start, length));
}
if (tag.equals("ADDR")) {
System.out.println("地址:"
+ new String(ch, start, length));
}
}
public void startElement(String uri,String localName,String
qName,Attributes attrs) {
tags.push(qName);}
}
3) JDOM
import
java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
public class MyXMLReader {
public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new
File("data_10k.xml"));
Element foo = doc.getRootElement();
List allChildren = foo.getChildren();
for(int i=0;i<allChildren.size();i++)
{
System.out.print("车牌号码:"
+ ((Element)allChildren.get(i)).getChild("NO").getText());
System.out.println("车主地址:" +
((Element)allChildren.get(i)).getChild("ADDR").getText());
}
} catch (Exception e) {
e.printStackTrace();
}
}
4)DOM4J
import
java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;
public class MyXMLReader {
public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
File f = new File("data_10k.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(f);
Element root = doc.getRootElement();
Element foo;
for (Iterator i =
root.elementIterator("VALUE"); i.hasNext();) {
foo = (Element) i.next();
System.out.print("车牌号码:"
+ foo.elementText("NO"));
System.out.println("车主地址:" + foo.elementText("ADDR"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
7 转发和重定向的区别:
A 转发:
转发不改变浏览器的地址
共享同一个request
在用一个web网页中
注:在大数据的时候把数据用request来得到在小范围的时候就用session;
B 重定向:
重定向改变浏览器地址栏
不共享request
可以重定向在任何一个网页中
8 出现了Xpath它是用来访问数据库的,可以解析xml文件。XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。
10 在类中建立对数据表的存储是有对象标识(ORD)
讲到了model 1 有以下特点:
优点:架构简单,适合于小型的项目》缺点;职责不但一,任务过于繁重,不便于维护/
11 在建立数据表的时候主键要求是没有业务寓意的字段,这样的话其它的不管其它的值怎么改变都不会影响它的值。建立数据库时候,是关系模型的话粒度不需太细,但是在建立对象模型的时候侯就学要细一点
继承在关系模型中没有,但是在对象模型中是有的;
数据表的左联接:当两个表的字段无值时候但是要得到查询结果,就用到左联接,在left的左边就是左联接,在left的右边就是右链接:注:left和right是外连接,Inner是内连接。在对象模型中是有有方向性的,而在关系模型中是没有方向性的:
12 Java中的对象都继承Object对象 在javascript中charAt(i)返回的是一个字符值,是检索出指定位置的字符值,检索的第一位从0开始到i;
13 在运行的时候出现Address already in use:JVM-bind:8080说明有进程,关闭进程的时候要把小一点进程关掉,大一点的进程在运行。
14 Javascript中的trim函数的功能是删除字符串首部和尾部的空格。但是注意在有些浏览器中不支持trim函数的效果,
JavaScript中test函数方法是返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式。True或false;(常与正则表达式连起来使用)
在这里还有exec函数返回一个数据值,也是和正则表达式连起来使用的
15 with在javascript中的用法,with是一组或一个语句的默认对象,用了他可以缩短特定情形下必要写代码量;
16 服务器获取表单信息的时候是取得的是name名,而dom方式取得是id值,就是
request.getParameter("userId"); userId就是name值;
用户返回数据库看到时候防止字符集乱码设置:request.setCharacterEncoding(“GB18030”);这个用于response
Charset=”GB18030”用于request也就是发到tomact上的编码
toString()方法:是输出一个对象,或一个对象和一个字符串相加,它会调用这个方法的toString方法。在页面显示jsp中取得的值得时候用的是在html文件中value=<%=userId%>
17 Ajax技术了解:它的作用就是和以前的同步方式不一样,它强调的是异步,就是页面中的光标离开文本框它的值就自动被ajax引擎自动去检测数据库并给出相应;
Ajax是web2.0中的技术,它的名字叫异步的javascript和xml(基本无关),它的一些产品都有:Dojo,Dwr,ext,Buffalo,Jqeuary;
Ajax引擎有四种状态:0标识未初始化,1表示装载中,2表示已装载,3表示交互中,4表示完成(常用到,表示成功状态),当返回的时候用到了方法来自映入javascript对象xmlhttpresponse properties中的方法:responseText,responsexml,status,statustext等,用到了事件是onreadystatuschange(响应上面的四种状态);当每次使用Ajax的时候必须重新new一个新对象;
使用Ajax的时候最好清楚缓存,防止产生一些错误;
17 div和span的区别:div换行,而span不换行。
此时用到了onblur它就一个焦点离开事件,当光标离开焦点时就触发事件;
用到的span写法<span id=”spanUser”>可以将信息显示在里面;
以下用到了查询页面的知识,在checkbox中属性checked是检查checkbox是否被选中;此时用到了分页查询,这就要求sql语句是三参嵌套。
同样用到了List它是在java.util.*包中的;
Iteator迭代器的使用:和for循环相似都是用来循环的
迭代器是一种模式,它可以使得对于序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。
一般的迭代器对外提供的接口有:
[1]检查是否至序列末端;
[2]返回当前的对象;
[3]过渡到下一个对象。
我们基于以上三点,提供一个迭代器Interface。
分页时候用到了时间的实现要用到page import="java.text.*"类中的方法:new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(user.getCreateDate())其中format函数是格式化函数将日期格式化到时分秒;
18 在html中的Readonly和Disable的区别:在jsp中有下列用法:
1)Readonly和Disable修饰的输入都是不能修改的
2)Readonly他修饰的输入域可以用request.getParameter取得;
3)Disable他修饰的输入域不能用request.getParameter取得;
在jsp中还用到两个StringBuffer和StringBuild两者的区别是:StringBuffer是线程安全的,而StringBuild不是线程安全的(也就没有了同步Synchronized);
调试小窍门:当调试的时候出现了调试不反映的情况下看看.class文件中是否有改动,加入没有改动的话就在源文件中加空格保存从新到调试看看能否成功;或者就是把工作空间中的work文件夹全部删掉就好了 ;
20 在表单中取值的时候,用request.getParameter();取得是name的值;但是需要去一组值的话就用到了request.getParameterValues(name,[]);这样就取得了一系列的值;同样也是取name的值
21
Servlet规范中的