ct protect -r -chmod 775 directory-or-file-name #Set directory/file/element protection.
posted @
2007-11-06 12:07 jht 阅读(558) |
评论 (0) |
编辑 收藏
问题,向脚步传递参数的时候如何取得一个一个的option
办法一: 就是一个一个读 用$#取得变量个数,然后读$1 $2 $3,不是很方便
查了一下命令手册:发现用getopts命令更方便,man page不是很好懂
直接看 Example.sh:
#
!/
bin
/
sh
while
getopts 'a:b:c' myoption
do
case
$myoption
in
a) ls
-
al
;;
b) ls
-
l $OPTARG
;;
c) ls
-
l
esac
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 阅读(2192) |
评论 (0) |
编辑 收藏
Hibernate 提供了一个hibernate.properties的模板,稍加修改就能得到自己想要的配置效果
下面这一段XML配置文件中关于数据库连接方式的配置,可以在hibernate.properties中完成
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="sf">
<!--
<property name="hibernate.connection.driver_class">
org.hsqldb.jdbcDriver
</property>
<property name="hibernate.connection.url">
jdbc:hsqldb:hsql://localhost/HibernateMapping
</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.dialect">
org.hibernate.dialect.HSQLDialect
</property>
-->
<mapping package="cn.heapstack.models" />
<mapping class="cn.heapstack.models.User" />
<mapping class="cn.heapstack.models.UserInfo" />
</session-factory>
</hibernate-configuration>
## HypersonicSQL
#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
hibernate.dialect org.hibernate.dialect.HSQLDialect
hibernate.connection.driver_class org.hsqldb.jdbcDriver
hibernate.connection.username sa
hibernate.connection.password
hibernate.connection.url jdbc:hsqldb:hsql://localhost/HibernateMapping
#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
代码示例:
Configuration cfg = new AnnotationConfiguration().configure("./hibernate.cfg.xml");
SessionFactory sf = cfg.buildSessionFactory();
Session session = sf.openSession();
org.hibernate.Transaction tx= session.beginTransaction();
tx.commit();
session.close();
posted @
2007-10-26 14:40 jht 阅读(287) |
评论 (1) |
编辑 收藏
AnyEdit 是一个挺好用的工具,在eclipse工具栏上加了几个常用的工具按钮,比如全部保存。
Work Set导入导出的功能也挺有用。
AnyEdit还有自动删除行末空格的功能,支持tab和空格的相互转换,支持在文本编辑状态下高亮显示空格。
除此之外打开光标下所在类定义或者是文件的功能也非常实用。
顺便说一下,这个插件的作者还开发了不少有用的插件,可以从下面的链接里找到更详细的信息
地址: http://andrei.gmxhome.de/eclipse.html
posted @
2007-09-29 10:20 jht 阅读(2180) |
评论 (1) |
编辑 收藏
首先看这一段简单的log4j配置
log4j.logger.cn=debug,stdout
log4j.logger.cn.heapstack=debug,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
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 阅读(1302) |
评论 (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 阅读(452) |
评论 (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 阅读(4069) |
评论 (2) |
编辑 收藏
摘要: 使用DWR做一个demo的时候,总是报出 JS Alert: Max depth exceeded when dereferencing ...
function
update()
{
//
...
阅读全文
posted @
2007-08-12 17:54 jht 阅读(4200) |
评论 (5) |
编辑 收藏
这个问题出现发生的代码如下:
public String execute() throws Exception {
// String path = getText("struts.multipart.saveDir");
try {
int i = getMyDoc().length;
for (int j = 0; j < i; j++) {
File save = new File("C:/upload/" + getMyDocFileName()[j]);
FileUtils.copyFile(getMyDoc()[j], save);
}
} catch (Exception e) {
return ActionSupport.ERROR;
}
return ActionSupport.SUCCESS;
}
这是用Struts2上传多个文件时候的一段代码,错误处理是遇到异常时return 一个ERROR,结果调用这个这个UploadAction报错 No result defined for action .....
应该修改成这样,捕获到异常时return ActionSupport.INPUT ,这样当页面第一次被载入时就不会报错了
posted @
2007-07-26 17:29 jht 阅读(3555) |
评论 (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 阅读(17140) |
评论 (11) |
编辑 收藏