Love is all
BlogJava | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理

2008年4月25日

死机重启oracle
死机,如何重启oracle服务
    1 用root登陆
    2 su - oracle 以oracle用户登陆
    3 sqlplus '/as sysdba'
    4 startup
    5 exit
    6 lsnrctl start


posted @ 2013-12-18 16:27 JAVA_HOME 阅读(150) | 评论 (0) | 编辑 收藏
 
eclipse离线安装【link方式安装】jetty插件
     摘要: run eclipse maven project  阅读全文
posted @ 2013-12-12 18:50 JAVA_HOME 阅读(2429) | 评论 (0) | 编辑 收藏
 
weblogic 12 && spring
     摘要: weblogic 12 && spring   阅读全文
posted @ 2012-03-30 12:25 JAVA_HOME 阅读(411) | 评论 (0) | 编辑 收藏
 
weblogic 12 && struts2
     摘要: weblogic 12 && struts2   阅读全文
posted @ 2012-03-29 10:56 JAVA_HOME 阅读(643) | 评论 (1) | 编辑 收藏
 
maven tools.jar
     摘要: Unable to locate the Javac Compiler in:
C:\Program Files\Java\jre6\..\lib\tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the JAVA_HOME environment variable.  阅读全文
posted @ 2012-02-01 15:54 JAVA_HOME 阅读(503) | 评论 (0) | 编辑 收藏
 
OSGI-ECLIPSE MODULE 开发
     摘要: osgi eclipse 开发bundle  阅读全文
posted @ 2012-01-31 16:47 JAVA_HOME 阅读(310) | 评论 (0) | 编辑 收藏
 
documentum - webtop - flow
今天在documentum webtop上开发了一个小的添加功能
  • 修改browsertree_component.xml
  • 修改menubar_component.xml
  • 根据action创建xxx_action.xml   
            设置参数,初始化类(precondition)
            添加相应的container, component
  • 创建xxx_container.xml
    • 设置参数
    • 设置start page
    • 设置component
    • 设置处理类
    • 设置国际化文件
  • 创建xxx_component.xml
    • 同container
posted @ 2012-01-12 11:07 JAVA_HOME 阅读(1307) | 评论 (0) | 编辑 收藏
 
Hibernate Naming convertions
     摘要: Hibernate Naming convertions Client T_CLIENT  阅读全文
posted @ 2011-12-22 11:50 JAVA_HOME 阅读(404) | 评论 (0) | 编辑 收藏
 
内存溢出

关于内存溢出,我们可以在启动tomcat时,加参数“-XX:+HeapDumpOnOutOfMemoryError”。

这样,但内存溢出时,会生成heap dump文件。

然后,可以通过如MemoryAnalyzer等分析工具,进行分析,定位是否有内存泄露。
posted @ 2011-12-20 13:42 JAVA_HOME 阅读(237) | 评论 (0) | 编辑 收藏
 
HTML5 标记示例
<!DOCTYPE html>
    <meta charset="UTF-8">
    <title>HTML 5 标记示例</title>
    <body>
        <p>这段代码是根据HTML 5 语法
        </br>编写出来的。
    </body>
</html>
posted @ 2011-12-06 14:26 JAVA_HOME 阅读(191) | 评论 (0) | 编辑 收藏
 
使用FindBugs检查程序中的缺陷
     摘要: 请使用FindBugs工具检查程序中的缺陷。  阅读全文
posted @ 2011-10-09 13:47 JAVA_HOME 阅读(238) | 评论 (0) | 编辑 收藏
 
ibatis update set null
     摘要: So if you wanna update a field to null , the field was not null .
Be careful !  阅读全文
posted @ 2011-08-26 13:01 JAVA_HOME 阅读(401) | 评论 (0) | 编辑 收藏
 
PL/SQL Developer 中文乱码解决
     摘要: PL/SQL Developer 中文乱码解决   阅读全文
posted @ 2011-07-20 14:29 JAVA_HOME 阅读(229) | 评论 (0) | 编辑 收藏
 
SimpleDateFormat and Thread Safety
     摘要: It never fails to surprise me that so many developers are unaware that SimpleDateFormat is not thread-safe. It seems like almost all J2EE projects I work on have code that uses instance variables or static instance variables to store a SimpleDateFormat that is then used throughout the code base without any concurrency control.   阅读全文
posted @ 2011-04-15 16:41 JAVA_HOME 阅读(258) | 评论 (0) | 编辑 收藏
 
JBoss and JMS
     摘要: It's important to understand JMS.  阅读全文
posted @ 2010-10-22 09:39 JAVA_HOME 阅读(695) | 评论 (1) | 编辑 收藏
 
解决JAXB2.1和JDK1.6/6.0的问题
     摘要: 解决JAXB2.1和JDK1.6/6.0的问题  阅读全文
posted @ 2010-09-17 13:47 JAVA_HOME 阅读(538) | 评论 (0) | 编辑 收藏
 
APACHE的MAVEN管理jar包
     摘要: maven jar  阅读全文
posted @ 2010-09-06 09:53 JAVA_HOME 阅读(1156) | 评论 (0) | 编辑 收藏
 
remote debugging
     摘要: remote debugging  阅读全文
posted @ 2010-09-02 14:43 JAVA_HOME 阅读(341) | 评论 (0) | 编辑 收藏
 
wsgen与wsimport命令说明
     摘要: wsgen与wsimport命令说明  阅读全文
posted @ 2010-07-06 14:32 JAVA_HOME 阅读(1321) | 评论 (0) | 编辑 收藏
 
Spring解决多数据源
     摘要: 本文描述了Spring+iBatis多数据源的配置方案。在仅使用ibatis时,每多一个数据源就需要多一份sql-map-config配置文件。采用spring的AbstractRoutingDataSource就可以简单的解决这个问题。  阅读全文
posted @ 2010-03-30 13:31 JAVA_HOME 阅读(1665) | 评论 (0) | 编辑 收藏
 
Linux 启动oracle
     摘要: Linux 启动oracle  阅读全文
posted @ 2010-02-25 17:47 JAVA_HOME 阅读(122) | 评论 (0) | 编辑 收藏
 
Quartz Cron Expression 备忘
     摘要: Quartz Cron Expression 备忘  阅读全文
posted @ 2010-02-09 09:56 JAVA_HOME 阅读(227) | 评论 (0) | 编辑 收藏
 
JMX 一例
     摘要: JMX 一例  阅读全文
posted @ 2010-01-21 13:44 JAVA_HOME 阅读(177) | 评论 (0) | 编辑 收藏
 
java实现压缩
     摘要: java实现压缩  阅读全文
posted @ 2010-01-15 15:06 JAVA_HOME 阅读(149) | 评论 (0) | 编辑 收藏
 
java实现ftp上传
     摘要: java实现ftp上传一例,够简单!  阅读全文
posted @ 2010-01-15 10:16 JAVA_HOME 阅读(308) | 评论 (0) | 编辑 收藏
 
java.util.ResourceBundle
     摘要: java.util.ResourceBudle  阅读全文
posted @ 2010-01-14 11:13 JAVA_HOME 阅读(530) | 评论 (0) | 编辑 收藏
 
jboss 5 : JMS
     摘要: jboss 5 : JMS  阅读全文
posted @ 2010-01-12 10:59 JAVA_HOME 阅读(674) | 评论 (0) | 编辑 收藏
 
JPA(Entity Bean)的事务类型
     摘要: JPA(Entity Bean)的事务类型  阅读全文
posted @ 2009-12-31 09:17 JAVA_HOME 阅读(225) | 评论 (0) | 编辑 收藏
 
关于jboss 5.0 上配置数据源要注意的一个问题
     摘要: jboss 5.0 上配置数据源  阅读全文
posted @ 2009-12-30 17:13 JAVA_HOME 阅读(458) | 评论 (0) | 编辑 收藏
 
EJB3 之HelloWorld
     摘要: EJB之HelloWorld  阅读全文
posted @ 2009-12-30 09:44 JAVA_HOME 阅读(171) | 评论 (0) | 编辑 收藏
 
weblogic 9.2 数据源(DataSource)
     摘要: weblogic 9.2 数据源(DataSource)  阅读全文
posted @ 2009-12-28 14:23 JAVA_HOME 阅读(169) | 评论 (0) | 编辑 收藏
 
ibatis #和$的区别
 ibatis #和$的区别
昨天一个项目中在写ibatis中的sql语句时,order by #field#, 运行时总是报错,后来上网查了查,才知道这里不该用#,而应该用$,随即查了下#与$的区别.
总结如下:
1.#是把传入的数据当作字符串,如#field#传入的是id,则sql语句生成是这样,order by "id",这当然会报错..

2.$传入的数据直接生成在sql里,如#field#传入的是id,则sql语句生成是这样,order by id, 这就对了.

3.#方式能够很大程度防止sql注入.

4.$方式无法方式sql注入.

5.$方式一般用于传入数据库对象.例如传入表名.

6.一般能用#的就别用$.
posted @ 2009-12-17 17:50 JAVA_HOME 阅读(151) | 评论 (0) | 编辑 收藏
 
泛型认识
     摘要: 虚拟机中没有泛型,只有普通类和方法。  阅读全文
posted @ 2009-12-17 09:30 JAVA_HOME 阅读(151) | 评论 (0) | 编辑 收藏
 
PreparedStatement和Statement区别
     摘要: PreparedStatement和Statement区别?  阅读全文
posted @ 2009-12-01 14:27 JAVA_HOME 阅读(194) | 评论 (0) | 编辑 收藏
 
Oracle中实例(Instance)和数据库(database)的区别
     摘要: Oracle中实例(Instance)和数据库(database)的区别  阅读全文
posted @ 2009-11-30 17:22 JAVA_HOME 阅读(363) | 评论 (0) | 编辑 收藏
 
递归反转字符串

今天碰到了这么一道面试题:用递归写一个使字符串反转的方法。

回来后觉得挺好玩的,就再写了一遍,发现面试的时候写错了。

/**
  *
  * @param s 要反转的字符串
  * @param sb sb.toString() 反转后的字符串
  */
 public void getReverseString(String s , StringBuilder sb) {
  if (s.length() > 0) {
   sb.append(s.substring(s.length() - 1));
   getReverseString(s.substring(0, s.length() - 1) , sb);
  }
 }

此方法已经过测试。

posted @ 2009-11-27 20:23 JAVA_HOME 阅读(648) | 评论 (0) | 编辑 收藏
 
UML中的聚合、组合
     摘要: 聚合与组合的区别及UML图  阅读全文
posted @ 2009-11-27 19:41 JAVA_HOME 阅读(388) | 评论 (0) | 编辑 收藏
 
Java Annotation入门
版权声明:本文可以自由转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
作者:cleverpig(作者的Blog:http://blog.matrix.org.cn/page/cleverpig)
原文:[http://www.matrix.org.cn/resource/article/44/44048_Java+Annotation.html]http://www.matrix.org.cn/resource/article/44/44048_Java+Annotation.html[/url]
关键字:Java,annotation,标注


摘要:
本文针对java初学者或者annotation初次使用者全面地说明了annotation的使用方法、定义方式、分类。初学者可以通过以上的说明制作简单的annotation程序,但是对于一些高级的annotation应用(例如使用自定义annotation生成javabean映射xml文件)还需要进一步的研究和探讨。涉及到深入annotation的内容,作者将在后文《Java Annotation高级应用》中谈到。

同时,annotation运行存在两种方式:运行时、编译时。上文中讨论的都是在运行时的annotation应用,但在编译时的annotation应用还没有涉及,

一、为什么使用Annotation:

在JAVA应用中,我们常遇到一些需要使用模版代码。例如,为了编写一个JAX-RPC web service,我们必须提供一对接口和实现作为模版代码。如果使用annotation对远程访问的方法代码进行修饰的话,这个模版就能够使用工具自动生成。
另外,一些API需要使用与程序代码同时维护的附属文件。例如,JavaBeans需要一个BeanInfo Class与一个Bean同时使用/维护,而EJB则同样需要一个部署描述符。此时在程序中使用annotation来维护这些附属文件的信息将十分便利而且减少了错误。

二、Annotation工作方式:

在5.0 版之前的Java平台已经具有了一些ad hoc annotation机制。比如,使用transient修饰符来标识一个成员变量在序列化子系统中应被忽略。而@deprecated这个 javadoc tag也是一个ad hoc annotation用来说明一个方法已过时。从Java5.0版发布以来,5.0平台提供了一个正式的annotation功能:允许开发者定义、使用自己的annoatation类型。此功能由一个定义annotation类型的语法和一个描述annotation声明的语法,读取annotaion 的API,一个使用annotation修饰的class文件,一个annotation处理工具(apt)组成。
annotation并不直接影响代码语义,但是它能够工作的方式被看作类似程序的工具或者类库,它会反过来对正在运行的程序语义有所影响。annotation可以从源文件、class文件或者以在运行时反射的多种方式被读取。
当然annotation在某种程度上使javadoc tag更加完整。一般情况下,如果这个标记对java文档产生影响或者用于生成java文档的话,它应该作为一个javadoc tag;否则将作为一个annotation。

三、Annotation使用方法:

1。类型声明方式:
通常,应用程序并不是必须定义annotation类型,但是定义annotation类型并非难事。Annotation类型声明于一般的接口声明极为类似,区别只在于它在interface关键字前面使用“@”符号。
annotation 类型的每个方法声明定义了一个annotation类型成员,但方法声明不必有参数或者异常声明;方法返回值的类型被限制在以下的范围: primitives、String、Class、enums、annotation和前面类型的数组;方法可以有默认值。

下面是一个简单的annotation类型声明:
清单1:

    /**
     * Describes the Request-For-Enhancement(RFE) that led
     * to the presence of the annotated API element.
     */
    public @interface RequestForEnhancement {
        int    id();
        String synopsis();
        String engineer() default "[unassigned]";
        String date();    default "[unimplemented]";
    }

代码中只定义了一个annotation类型RequestForEnhancement。

2。修饰方法的annotation声明方式:
annotation 是一种修饰符,能够如其它修饰符(如public、static、final)一般使用。习惯用法是annotaions用在其它的修饰符前面。 annotations由“@+annotation类型+带有括号的成员-值列表”组成。这些成员的值必须是编译时常量(即在运行时不变)。

A:下面是一个使用了RequestForEnhancement annotation的方法声明:
清单2:

    @RequestForEnhancement(
        id       = 2868724,
        synopsis = "Enable time-travel",
        engineer = "Mr. Peabody",
        date     = "4/1/3007"
    )
    public static void travelThroughTime(Date destination) { ... }


B:当声明一个没有成员的annotation类型声明时,可使用以下方式:
清单3:

    /**
     * Indicates that the specification of the annotated API element
     * is preliminary and subject to change.
     */
    public @interface Preliminary { }


作为上面没有成员的annotation类型声明的简写方式:
清单4:

    @Preliminary public class TimeTravel { ... }


C:如果在annotations中只有唯一一个成员,则该成员应命名为value:
清单5:

    /**
     * Associates a copyright notice with the annotated API element.
     */
    public @interface Copyright {
        String value();
    }


更为方便的是对于具有唯一成员且成员名为value的annotation(如上文),在其使用时可以忽略掉成员名和赋值号(=):
清单6:

    @Copyright("2002 Yoyodyne Propulsion Systems")
    public class OscillationOverthruster { ... }


3。一个使用实例:
结合上面所讲的,我们在这里建立一个简单的基于annotation测试框架。首先我们需要一个annotation类型来表示某个方法是一个应该被测试工具运行的测试方法。
清单7:

    import java.lang.annotation.*;

    /**
     * Indicates that the annotated method is a test method.
     * This annotation should be used only on parameterless static methods.
     */
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.METHOD)
    public @interface Test { }


值得注意的是annotaion类型声明是可以标注自己的,这样的annotation被称为“meta-annotations”。

在上面的代码中,@Retention(RetentionPolicy.RUNTIME)这个meta-annotation表示了此类型的 annotation将被虚拟机保留使其能够在运行时通过反射被读取。而@Target(ElementType.METHOD)表示此类型的 annotation只能用于修饰方法声明。

下面是一个简单的程序,其中部分方法被上面的annotation所标注:
清单8:

    public class Foo {
        @Test public static void m1() { }
        public static void m2() { }
        @Test public static void m3() {
            throw new RuntimeException("Boom");
        }
        public static void m4() { }
        @Test public static void m5() { }
        public static void m6() { }
        @Test public static void m7() {
            throw new RuntimeException("Crash");
        }
        public static void m8() { }
    }

Here is the testing tool:

    import java.lang.reflect.*;

    public class RunTests {
       public static void main(String[] args) throws Exception {
          int passed = 0, failed = 0;
          for (Method m : Class.forName(args[0]).getMethods()) {
             if (m.isAnnotationPresent(Test.class)) {
                try {
                   m.invoke(null);
                   passed++;
                } catch (Throwable ex) {
                   System.out.printf("Test %s failed: %s %n", m, ex.getCause());
                   failed++;
                }
             }
          }
          System.out.printf("Passed: %d, Failed %d%n", passed, failed);
       }
    }


这个程序从命令行参数中取出类名,并且遍历此类的所有方法,尝试调用其中被上面的测试annotation类型标注过的方法。在此过程中为了找出哪些方法被 annotation类型标注过,需要使用反射的方式执行此查询。如果在调用方法时抛出异常,此方法被认为已经失败,并打印一个失败报告。最后,打印运行通过/失败的方法数量。
下面文字表示了如何运行这个基于annotation的测试工具:

清单9:

    $ java RunTests Foo
    Test public static void Foo.m3() failed: java.lang.RuntimeException: Boom
    Test public static void Foo.m7() failed: java.lang.RuntimeException: Crash
    Passed: 2, Failed 2


四、Annotation分类:

根据annotation的使用方法和用途主要分为以下几类:

1。内建Annotation——Java5.0版在java语法中经常用到的内建Annotation:
@Deprecated用于修饰已经过时的方法;
@Override用于修饰此方法覆盖了父类的方法(而非重载);
@SuppressWarnings用于通知java编译器禁止特定的编译警告。

下面代码展示了内建Annotation类型的用法:
清单10:

package com.bjinfotech.practice.annotation;

/**
* 演示如何使用java5内建的annotation
* 参考资料:
* http://java.sun.com/docs/books/tutorial/java/javaOO/annotations.html
* http://java.sun.com/j2se/1.5.0/docs/guide/language/annotations.html
* http://mindprod.com/jgloss/annotations.html
* @author cleverpig
*
*/
import java.util.List;

public class UsingBuiltInAnnotation {
        //食物类
        class Food{}
        //干草类
        class Hay extends Food{}
        //动物类
        class Animal{
                Food getFood(){
                        return null;
                }
                //使用Annotation声明Deprecated方法
                @Deprecated
                void deprecatedMethod(){
                }
        }
        //马类-继承动物类
        class Horse extends Animal{
                //使用Annotation声明覆盖方法
                @Override
                Hay getFood(){
                        return new Hay();
                }
                //使用Annotation声明禁止警告
                @SuppressWarnings({"deprecation","unchecked"})
                void callDeprecatedMethod(List horseGroup){
                        Animal an=new Animal();
                        an.deprecatedMethod();
                        horseGroup.add(an);
                }
        }
}


2。开发者自定义Annotation:由开发者自定义Annotation类型。
下面是一个使用annotation进行方法测试的sample:

AnnotationDefineForTestFunction类型定义如下:
清单11:

package com.bjinfotech.practice.annotation;

import java.lang.annotation.*;
/**
* 定义annotation
* @author cleverpig
*
*/
//加载在VM中,在运行时进行映射
@Retention(RetentionPolicy.RUNTIME)
//限定此annotation只能标示方法
@Target(ElementType.METHOD)
public @interface AnnotationDefineForTestFunction{}


测试annotation的代码如下:

清单12:

package com.bjinfotech.practice.annotation;

import java.lang.reflect.*;

/**
* 一个实例程序应用前面定义的Annotation:AnnotationDefineForTestFunction
* @author cleverpig
*
*/
public class UsingAnnotation {
        @AnnotationDefineForTestFunction public static void method01(){}
        
        public static void method02(){}
        
        @AnnotationDefineForTestFunction public static void method03(){
                throw new RuntimeException("method03");
        }
        
        public static void method04(){
                throw new RuntimeException("method04");
        }
        
        public static void main(String[] argv) throws Exception{
                int passed = 0, failed = 0;
                //被检测的类名
                String className="com.bjinfotech.practice.annotation.UsingAnnotation";
                //逐个检查此类的方法,当其方法使用annotation声明时调用此方法
            for (Method m : Class.forName(className).getMethods()) {
               if (m.isAnnotationPresent(AnnotationDefineForTestFunction.class)) {
                  try {
                     m.invoke(null);
                     passed++;
                  } catch (Throwable ex) {
                     System.out.printf("测试 %s 失败: %s %n", m, ex.getCause());
                     failed++;
                  }
               }
            }
            System.out.printf("测试结果: 通过: %d, 失败: %d%n", passed, failed);
        }
}


3。使用第三方开发的Annotation类型
这也是开发人员所常常用到的一种方式。比如我们在使用Hibernate3.0时就可以利用Annotation生成数据表映射配置文件,而不必使用Xdoclet。

五、总结:

1。前面的文字说明了annotation的使用方法、定义方式、分类。初学者可以通过以上的说明制作简单的annotation程序,但是对于一些高级的 annotation应用(例如使用自定义annotation生成javabean映射xml文件)还需要进一步的研究和探讨。

2。同时,annotation运行存在两种方式:运行时、编译时。上文中讨论的都是在运行时的annotation应用,但在编译时的annotation应用还没有涉及,因为编译时的annotation要使用annotation processing tool。

涉及以上2方面的深入内容,作者将在后文《Java Annotation高级应用》中谈到。

六、参考资源:
·Matrix-Java开发者社区:http://www.matrix.org.cn
·http://java.sun.com/docs/books/tutorial/java/javaOO/annotations.html
·http://java.sun.com/j2se/1.5.0/docs/guide/apt/GettingStarted.html
·http://java.sun.com/j2se/1.5.0/docs/guide/apt/GettingStarted.html
·http://java.sun.com/j2se/1.5.0/docs/guide/apt/GettingStarted.html
·作者的Blog:http://blog.matrix.org.cn/page/cleverpig
posted @ 2009-03-28 08:11 JAVA_HOME 阅读(277) | 评论 (0) | 编辑 收藏
 
ServletContext与ServletConfig的深度分析
ServletContext与ServletConfig的深度分析

对于web容器来说,ServletContext接口定义了一个servlet环境对象,这个对象定义了一个在servlet引擎上的servlet的视图。通过使用这个对象,servlet可以记录事件,得到资源并得到来自servlet的引擎类。
servlet容器在启动时会加载web应用,并为每个web应用创建唯一的servlet context对象,可以把ServletContext看成是一个Web应用的服务器端组件的共享内存,在ServletContext中可以存放共享数据,他提供了4个读取和设置共享数据的方法。具体见api帮助文档。
另外,ServletContext对象只在web应用被关闭的时候才被销毁,不同的web应用,ServletContext各自独立存在。
一个web应用由jsp,servlet,javabean等web组件的集合构成,每一个web应用,容器都会有一个背景对象,而javax.servlet.ServletContext接口就提供了访问这个背景对象的途径。你可以通过一个servlet实例的getServletContext()方法得到该servlet运行其中的这个背景对象,从这个背景对象中你可以访问如下信息资源:
1.初始化参数
2.存储在背景中的对象
3.与背景关联的资源
4.日志
最后针对ServletContext我自己的总结是:
ServletContext即servlet容器,其内提供的方法可以在同一web应用下的所有servlet中被使用

而对于config对象来说,他与context相比,就有了很大的局限性。
当ServletConfig对象在servlet中被实例化后,对任何客户端在任何时候访问有效。但是一个servlet的ServletConfig对象不能被另一个servlet访问,也就是说,在本servlet声明后的ServletConfig只能在本servlet内被访问,属于内部持久有效的变量。

下有一例,可供深刻理解:

一般来说,对整个应用的配置,为了不使用“硬编码”,应该配置为ServletContext参数,比如字
符集设定。
<web-app>
.................
<init-param>
<param-name>charset</param-name> 
<param-value>GB2312</param-value> 
</init-param>
.................
</web-app>
注意以上格式只是2。0以后的标准格式,旧容器(引擎)采用服务商自己的格式配置。注意它的
父元素应该是<web-app>也就是说它是对一个应用作用的。

而如果只有一个特定的servlet要设定的参数,其它servlet不能共享,应该配置为ServletConfig
参数,如一个读取附件的servlet要用到绝对目录,而别的servlet不会用到:
<servlet>
<servlet-name>GetAtt</servlet-name>
<servlet-class>mail.GetAttServlet</servlet-class>
<init-param>
<param-name>absPath</param-name> 
<param-value>/usr/mail/ax/axman/Maildir/</param-value> 
</init-param>
</servlet>
不用说,因为在<servlet>标签中已经指定了name和class,也就是说只有mail.GetAttServlet这个\r
servlet中才能取到path,而别的Servlet是不能取到的。

前面我们讲了对这连个属性的认识,下面让我们来共同学习一下,如何获取这两个对象的参数:

访问ServletConfig参数:
首先要取得ServletConfig对象,然后调用它的getInitParameter();方法。要访问
ServletConfig对象,jsp中直接使用config内置对象,但因为你的JSP编译后的servlet一般不会被
加到web.xml中的,所以一般不会通过jsp来取对本JSP编译后的servlet的配置参数,那么在servlet
中要得到ServletConfig对象有两种方法:

在inii()方法中取到:通过init的重载方法传递

.....
public class Test extends HttpServlet 
{
ServletConfig config;
public void init(ServletConfig config) throws ServletException {
this.config = config;
}
..................
}
然后在下面的方法中就可以访问config对象。但要注意,为了确保能从构造方法中到当前servlet的
config对象,应该调用父类的构造方法:
.....
public class Test extends HttpServlet 
{
ServletConfig config;
public void init(ServletConfig config) throws ServletException {
super.init(config);
this.config = config;
}
..................
}

通过getServletConfig()方法直接到时,这样做的好处是不必调手工传递属性,想在任何时候都可
以得到。

还有第三种方法,要自己实现一些接口,这里作为一般讨论就不介绍了。
要访问ServletContext对象,只要从现有的ServletConfig对象getServletContext()就可以了,然后\r调用它的getInitParameter()方法就可以获取它的参数。
posted @ 2008-12-22 12:59 JAVA_HOME 阅读(108) | 评论 (0) | 编辑 收藏
 
ext 项目小结1
当数据源变更后,重新加载数据:

1,可以重新创建grid,不过这种比较慢 。
2,gridName.store.proxy = new Ext.data.HttpProxy(
    {
        url:'/....'
    }
) ;
    gridName.store.load() ;


Grid变更后验证:
gridName.on('afteredit',function(e){
       e.row;                 //编辑的行
       e.column;            //编辑的列
       e.originalValue;    //编辑前的值
       e.value;                //编辑后的值
       

       ........
    });

posted @ 2008-08-15 13:21 JAVA_HOME 阅读(1771) | 评论 (0) | 编辑 收藏
 
TomCat 配置 小结
     摘要: TomCat 配置 小结  阅读全文
posted @ 2008-06-24 13:07 JAVA_HOME 阅读(259) | 评论 (0) | 编辑 收藏
 
java: 参数传递——按值传递
Java 应用程序有且仅有的一种参数传递机制,即按值传递。
按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本。因此,如果函数修改了该参数,仅改变副本,而原始值保持不变。按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本。因此,如果函数修改了该参数,调用代码中的原始值也随之改变。

在 C++ 中当传递给函数的参数是引用时,您传递的就是这个引用,或者内存地址(按引用传递)。在 Java 应用程序中,当对象引用是传递给方法的一个参数时,您传递的是该引用的一个副本(按值传递),而不是引用本身。
posted @ 2008-05-05 15:03 JAVA_HOME 阅读(1086) | 评论 (0) | 编辑 收藏
 
java.math.BigDecimal
/**
*不可变的、任意精度的有符号十进制数。
*除法时如果除不尽会报异常
*/
BigDecimal   d   =   new   BigDecimal(3);
//BigDecimal.ONE.divide(d) ;  
BigDecimal.ONE.divide(d,2,BigDecimal.model) ;

//保留小数
BigDecimal   bd   =   new   BigDecimal(3.1415926);  
     
    System.out.println(bd);  
    System.out.println(bd.setScale(5,BigDecimal.ROUND_HALF_EVEN));  
    System.out.println(bd.setScale(3,BigDecimal.ROUND_HALF_UP));  
    System.out.println(bd.setScale(3,BigDecimal.ROUND_HALF_UP));  
    System.out.println(bd.setScale(2,BigDecimal.ROUND_HALF_UP));
    System.out.println(bd.setScale(1,BigDecimal.ROUND_HALF_UP));
    System.out.println(bd.setScale(0,BigDecimal.ROUND_HALF_UP));
posted @ 2008-04-30 10:36 JAVA_HOME 阅读(1458) | 评论 (0) | 编辑 收藏
 
javascript:给IE加快捷键
B/S——C/S样式

document.onkeydown = hotkey;
function hotkey() {
 var a = window.event.keyCode;
 alert(a) ;
 if ((a == 81) && (event.altKey)) {// alt+q
        alt_q() ;
  }
 if ((a == 77) && (event.ctrlKey))// alt+m
 {
        ctrl_m() ;
 }
 }
posted @ 2008-04-25 08:15 JAVA_HOME 阅读(1003) | 评论 (0) | 编辑 收藏
 
随笔:44 文章:1 评论:2 引用:0
<2008年4月>
日一二三四五六
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类

  • documentum webtop(1) (rss)
  • Hibernate(1) (rss)
  • HTML5(1) (rss)

随笔档案

  • 2013年12月 (2)
  • 2012年3月 (2)
  • 2012年2月 (1)
  • 2012年1月 (2)
  • 2011年12月 (3)
  • 2011年10月 (1)
  • 2011年8月 (1)
  • 2011年7月 (1)
  • 2011年4月 (1)
  • 2010年10月 (1)
  • 2010年9月 (3)
  • 2010年7月 (1)
  • 2010年3月 (1)
  • 2010年2月 (2)
  • 2010年1月 (5)
  • 2009年12月 (7)
  • 2009年11月 (3)
  • 2009年3月 (1)
  • 2008年12月 (1)
  • 2008年8月 (1)
  • 2008年6月 (1)
  • 2008年5月 (1)
  • 2008年4月 (2)

文章档案

  • 2009年12月 (1)

搜索

  •  

最新评论

  • 1. re: weblogic 12 && struts2[未登录]
  • thinks
  • --xx
  • 2. re: JBoss and JMS
  • pass by
  • --大白

阅读排行榜

  • 1. eclipse离线安装【link方式安装】jetty插件(2429)
  • 2. ext 项目小结1(1771)
  • 3. Spring解决多数据源(1665)
  • 4. java.math.BigDecimal(1458)
  • 5. wsgen与wsimport命令说明(1321)

评论排行榜

  • 1. JBoss and JMS(1)
  • 2. weblogic 12 && struts2(1)
  • 3. maven tools.jar(0)
  • 4. OSGI-ECLIPSE MODULE 开发(0)
  • 5. documentum - webtop - flow(0)

Powered by: 博客园
模板提供:沪江博客
Copyright ©2025 JAVA_HOME