存档

2007年9月 的存档

带有条件的触发器trigger

2007年9月25日 评论已被关闭

再建好sequences 后,对oracle中的自增序列进行插入容易出现问题,

比如:用户如果在进行数据插入时指定了 CHATICON_SEQ.NEXTVAL 为自增ID,那么写好的触发器也会自动增加序列的,这样插入一条记录时,sequence就增加2个。为此需要在trigger中设置条件,设定当用户插入时id的值为空,才让触发器生效,这样可以避免序列重复增加。

以下是例子:

create or replace trigger trg_CHATICON

  before insert on CHATICON

  for each row

declare

nextid number;

begin

if :new.id is null then

  select CHATICON_SEQ.NEXTVAL into nextid FROM dual;

 :new.id := nextid;

end if;

end;

分类: others 标签:

java 、 oracle中日期字段的处理

2007年9月14日 评论已被关闭

转换字符串为日期

使用ORACLE内部函数to_date()

to_date()函数的参数是to_char()函数参数的反转。

to_date(string_value , date_format)

例如:

从oracle中把日期型的数据取出,转换成string

to_char(adddate,’YYYY-MM-DD HH24:MI:SS’)

把string型数据插入到oracle的date字段中

to_date(‘2007-09-08′,’yyyy-mm-dd’)

to_date(‘2007-09-08 00:00:00′,‘YYYY-MM-DD HH24:MI:SS’)

insert into website values(‘2hei’,to_date(’08-21-2007′,’MM-DD-YYYY’));

insert into website values(‘2hei’,to_date(‘2007-08-21′,’YYYY-MM-DD’));

insert into website values(‘2hei’,to_date(‘2007-08-21 12:01:02′,’YYYY-MM-DD HH24:MI:SS’));

insert into website values(‘2hei’,SYSDATE);

select Username,to_char(CreateDate,’YYYY-MM-DD HH24:MI:SS’) from website;

—–

java 把Data字段由 long型数据转换成 string

Date userBorn = new Date();

DateFormat df = DateFormat.getDateInstance();

userBorn.setTime(britryday);

String DateToStr = df.format(userBorn);

System.out.println(“DateToStr:”+DateToStr);

System.out.println(“britryday:”+britryday);

分类: others 标签:

velocity 的学习笔记

2007年9月2日 评论已被关闭

项目中需要使用模板来建构整体框架,使前台和后台分开,

找来找去发apache的 velocity 不错,周末研究了一下,

部分代码是网上所得,根据自己实际的操作做了下笔记。

 velocity 网站:   http://velocity.apache.org/

 从官网上看,velocity自己有一套模板书写的语法格式,

 不是很难,关键是要懂得模板运行机制,总结了一下,

 模板技术就是一种替换技术,以前php使用正则表达式同样可以

 实现模板的替换,而在JAVA下,apache已经提供了功能强大且开源的velocity,

 为何不试试呢。

 以下是我的Linux AD4+RESIN-2.1.17+JDK1.6下的配置

aaa.png

基本机制:

建立模板文件,

使用jsp或者servlet来读取模板文件,替换相应的变量,达到你需要的表现效果,

其中velocity有一些特有的配置方法,具体可以看看相关资料。

目录结构:

我把模板文件放在发布目录中,为了方便,建立了templates目录

../httpdocs/templates

把velocity-1.5.jar 放到lib目录下,

具体为: WEB-INF/lib

我在配置时出现了缺少apache.common包的问题,google了一下,原来是少了

velocity-dep-1.5.jar包,把它也放到lib下

新建 velocity.properties 配置文件

内容为:

file.resource.loader.path = templates  #指定模板的目录

runtime.log = log/velocity.log         #实际为发布目录的log目录,但是我在测试过程中没有生成日志。

把它放到classes目录下

接下可以是新建模板文件

本例子也网上看到的。修改了一下,servlet读取模板时出现了中文显示的乱码问题。

filename:  temp.vm

<html>

          <head>

   <meta http-equiv=”Content-Type” content=”text/html;charset=gb2312″ />

   <title>velocity 测试页面</title>

   </head>

          <body bgcolor=”#ffffff”>

            <center>

              <h2>模板测试</h2>

              <i>d动物列表:</i>

              <table cellspacing=”0″ cellpadding=”5″ width=”100%”>

                <tr>

                  <td bgcolor=”#eeeeee” align=”center”>姓名</td>

                </tr>

                #foreach ($name in $theList)

                <tr>

                  <td bgcolor=”#eeeeee”>$name</td>

                </tr>

                #end

              </table>

            </center>

</html>

#### TempServlet.java

package com.2hei.temp.Exp;

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.IOException;

import java.io.FileNotFoundException;

import java.io.FileInputStream;

import java.util.Properties;

import java.util.Vector;

import javax.servlet.ServletConfig;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.ServletException;

import org.apache.velocity.Template;

import org.apache.velocity.context.Context;

import org.apache.velocity.servlet.VelocityServlet;

import org.apache.velocity.app.Velocity;

import org.apache.velocity.exception.ResourceNotFoundException;

import org.apache.velocity.exception.ParseErrorException;

public class TempServlet extends VelocityServlet

{

 protected Properties loadConfiguration(ServletConfig config)throws IOException, FileNotFoundException{

  /*

   *  得到属性配置文件并load它

   */

  String propsFile = config.getInitParameter(INIT_PROPS_KEY);

  Properties p = new Properties();

  if(propsFile != null){

    String realPath = getServletContext().getRealPath(propsFile);

    if(realPath != null){

        propsFile = realPath;

    }

    p.load(new FileInputStream(propsFile));

  }

  /*

   *  设置velocity日志文件在web应用中的位置

   */

  String log = p.getProperty(Velocity.RUNTIME_LOG);

  if (log != null){

    log = getServletContext().getRealPath(log);

    if (log != null)   {

    p.setProperty(Velocity.RUNTIME_LOG, log);

    }

  }

  /*

   *  设置模板文件在web应用中的位置

   */

  String path = p.getProperty(Velocity.FILE_RESOURCE_LOADER_PATH);

  if (path != null){

    path = getServletContext().getRealPath(path);

    if (path != null){

    p.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, path);

    }

  }

  return p;

 }

public Template handleRequest(HttpServletRequest request,HttpServletResponse response,Context ctx){

   

  //response.setContentType(“text/html;charset=utf-8”);    

  String p1 = “I’m a Cat”;

  String p2 = “I’m a Dog”;

  Vector personList = new Vector();

  personList.addElement(p1);

  personList.addElement(p2);

  /*

   *  将模板数据 list 放置到上下文环境 context 中去

   */

  ctx.put(“theList”, personList);

  /*

   *  获取模板对象,有三种可能产生的异常

   */

  Template outty = null;

  try{

   outty = getTemplate(“temp.vm”);

  } catch (ParseErrorException pee){

   System.out.println(

    “SampleServlet : parse error for template ” + pee);

  }catch (ResourceNotFoundException rnfe){

   System.out.println(“TempServlet : template not found ” + rnfe);

  }catch (Exception e){

   System.out.println(“Error ” + e);

  }

  return outty;

 }

}

现在模板可以显示出来:

分类: others 标签: