存档

文章标签 ‘Java’

使用PreparedStatement向数据库插入数据

2010年3月31日 a18ccms 没有评论

使用PreparedStatement进行数据保存,主要我用这个对HTML代码保存进数据库 进行操作。
这个是对CLOB类型进行操作。
还有一种方法,是首先插入时使用EMPTY_CLOB() 之后再UPDATE 这个段 使用数据流更新数据。
阅读全文...

分类: Java 标签: , ,

Java关于路径获取的问题

2010年3月5日 a18ccms 没有评论

痛苦的一下午。今天把我做的系统进行移植。不过出毛病了。由于不在IDE下。我也不知道出错信息是什么。这时候才发现LOG是多么重要的了。马上补加LOG类。可是到生成文件的地方卡住了。如何才能在网站的根目录LOGS下生成日志呢。求助G大神。在这里总结下(毛病找到了。忘记装ORACLE的DBA驱动了。。汗)
关于路径问题的API
第一 JSP的路径问题
1.1 JSP中获得当前应用的相对路径和绝对路径
  根目录所对应的绝对路径:request.getRequestURI()
  文件的绝对路径  :application.getRealPath(request.getRequestURI());
  当前web应用的绝对路径 :application.getRealPath("/");
  取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()
1.2 Servlet中获得当前应用的相对路径和绝对路径
  根目录所对应的绝对路径:request.getServletPath();
  文件的绝对路径 :request.getSession().getServletContext().getRealPath(request.getRequestURI())
  当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");
1.3 ServletContext对象获得几种方式:javax.servlet.http.HttpSession.getServletContext()
  javax.servlet.jsp.PageContext.getServletContext()
  javax.servlet.ServletConfig.getServletContext()
阅读全文...

分类: Java 标签: ,

jsp标签jsp:setProperty用法

2009年12月18日 a18ccms 5 条评论

用来设置已经实例化的Bean对象的属性
第一种形式:

该形式是设置Bean 属性的快捷方式.在Bean 中属性的名字,类型必须和request对象中的参数名称相匹配。由于表单中传过来的数据类型都是String 类型的,Jsp内在机制会把这些参数转化成Bean属性对应的类型。
property = "*"表示所有名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法。
第二种形式:

使用request对象中的一个参数值来指定Bean中的一个属性值。在这个语法中,property指定Bean 的属性名,而且Bean 属性和request参数的名字应相同。也就是说,如果在Bean 中有setUserName(String userName)方法,那么,propertyName的值就是"userName".这种形式灵活性较强,可以有选择的对Bean中的属性赋值
第三种形式:

value用来指定Bean属性的值。字符串数据会在目标类中通过标准的valueOf方法自动转换成数字、boolean、Boolean、byte、Byte、char、Character。例如,boolean和Boolean类型的属性值(比如“true”)通过Boolean.valueOf转换,int和Integer类型的属性值(比如“42”)通过Integer.valueOf转换。
第四种形式:

param指定用哪个请求参数作为Bean属性的值。Bean 属性和request参数的名字可以不同。如果当前请求没有参数,则什么事情也不做,系统不会把null传递给Bean属性的set方法。因此,你可以让Bean自己提供默认属性值,只有当请求参数明确指定了新值时才修改默认属性值。

例如,下面的代码片断表示:如果存在numItems请求参数的话,把numberOfItems属性的值设置为请求参数numItems的值;否则什么也不做。


下面是一个简单的例子:

//sampleBean.java
package MyJavaBeanPackage;
public class SampleBean2 {
	private String id;
	private String age;
	private String name;
	private String sex;
	private String addr;
	public SampleBean2() {
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public void setId(String id) {
		this.id = id;
	}
	public void setAge(String age) {
		this.age = age;
	}
	public String getId() {
		return id;
	}
	public String getAge() {
		return age;
	}
	public String getAddr() {
		return addr;
	}
	public void setAddr(String addr) {
		this.addr = addr;
	}
}
//SampleBean.html
<html>
    <head>
        <title>使用<jsp:getProperty>和<jsp:setProperty>标记</title>
    </head>
    <body>
        <form name="form1" action="Sample2.jsp" method="post">
            <p align="center">
                编号
                 <input type="text" name="id">
             </p>
             <p align="center">
                 姓名
                 <input type="text" name="name">
             </p>
             <p align="center">
                 性别
                 <select name="TheSex" id="sex">
                     <option value="男" selected>
                         男
                     </option>
                     <option value="女">
                         女
                     </option>
                 </select>
             </p>
             <p align="center">
                 年龄
                 <input type="text" name="TheAge">
             </p>
             <p align="center">
                 <input type="submit" value="提交">
                 <input type="reset" value="重置">
             </p>
         </form>
     </body>
 </html>
//SampleBean.jsp
<%@ page language="java" contentType="text/html;charset = GBK"%>
<jsp:useBean id="sampleBean2" class="MyJavaBeanPackage.SampleBean2" />
<html>
    <head>
        <title>在JavaBean中存放数据</title>
    </head>
    <body>
        <%--方法一
    <jsp:setProperty name = "sampleBean2" property = "*" />
   --%>
         <%-- 方法二 --%>
         <jsp:setProperty name="sampleBean2" property="id" />
         <jsp:setProperty name="sampleBean2" property="name" />
         <%--方法三 --%>
         <jsp:setProperty name="sampleBean2" property="addr" value="洛阳师范学院" />
         <%-- 方法四 bean属性的名字可以与request参数不同--%>
         <jsp:setProperty name="sampleBean2" property="sex" param="TheSex" />
         <jsp:setProperty name="sampleBean2" property="age" param="TheAge" />
         <center>
             编号:<jsp:getProperty name="sampleBean2" property="id" /><br>
             姓名:<jsp:getProperty name="sampleBean2" property="name" /><br>
             性别:<jsp:getProperty name="sampleBean2" property="sex" /><br>
             年龄:<jsp:getProperty name="sampleBean2" property="age" /><br>
             住址:<jsp:getProperty name="sampleBean2" property="addr" /><br>
         </center>
     </body>
 </html>
 
分类: Java 标签: ,

优化Java中的正则表达式

2009年2月6日 a18ccms 1 条评论

如果你花费了数小时和正则表达式做斗争,只是为了让它完成它几秒内就可以完成的匹配,那么这篇文章正是为你量身定做的。Cristian Mocanu指出了在什么地方正则模式匹配会发生延迟,并且解释了为什么。然后,他演示了如何做更多的回缩(backtracking)而不是迷失在其中,如何优化贪婪模式和勉强模式(译者注——这个翻译是在网上查到,总感觉不太合适,原文是reluctant quantifier),以及Possessive quantifiers(译者注——这个有的地方称为抢占量子)、独立分组(independent grouping)和环视(look-around)为什么是你的朋友。

编写正则表达式不仅仅是一种技巧,更是一种艺术 ——Jeffrey Friedl

本文中,我将介绍一些正则表达式中使用默认的java.util.regex包的常见缺点。我将解释为什么回缩(backtracking)既是使用正则表达式进行模式匹配的基础,又是应用程序代码中的常见瓶颈;为什么在使用贪婪模式和勉强模式要学会谨慎,以及它是你正则表达式优化的要素。然后我会介绍优化正则表达的技巧,并讨论通过Java模式匹配引擎运行新的正则表达式时会发生什么。
阅读全文...

分类: 编程 标签: , ,

在java中对Oracle 日期类型字段的操作

2008年8月28日 a18ccms 没有评论

表 book 中有name varchar2(20)//书籍名称,buydate Date //购买日期 两个字段。

  已经创建了数据库连接Connection conn;

  方法一、使用java.sql.Date实现比较简单的yyyy-mm-dd格式日期。

  java.sql.Date不支持时间格式。切记不要使用new java.sql.Date(int year,int month,int date),因为还要处理时间差问题。

  PreparedStatement pstmt = conn.prepareStatement("insert into book (name,buydate) values (?,?)");

  java.sql.Date buydate=java.sql.Date.valueOf("2005-06-08");
  pstmt.setString(1, "Java编程思想");
  pstmt.setDate(2,buydate );
  pstmt.execute();

  方法二、使用java.sql.Timestamp,同上不使用new Timestamp(....)

  PreparedStatement pstmt = conn.prepareStatement("insert into book (name,buydate) values (?,?)");

  java.sql.Timestamp buydate=java.sql.Timestamp.valueOf("2004-06-08 05:33:99");
  pstmt.setString(1, "Java编程思想");
  pstmt.setTimestamp(2,buydate );
  pstmt.execute();

  方法三、使用oracle 的to_date内置函数

PreparedStatement pstmt = conn.prepareStatement("insert into book (name,buydate) values (?,to_date(?, 'yyyy-mm-dd hh24:mi:ss')");
  String buydate="2004-06-08 05:33:99";
  pstmt.setString(1, "Java编程思想");
  pstmt.setString(2,buydate );
  pstmt.execute();

  附:oracle日期格式参数 含义说明
  d: 一周中的星期几
  day: 天的名字,使用空格填充到9个字符
  dd: 月中的第几天
  ddd: 年中的第几天
  dy: 天的简写名
  iw: ISO标准的年中的第几周
  iyyy: ISO标准的四位年份
  yyyy: 四位年份
  yyy,yy,y: 年份的最后三位,两位,一位
  hh: 小时,按12小时计
  hh24: 小时,按24小时计
  mi: 分
  ss: 秒
  mm: 月
  mon: 月份的简写
  month: 月份的全名
  w: 该月的第几个星期
  ww: 年中的第几个星期

分类: Java 标签: , , ,