Tomcat的优化经验:去掉对web.xml的监视,把jsp提前编辑成Servlet。有富余物理内存的情况,加大tomcat使用的jvm的内存
1. get是从服务器上获取数据,post是向服务器传送数据。
2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
3. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。
4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。
Servlet的生命周期:包括加载和实例化、初始化、处理请求以及服务结束,init(),service(),destroy(),
Jsp页面中的FORM标签里的method属性为get时调用doGet(),为post时调用doPost()。
JSP内置对象:
request 用户端请求,此请求会包含来自GET/POST请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的会话期
application servlet 正在执行的内容
out 用来传送回应的输出
config servlet的构架部件
page JSP网页本身
exception 针对错误网页,未捕捉的例外
动态INCLUDE用jsp:include动作实现
<jsp:includepage=included.jsp flush=true />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面 <%@ include file=included.htm %>
页面之间传递参数的方法:request,session,application,cookie提高数据库性能:
用PreparedStatement一般来说比Statement性能高;有外键约束会影响插入和删除性能,如果程序能够保证数据的完整性,那在设计数据库时就去掉外键。表中适当冗余减少查询次数。SQL语句全部大写。根据缓冲特点,使用?和preparedStatement会进行对SQL的预编译,如果多次访问的话,会提高查询速度。还有索引对查询性能的改进。
看mysql帮助文档子查询章节的最后部分,例如,根据扫描的原理,下面的子查询语句要比第二条关联查询的效率高:
1. select e.name,e.salary wheree.managerid=(select id from employee where name='zxx');
2. select e.name,e.salary,m.name,m.salary fromemployees e,employees m wheree.managerid = m.id and m.name='zxx';
DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问。
XML用途:1、数据存储2、配置信息
import java.io.*;
importjava.util.Hashtable;
importorg.xml.sax.*;
public classSAXHandler extends HandlerBase
{
private Hashtabletable = new Hashtable();
private StringcurrentElement = null;
private StringcurrentValue = null;
public voidsetTable(Hashtable table)
{
this.table = table;
}
public HashtablegetTable()
{
return table;
}
public voidstartElement(String tag, AttributeList attrs)
throws SAXException
{
currentElement = tag;
}
public voidcharacters(char[] ch, int start, int length)
throws SAXException
{
currentValue = newString(ch, start, length);
}
public voidendElement(String name) throws SAXException
{
if(currentElement.equals(name))
table.put(currentElement,currentValue);
}
}
File file = newFile(c:\people.xml);
FileReader reader =new FileReader(file);
Parser parser;
SAXParserFactory spf= SAXParserFactory.newInstance();
SAXParser sp =spf.newSAXParser();
SAXHandler handler =new SAXHandler();
sp.parse(newInputSource(reader), handler);
Hashtable hashTable =handler.getTable();