Sigmazel

戒骄戒躁!

2009年6月11日 #

怎样关闭目录浏览方式?

查了些资料,大多数都是说可以 将directory-servlet设置为 “none” 来禁止目录浏览,但是这种方式只是针对于Resin2.x,在3.x中已经不使用directory-servlet了。后来看了下官方的文档资料,原来关闭目录浏览的方法很简单,只需要将resin.conf中JAVA中文站社区门户8m6a`*AU j

  1. <servlet servlet-name="directory" 
  2.               servlet-class="com.caucho.servlets.DirectoryServlet"/>

-^2Q ih#N.H修改为JAVA中文站社区门户O-|/Y8Qj?-AQq F

  1. <servlet servlet-name="directory" 
  2.               servlet-class="com.caucho.servlets.DirectoryServlet"> 
  3.           <init enable="false"/> 
  4.       </servlet>

JAVA中文站社区门户*X O9wHy

或者直接注释掉这一段代码就可以了。

posted @ 2009-06-11 18:41 Sigmazel 阅读(4) | 评论 (0)编辑

2009年1月4日 #

java(Web)中相对路径,绝对路径问题总结

前言:
 前一段时间,由于在处理Web应用下的文件创建与移动等,因此涉及到很多关于java
中相对路径,绝对路径等问题。同时,对于Web应用中的相对路径,绝对路径,以及Java.io.File
类学习了一下。也找了一些资料。希望大家遇到类似的问题,可以更有效的解决。

=================================================================================
1.基本概念的理解

  绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如:
C:\xyz\test.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm也代表了一个
URL绝对路径。

  相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在
Servlet中,"/"代表Web应用的跟目录。和物理路径的相对表示。例如:"./" 代表当前目录,
"../"代表上级目录。这种类似的表示,也是属于相对路径。

另外关于URI,URL,URN等内容,请参考RFC相关文档标准。

RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax,
(http://www.ietf.org/rfc/rfc2396.txt)


2.关于JSP/Servlet中的相对路径和绝对路径。

2.1服务器端的地址

   服务器端的相对地址指的是相对于你的web应用的地址,这个地址是在服务器端解析的
(不同于html和javascript中的相对地址,他们是由客户端浏览器解析的)也就是说这时候
在jsp和servlet中的相对地址应该是相对于你的web应用,即相对于http://192.168.0.1/webapp/的。

  其用到的地方有:
 forward:servlet中的request.getRequestDispatcher(address);这个address是
在服务器端解析的,所以,你要forward到a.jsp应该这么写:
request.getRequestDispatcher(“/user/a.jsp”)这个/相对于当前的web应用webapp,
其绝对地址就是:http://192.168.0.1/webapp/user/a.jsp
sendRedirect:在jsp中<%response.sendRedirect("/rtccp/user/a.jsp");%>

2.22、客户端的地址
 
       所有的html页面中的相对地址都是相对于服务器根目录(http://192.168.0.1/)的,
而不是(跟目录下的该Web应用的目录)http://192.168.0.1/webapp/的。
 Html中的form表单的action属性的地址应该是相对于服务器根目录(http://192.168.0.1/)的,
所以,如果提交到a.jsp为:action="/webapp/user/a.jsp"或action="<%=request.getContextPath()%>"/user/a.jsp;
  提交到servlet为actiom="/webapp/handleservlet"  
   Javascript也是在客户端解析的,所以其相对路径和form表单一样。
 

  因此,一般情况下,在JSP/HTML页面等引用的CSS,Javascript.Action等属性前面最好都加上
<%=request.getContextPath()%>,以确保所引用的文件都属于Web应用中的目录。
另外,应该尽量避免使用类似".","./","http://www.cnblogs.com/"等类似的相对该文件位置的相对路径,这样
当文件移动时,很容易出问题。


3. JSP/Servlet中获得当前应用的相对路径和绝对路径
3.1 JSP中获得当前应用的相对路径和绝对路径
 根目录所对应的绝对路径:request.getRequestURI()
 文件的绝对路径     :application.getRealPath(request.getRequestURI());
 当前web应用的绝对路径 :application.getRealPath("/");
 取得请求文件的上层目录:new File(application.getRealPath(request.getRequestURI())).getParent()

3.2 Servlet中获得当前应用的相对路径和绝对路径
 根目录所对应的绝对路径:request.getServletPath();
 文件的绝对路径    :request.getSession().getServletContext().getRealPath
(request.getRequestURI())   
 当前web应用的绝对路径 :servletConfig.getServletContext().getRealPath("/");
     (ServletContext对象获得几种方式:
       javax.servlet.http.HttpSession.getServletContext()
       javax.servlet.jsp.PageContext.getServletContext()
       javax.servlet.ServletConfig.getServletContext()
     )

4.java 的Class中获得相对路径,绝对路径的方法
4.1单独的Java类中获得绝对路径
  根据java.io.File的Doc文挡,可知:
 默认情况下new File("/")代表的目录为:System.getProperty("user.dir")。
 一下程序获得执行类的当前路径
package org.cheng.file;
import java.io.File;

public class FileTest {
    public static void main(String[] args) throws Exception {      

  System.out.println(Thread.currentThread().getContextClassLoader().getResource(""));    

  System.out.println(FileTest.class.getClassLoader().getResource(""));       

  System.out.println(ClassLoader.getSystemResource(""));       
  System.out.println(FileTest.class.getResource(""));       
  System.out.println(FileTest.class.getResource("/")); //Class文件所在路径 
  System.out.println(new File("/").getAbsolutePath());       
  System.out.println(System.getProperty("user.dir"));   
 }
}

4.2服务器中的Java类获得当前路径(来自网络)
(1).Weblogic

WebApplication的系统文件根目录是你的weblogic安装所在根目录。
例如:如果你的weblogic安装在c:\bea\weblogic700.....
那么,你的文件根路径就是c:\.
所以,有两种方式能够让你访问你的服务器端的文件:
a.使用绝对路径:
比如将你的参数文件放在c:\yourconfig\yourconf.properties,
直接使用 new FileInputStream("yourconfig/yourconf.properties");
b.使用相对路径:
相对路径的根目录就是你的webapplication的根路径,即WEB-INF的上一级目录,将你的参数文件放

在yourwebapp\yourconfig\yourconf.properties,
这样使用:
new FileInputStream("./yourconfig/yourconf.properties");
这两种方式均可,自己选择。

(2).Tomcat

在类中输出System.getProperty("user.dir");显示的是%Tomcat_Home%/bin

(3).Resin

不是你的JSP放的相对路径,是JSP引擎执行这个JSP编译成SERVLET
的路径为根.比如用新建文件法测试File f = new File("a.htm");
这个a.htm在resin的安装目录下

(4).如何读相对路径哪?

在Java文件中getResource或getResourceAsStream均可

例:getClass().getResourceAsStream(filePath);//filePath可以是"/filename",这里的/代表web

发布根路径下WEB-INF/classes

默认使用该方法的路径是:WEB-INF/classes。已经在Tomcat中测试。

5.读取文件时的相对路径,避免硬编码和绝对路径的使用。(来自网络)
5.1 采用Spring的DI机制获得文件,避免硬编码。
   参考下面的连接内容:
   http://www.javajia.net/viewtopic.php?p=90213&
5.2 配置文件的读取
 参考下面的连接内容:
 http://dev.csdn.net/develop/article/39/39681.shtm
5.3 通过虚拟路径或相对路径读取一个xml文件,避免硬编码
 参考下面的连接内容:
 http://club.gamvan.com/club/clubPage.jsp?iPage=1&tID=10708&ccID=8
 
6.Java中文件的常用操作(复制,移动,删除,创建等)(来自网络)
 常用 java File 操作类
 http://www.easydone.cn/014/200604022353065155.htm
 
 Java文件操作大全(JSP中)
 http://www.pconline.com.cn/pcedu/empolder/gj/java/0502/559401.html

 java文件操作详解(Java中文网)
 http://www.51cto.com/html/2005/1108/10947.htm

 JAVA 如何创建\删除\修改\复制目录及文件
 http://www.gamvan.com/developer/java/2005/2/264.html

总结:
 通过上面内容的使用,可以解决在Web应用服务器端,移动文件,查找文件,复制
 删除文件等操作,同时对服务器的相对地址,绝对地址概念更加清晰。
建议参考URI,的RFC标准文挡。同时对Java.io.File. Java.net.URI.等内容了解透彻
对其他方面的理解可以更加深入和透彻。

posted @ 2009-01-04 12:33 Sigmazel 阅读(241) | 评论 (0)编辑

2008年9月19日 #

小想法记下来

     摘要:   阅读全文

posted @ 2008-09-19 17:12 Sigmazel 阅读(16) | 评论 (0)编辑

2008年9月16日 #

CMS项目开发小TIP总结

     摘要:   阅读全文

posted @ 2008-09-16 09:18 Sigmazel 阅读(60) | 评论 (0)编辑

2008年9月11日 #

自动加载插件及自定义标签功能实现方案

     摘要:   阅读全文

posted @ 2008-09-11 11:10 Sigmazel 阅读(74) | 评论 (0)编辑

2008年9月2日 #

CMS开发日志

2008-10-10

此次更新的东西比较多

1.文章及分类相关表结构,统计不做冗余字段处理

2.文章回收站、关键词、统计功能(图形报表暂空)

3.参数配置部分功能

4.高级功能管理中的类清单、版本升级功能

5.类名改动

  1)Component->Module

  2)Tag分析相关类改为Builder模式

6.Tag添加属性及定义方式改动,可支持子级定义文件


2008-9-28

27号的设计经验证是不妥的,虽然可以降低插件的工作量,但是后续的在线可视化编辑就做不到。但其中的$page.include标签换成{include xxx}是可以提高解析性能。

另,已更改{tag}的解析方式,换为Parse->analysis->emitTag($content);方式,即自定义{tag}交于标签分析器来分析,将分析的结果返回模板分析器,将由模板分析{tag}的部分移至标签分析器中。

而标签分析器并不直接向解析后的代码里插入分析结果,而是向替换成模板标签,这样可以带来更大的自由度,方便以后更换标签分析器,如在线可视化编辑的标签分析。


 

2008-9-27

需要解决的问题:

1.{tag}$xxx.xxx([$parmss]);{/tag}自定义标签的表达式规则改变

说明:

将类似于:{tag}$article.get('08092211111111');{/tag}规则变为{tag}$xxx = $article.get('080922111111111');{/tag}

$xxx为自定义变量名称

2.{tag}$page.include("xxxx.htm");{/tag}表达式规则不变,但实现方式变为模板解析之前引入模板文件

说明:

在模板分析器(Parser)分析主模板文件前将所有自定义标签{tag}$page.include("xxxx.htm");{/tag}置换成模板语言{#include theme.site.xxxx;}

(注:$page.include("xxxx.htm");中的文件名后缀名可有可无,HtmlParser的模板文件后缀只能为.htm)

原因:

1.自定义标签{tag}xxxx{/tag}只用来取数据(包括模板文件内容),概念清晰,自定义模板开发难度降底。

2.include子模板文件的解析速度有提升

 


2008-9-22

1.自动升级(插件、类清单)

2.iframe自动伸缩FireFox的BUG

3.MySqlCommand的分页BUG,后续改成PDO,支持存储过程及事务

4.模板标签的解析方式,现为类组件,Control.Render方式

5.优化类加载方式,页面加载时间从20ms提高到2ms

6.修正上传文件的不安全漏洞

7.文章发布、审核、移至回收站、转移、复制、彻底删除功能

8.系统自定义静态页面及模板缓存时间

 


2008-9-3

1.其它参数设置

2.修正Maptable->merge方法

 


2008-9-2之前

1.内核框架

2.静态站点模板解析

3.核心功能模块

4.站点参数设置

 

注:已实现可设置默认页、风格、解析器

posted @ 2008-09-02 15:41 Sigmazel 阅读(203) | 评论 (0)编辑

2008年8月17日 #

当前系统运行环境参数

System.getProperty(参数名称);

 

java.version Java 运行时环境版本
java.vendor Java 运行时环境供应商
java.vendor.url Java 供应商的 URL
java.home Java 安装目录
java.vm.specification.version Java 虚拟机规范版本
java.vm.specification.vendor Java 虚拟机规范供应商
java.vm.specification.name Java 虚拟机规范名称
java.vm.version Java 虚拟机实现版本
java.vm.vendor Java 虚拟机实现供应商
java.vm.name Java 虚拟机实现名称
java.specification.version Java 运行时环境规范版本
java.specification.vendor Java 运行时环境规范供应商
java.specification.name Java 运行时环境规范名称
java.class.version Java 类格式版本号
java.class.path Java 类路径
java.library.path 加载库时搜索的路径列表
java.io.tmpdir 默认的临时文件路径
java.compiler 要使用的 JIT 编译器的名称
java.ext.dirs 一个或多个扩展目录的路径
os.name 操作系统的名称
os.arch 操作系统的架构
os.version 操作系统的版本
file.separator 文件分隔符(在 UNIX 系统中是”/”)
path.separator 路径分隔符(在 UNIX 系统中是”:”)
line.separator 行分隔符(在 UNIX 系统中是”/n”)
user.name 用户的账户名称
user.home 用户的主目录
user.dir 用户的当前工作目录

posted @ 2008-08-17 21:15 Sigmazel 阅读(75) | 评论 (0)编辑