在sql2000中创建存储过程:
--求两数之和
create proc up_sum @a int ,@b int ,@result int output
as
select @result= @a+@b
调用方法:
...
CallableStatement cstmt=con.prepareCall("exec up_sum ?,?,?");
cstmt.registerOutParameter(3,java.sql.Types.INTEGER);
cstmt.setInt(1,10);
cstmt.setInt(2,20);
int result=cstmt.getInt(3);
...
存储过程up_sum有3个参数,第一个和第二个参数都是IN类型,第三个参数是OUT类型,而OUT类型
的参数在执行存储过程之前需要调用registerOutParameter()方法注册存储过程第三个参数,方法第
二个参数用于指定存储过程参数中JDBC类型,该类型在java.sql.Types类中定义。最后用getXXX()方
法取出OUT参数的值。 ......
session就是一个全局变量,是浏览器线程在服务器端的代理。web服务程序只要打开,session就会存在,当你第一次访问时,session会自动为你分配一个session ID,所以session为新建立的,所以session.isNew()为true。当你刷新页面时,这个session ID一直存在(session.getId()不变),不会消失,所以session.isNew()为false。除非你关闭你要访问的web站点,或则关闭session(session.invalidate()),这个session ID才会消失(session.getId()变了),isNew()为true。
两个方法 session.isNew() 判断是否是一个新session
session.getId() 得到这个session id
当关闭所有的浏览器,再重新登录的时候session.isNew()才会是true
当每次都新打开一个浏览器用不同的用户登录,session.isNew() 是为false。session.getId()是不变的,。
即:session id相当是打开一个浏览器进程(不是线程)时web服务器为本浏览器进程分配的id
常用方法:
long create_time = session.getCreationTime(); //session创建时间
long access_time = se ......
(1) 请求信息编码转化的Filter
importjava.io.IOException;
importjava.util.Enumeration;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
public class EncodeFilter implementsFilter{
private FilterConfig filterConfig=null;
private String encoding=null;
//默认构造函数
public EncodeFilter(){
}
//初始化过滤器
public void init(FilterConfig filterConfig)throwsServletException{
this.filterConfig=filterConfig;
this.encoding=filterConfig.getInitParameter("encoding");
}
//得到编码
private String getEncoding(){
return this.encoding;
}
//执行过滤操作
public void doFilter(ServletRequestrequest,ServletResponseresponse,
FilterChainfilterChain)throws
IOException,ServletException{
//设置编码格式
if(request.getCharacterEncoding()==null){
&nb ......
GBK编码
GBK编码是中国制订的、等同于UCS的新的中文编码扩展国家标准。GBK工作小组于1995年10月,同年12月完成GBK规范。该编码标准兼容GB2312,共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库。
UTF-8编码
UTF-8编码可以通过屏蔽位和移位操作快速读写。字符串比较时strcmp()和wcscmp()的返回结果相同,因此使排序变得更加容易。字节FF和FE在UTF-8编码中永远不会出现,因此他们可以用来表明UTF-16或UTF-32文本(见BOM) UTF-8 是字节顺序无关的。它的字节顺序在所有系统中都是一样的,因此它实际上并不需要BOM。
GB2312
GB2312支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。
从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理 ......
修改了css 样式文件后,重新浏览该jsp页面,发现新修改的样式没有生效。总以为是项目缓存所引起的,于是清理所有项目,重新构建项目。不行。执行server 的 publish 还是不行。用window 的搜索功能发现除了 WebContent 目录有该 css 文件外,.metadata\.plugins\org.eclipse.wst.server.core\tmp1\webapps\ 目录下也存在该 css 样式文件,但发现该文件的最近修改日期却是昨天的,果然打开该文件发现内容还是旧的。
那么,为什么我执行 server 视图的 publish 功能没有将新的文件替换呢?
原来一直我都习惯用 vim 编辑工具来编辑 css 文件,而这样 Eclipse 是监测不了该文件已经修改,从而执行 publish 时不把新文件替换旧文件。必须是在 Eclipse 环境中去修改 css 文件,然后再执行 publish。
总结: 用 Eclipse 做jsp 的开发,修改文件操作应该尽量 Eclipse 开发环境来完成。 ......
知识准备:
JDBC访问数据库的基本步骤
(1)、将数据库的JDBC驱动加载到工程类库中。
(2)、加载JDBC驱动,并将其注册到DriverManager中。下面是一些主流数据库的JDBC驱动加载注册码:
①、oracle数据库
Class.forName(“oracle.jdbc.driver.OracleDriver”).newInstance();
②、Sql Server 7.0/2000数据库
Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”).newInstance();
③、MySQL数据库
Class.forName(“com.mysql.jdbc.Driver”).newInstance();
(3)、建立数据库连接,取得Connection对象。
①、oracle数据库
String url=”jdbc:oracle:thin:@localhost:1521:orcl”;
String user=”scott”:
String password=”tiger”;
Connetion conn=DriverManager.getConnetion(url,user,password);
②、Sql Server 7.0/2000数据库
String url=”jdbc:microsoft:sqlserver://localhost:1443;DatabaseName=pubs”;
String user=”sa”;
String password=””;
Connection conn=DriverManager.getConnection(url,user,password);
③、MySQL数据 ......