ct protect -r -chmod 775 directory-or-file-name #Set directory/file/element protection.
			
posted @ 
2007-11-06 12:07 jht 阅读(570) | 
评论 (0) | 
编辑 收藏问题,向脚步传递参数的时候如何取得一个一个的option
办法一: 就是一个一个读 用$#取得变量个数,然后读$1 $2 $3,不是很方便
查了一下命令手册:发现用getopts命令更方便,man page不是很好懂
直接看 Example.sh:
		
				 #
				!/
				bin
				/
				sh
				#
				!/
				bin
				/
				sh

 while
				 getopts 'a:b:c' myoption
				while
				 getopts 'a:b:c' myoption
 do
    
				do
				
						
						 case
				 $myoption 
				in
    
				case
				 $myoption 
				in
				
						
						 a) ls 
				-
				al
        a) ls 
				-
				al
 ;;
        ;;    
 b) ls 
				-
				l $OPTARG
        b) ls 
				-
				l $OPTARG    
 ;;
        ;;
 c) ls 
				-
				l
        c) ls 
				-
				l    
 esac
    esac
 done
    done
		 
		
				
用法和效果:
Example.sh -a stringa
就会执行 ls -al 这个命令, stringa 其实不起左右,但是这个参数还是要的
		Example.sh -b -lrt
那就会执行 ls -l -lrt 传进去的参数起作用了
		当然也可以这样
Example.sh -a 123 -b -lrt z, 这个作用就是两个命令都执行了
		
				
可以用变量保存这些OPTARG参数,在while循环外面接着使用
			posted @ 
2007-10-30 14:46 jht 阅读(2206) | 
评论 (0) | 
编辑 收藏
			Hibernate 提供了一个hibernate.properties的模板,稍加修改就能得到自己想要的配置效果
下面这一段XML配置文件中关于数据库连接方式的配置,可以在hibernate.properties中完成
 <?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE hibernate-configuration PUBLIC
<!DOCTYPE hibernate-configuration PUBLIC
 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 <hibernate-configuration>
<hibernate-configuration>
 <session-factory name="sf">
    <session-factory name="sf">
 <!--
    <!-- 
 <property name="hibernate.connection.driver_class">
        <property name="hibernate.connection.driver_class">
 org.hsqldb.jdbcDriver
            org.hsqldb.jdbcDriver
 </property>
        </property>
 <property name="hibernate.connection.url">
        <property name="hibernate.connection.url">
 jdbc:hsqldb:hsql://localhost/HibernateMapping
            jdbc:hsqldb:hsql://localhost/HibernateMapping
 </property>
        </property>
 <property name="hibernate.connection.username">sa</property>
        <property name="hibernate.connection.username">sa</property>
 <property name="hibernate.dialect">
        <property name="hibernate.dialect">
 org.hibernate.dialect.HSQLDialect
            org.hibernate.dialect.HSQLDialect
 </property>
        </property>
 -->
     -->
 <mapping package="cn.heapstack.models" />
        <mapping package="cn.heapstack.models" />
 <mapping class="cn.heapstack.models.User" />
        <mapping class="cn.heapstack.models.User" />
 <mapping class="cn.heapstack.models.UserInfo" />
        <mapping class="cn.heapstack.models.UserInfo" />
 </session-factory>
    </session-factory>

 
    
 </hibernate-configuration>
</hibernate-configuration>

 ## HypersonicSQL
## HypersonicSQL
 #$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
 hibernate.dialect org.hibernate.dialect.HSQLDialect
hibernate.dialect org.hibernate.dialect.HSQLDialect
 hibernate.connection.driver_class org.hsqldb.jdbcDriver
hibernate.connection.driver_class org.hsqldb.jdbcDriver
 hibernate.connection.username sa
hibernate.connection.username sa
 hibernate.connection.password
hibernate.connection.password
 hibernate.connection.url jdbc:hsqldb:hsql://localhost/HibernateMapping
hibernate.connection.url jdbc:hsqldb:hsql://localhost/HibernateMapping
 #$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$


代码示例:
 Configuration cfg = new AnnotationConfiguration().configure("./hibernate.cfg.xml");
Configuration cfg = new AnnotationConfiguration().configure("./hibernate.cfg.xml");
 SessionFactory sf = cfg.buildSessionFactory();
SessionFactory sf = cfg.buildSessionFactory();
 Session session = sf.openSession();
Session session = sf.openSession();
 org.hibernate.Transaction tx= session.beginTransaction();
org.hibernate.Transaction tx= session.beginTransaction();
 tx.commit();
tx.commit();
 session.close();
session.close();

posted @ 
2007-10-26 14:40 jht 阅读(315) | 
评论 (1) | 
编辑 收藏AnyEdit  是一个挺好用的工具,在eclipse工具栏上加了几个常用的工具按钮,比如全部保存。
Work Set导入导出的功能也挺有用。
AnyEdit还有自动删除行末空格的功能,支持tab和空格的相互转换,支持在文本编辑状态下高亮显示空格。
除此之外打开光标下所在类定义或者是文件的功能也非常实用。
顺便说一下,这个插件的作者还开发了不少有用的插件,可以从下面的链接里找到更详细的信息
地址: http://andrei.gmxhome.de/eclipse.html
			posted @ 
2007-09-29 10:20 jht 阅读(2206) | 
评论 (1) | 
编辑 收藏
			首先看这一段简单的log4j配置
 log4j.logger.cn=debug,stdout
log4j.logger.cn=debug,stdout
 log4j.logger.cn.heapstack=debug,stdout
log4j.logger.cn.heapstack=debug,stdout
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c line.%L: %m%n
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c line.%L: %m%n这个配置导致日志文件中输出两行相同的结果
原因是这样的,第二行的logger继承自第一行的logger,两个logger的apperder都是指向stdout
Appender的输出是独立的,所以导致了我们使用如下代码获得logger的时候会输出两行
public static Logger logger = Logger.getLogger(cn.heapstack.demopkg.Main.class);
知道这个原因之后解决办法也就简单了,即我们不需要定义重复的appder,
可以把第二行最后的stdout去掉,或者注释掉第二行,如果输出级别相同的话
			
posted @ 
2007-09-28 09:57 jht 阅读(1337) | 
评论 (0) | 
编辑 收藏
				Download and some env configure
 1. download gwt version gwt-windows-1.4.60 from http://code.google.com/webtoolkit
 2. unzip gwt-windows-1.4.60.zip file
 3. set system env variable GWT_HOME to the path where you hold your gwt files
 4. add %GWT_HOME% to your env path
		Google Code Home > Google Web Toolkit > Getting Started Guide , it's a good place to get start.
You could follow this guide and get a first impression of what GWT can do and how convenient it is.
		
				Usage
				
projectCreator -eclipse MyProject
ApplicationCreator [-eclipse projectName] [-out dir] [-overwrite] [-ignore] className 
		 
		
				
						Eclipse plugin
				
				
				
						cypal.studio.for.gwt
						
				 1. download from http://code.google.com/p/cypal-studio/ version: cypal.studio.for.gwt-RC2.zip
 2. install this eclipse plugin (install it by new local site or just copy files, it's up on you )
 
GWT Designer 

 1. download from http://www.instantiations.com/gwtdesigner/index.html
 2. during install you need to choose Eclipse base location and GWT_HOME location
 
 Study how to use this plugin, 
Webdemos
http://www.instantiations.com/gwtdesigner/demos.html
GWT desinger document homePage
http://downloads.instantiations.com/DesignerDoc/integration/latest/docs/html/gwt/index.html
Tutorial: Creating a Login application
http://downloads.instantiations.com/DesignerDoc/integration/latest/docs/html/gwt/tutorial/tutorial_login.html
 
			posted @ 
2007-09-25 15:09 jht 阅读(474) | 
评论 (1) | 
编辑 收藏Groovy Eclipse Plugin 允许你编辑编译允许groovy脚本和类。

 注意该插件正在不断开发中,你可以查看该插件开发的最近进展: 
issues and bugs- 在Eclipse菜单里选择: Help -> Software Updates -> Find and Install -> Search For New Features
- 点击 New Remote Site
- 在 Name 字段里填名称 (例如: Groovy) 
- 将上面的URL拷贝到 URL 字段里,然后点击 OK
- 选中新建Groovy站点然后确定 
- 在 Select the Features to Install 下选中Groovy 的选项(确保你选择了最新的版本)点击 Next
- 接受,点击 Next
- 如何默认安装位置可以的话,点击 Finish (然后eclipse开始下载Plugin) 
- 如果你看到plugin为签名的对话框弹出来了,点击 Install or Install All
这将下载并安装Eclipse的Groovy插件.  它需要重启Eclipse来保证插件加载完成。
如果你想尝试最近的开发中的版本,  可以用这个站点: http://dist.codehaus.org/groovy/distributions/updateDev/
创建一个 Groovy 工程
按照如下步骤创建一个基本的Groovy工程:
- 打开: File -> New -> Project
- 选择 Java Project 然后点 Next
- 在 Project Name 字段填上你工程的名字
- 在 Project Layout 下选择 Create separate source and output folders 然后点击 Finish
- 在 Package Explorer 下找到刚刚新建的工程,右击, 选择 Groovy -> Add Groovy Nature
到目前为止你有了一个src目录,一个bin-groovy目录,还有几个库文件。还有一个由Eclipse创建的bin目录,但是因为过滤隐藏了。下面的几步是为了让bin-groovy目录成为默认的输出文件夹,并且将它和src文件夹关联,使得调试工具知道从哪找关联的源代码和类。
- 在 Package Explorer, 右击 "GroovyJava" 工程, 选择: Build Path -> Configure Build Path
- 使用 Browse 按钮,将 Default Output Folder 从bin 改为 bin-groovy
- 点击 OK, OK
posted @ 
2007-09-23 11:19 jht 阅读(4149) | 
评论 (2) | 
编辑 收藏
			     摘要: 使用DWR做一个demo的时候,总是报出 JS Alert: Max depth exceeded when dereferencing ...
		
				
				
						
						
						
				
				function
				 update() 
				
						
				
				
						{ 
						//
				...  
阅读全文
			posted @ 
2007-08-12 17:54 jht 阅读(4251) | 
评论 (5) | 
编辑 收藏
		
这个问题出现发生的代码如下:

 public String execute() throws Exception
    public String execute() throws Exception  {
{
 // String path = getText("struts.multipart.saveDir");
        // String path = getText("struts.multipart.saveDir");

 try
        try  {
{
 int i = getMyDoc().length;
            int i = getMyDoc().length;


 for (int j = 0; j < i; j++)
            for (int j = 0; j < i; j++)  {
{
 File save = new File("C:/upload/" + getMyDocFileName()[j]);
                File save = new File("C:/upload/" + getMyDocFileName()[j]);
 FileUtils.copyFile(getMyDoc()[j], save);
                FileUtils.copyFile(getMyDoc()[j], save);
 }
            }

 } catch (Exception e)
        } catch (Exception e)  {
{
 return ActionSupport.ERROR;
            return ActionSupport.ERROR;
 }
        }
 return ActionSupport.SUCCESS;
        return ActionSupport.SUCCESS;

 }
    }
这是用Struts2上传多个文件时候的一段代码,错误处理是遇到异常时return 一个ERROR,结果调用这个这个UploadAction报错 No result defined for action ..... 
应该修改成这样,捕获到异常时return ActionSupport.INPUT ,这样当页面第一次被载入时就不会报错了
			posted @ 
2007-07-26 17:29 jht 阅读(3583) | 
评论 (1) | 
编辑 收藏
			这个问题是在使用Struts2想做一个上传文件的页面时候Tomcat报出来的错误,详细信息如下:
2007-7-19 21:34:09 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.RuntimeException: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]
    at com.opensymphony.xwork2.inject.ContainerBuilder$4.create(ContainerBuilder.java:136)
    at com.opensymphony.xwork2.inject.ContainerImpl.getInstance(ContainerImpl.java:476)
    at com.opensymphony.xwork2.inject.ContainerImpl.getInstance(ContainerImpl.java:486)
    at com.opensymphony.xwork2.inject.ContainerImpl$9.call(ContainerImpl.java:517)
    at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:542)
    at com.opensymphony.xwork2.inject.ContainerImpl.getInstance(ContainerImpl.java:515)
    at org.apache.struts2.dispatcher.Dispatcher.wrapRequest(Dispatcher.java:697)
    at org.apache.struts2.dispatcher.FilterDispatcher.prepareDispatcherAndWrapRequest(FilterDispatcher.java:330)
    at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:390)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Thread.java:595)
Caused by: Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest (jakarta) - [unknown location]
    at org.apache.struts2.config.BeanSelectionProvider$ObjectFactoryDelegateFactory.create(BeanSelectionProvider.java:246)
    at com.opensymphony.xwork2.inject.ContainerBuilder$4.create(ContainerBuilder.java:134)
    ... 22 more
最后Google了不少文章,找到了原因:(缺少了必要的jar包)Struts2使用开源项目Apache Jakarta Commons FileUpload和内建的FileUploadInterceptor拦截器实现文件上传,所需的jar包如下:
commons-logging-1.1.jar
freemarker-2.3.8.jar
ognl-2.6.11.jar
struts2-core-2.0.6.jar
xwork-2.0.1.jar
commons-io-1.3.1.jar
commons-fileupload-1.2.jar
参考资料:
在Struts 2中实现文件上传
			posted @ 
2007-07-19 21:57 jht 阅读(17209) | 
评论 (11) | 
编辑 收藏