java 学习

软件开发相关方面的学习

BlogJava 首页 新随笔 联系 聚合 管理
  33 Posts :: 1 Stories :: 5 Comments :: 0 Trackbacks

#

消息(错误)显示

ActionMessages messages = new ActionMessages();
messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("userForm.insert", info.getUserName());
messages.add("activationDate", new ActionMessage("userForm.active", info.getDateLength());

如下可以显示所有消息,并用<li>将它们放入一个list,再加上可定制的header/footer
<html:messages id="message" header="errors.header" footer="errors.footer">
<li><bean:write name="message"/></li>
</html:messages>

如下可以指定只显示某种message
<html:messages id="message" property="<%= org.apache.struts.action.ActionMessages.GLOBAL_MESSAGE %>">
<li><bean:write name="message"/></li>
</html:messages>

<html:messages id="message" property="activationDate">
<li><bean:write name="message"/></li>
</html:messages>

把Messages换成Errors就是错误显示,为了简便,经常一个<html:errors/>了事
posted @ 2006-06-12 10:07 zxf 阅读(213) | 评论 (0)编辑 收藏

把字段名和类型加入表中:alter table tabelName add column fieldName fieldType
把表中的字段drop掉:alter table tableName drop strFieldName
显示表中所有的列:show COLUMNS from tableName
显示数据库中所有表:show tables from datebaseName
posted @ 2006-05-29 15:55 zxf 阅读(237) | 评论 (0)编辑 收藏

public int getRound(double dSource){
int iRound
//BigDecimal的构造函数参数类型是double
BigDecimal deSource = new BigDecimal(dSource);
//deSource.setScale(0,BigDecimal.ROUND_HALF_UP) 返回值类型 BigDecimal
//intValue() 方法将BigDecimal转化为int
iRound= deSource.setScale(0,BigDecimal.ROUND_HALF_UP).intValue();
return iRound;
}

java中解决百分比保留两位小数并要求四舍五入的方法:

例如:

DecimalFormat df1 = new DecimalFormat("##.00%");     
String a = df1.format(0.56566);
System.out.println(a);

结果>>56.57%

在网上找到了下面这个文章觉得不错,在这篇文章中找到了方法解决了这个问题:

//--------------------------------------------------------------

//保留小数点后两位小数
public double Number2(double pDouble)
{
  BigDecimal  bd=new  BigDecimal(pDouble);
  BigDecimal  bd1=bd.setScale(2,bd.ROUND_HALF_UP);
  pDouble=bd1.doubleValue();
  long  ll = Double.doubleToLongBits(pDouble);
 
  return pDouble;
}

格式化输出数字
翻译:Cherami
email:cherami@163.net
原文:http://developer.java.sun.com/developer/TechTips/2000/tt0411.html
 * 格式化输出数字
格式化输出数字
有时我们需要控制输出的数字的格式,如何使用java的类库做到这个呢?
也许你不关心格式,但是你需要关心你的程序可以在全世界通用,像下面的这样一个简单的语句是依赖地区的:
    System.out.println(1234.56);
在美国,"." 是小数点,但在其它地方就不一定了。如何处理这个呢?

java.text 包中的一些包可以处理这类问题。下面的简单范例使用那些类解决上面提出的问题:

    import java.text.NumberFormat;

    import java.util.Locale;

    public class DecimalFormat1 {

        public static void main(String args[]) {

            // 得到本地的缺省格式

            NumberFormat nf1 = NumberFormat.getInstance();

            System.out.println(nf1.format(1234.56));

            // 得到德国的格式

            NumberFormat nf2 =

                NumberFormat.getInstance(Locale.GERMAN);

            System.out.println(nf2.format(1234.56));

        }

    }

如果你在美国,运行程序后输出:

    1,234.56

    1.234,56

换句话说,在不同的地方使用不同的习惯表示数字。

NumberFormat.getInstance()方法返回NumberFormat的一个实例(实际上是NumberFormat具体的一个子类,例如DecimalFormat), 这适合根据本地设置格式化一个数字。你也可以使用非缺省的地区设置,例如德国。然后格式化方法根据特定的地区规则格式化数字。这个程序也可以使用一个简单的形式:

    NumberFormat.getInstance().format(1234.56)

但是保存一个格式然后重用更加有效。国际化是格式化数字时的一个大问题。

另一个是对格式的有效控制,例如指定小数部分的位数,下面是解决这个问题的一个简单例子:

    import java.text.DecimalFormat;

    import java.util.Locale;

    public class DecimalFormat2 {

        public static void main(String args[]) {

            // 得到本地的缺省格式

            DecimalFormat df1 = new DecimalFormat("####.000");

            System.out.println(df1.format(1234.56));

            // 得到德国的格式

            Locale.setDefault(Locale.GERMAN);

            DecimalFormat df2 = new DecimalFormat("####.000");

            System.out.println(df2.format(1234.56));

        }

    }

在这个例子中设置了数字的格式,使用像"####.000"的符号。这个模式意味着在小数点前有四个数字,如果不够就空着,小数点后有三位数字,不足用0补齐。程序的输出:

    1234.560

    1234,560

相似的,也可以控制指数形式的格式,例如:

    import java.text.DecimalFormat;

    public class DecimalFormat3 {

        public static void main(String args[]) {

            DecimalFormat df = new DecimalFormat("0.000E0000");

            System.out.println(df.format(1234.56));

        }

    }

输出:

    1.235E0003

对于百分数:

    import java.text.NumberFormat;

    public class DecimalFormat4 {

        public static void main(String args[]) {

            NumberFormat nf = NumberFormat.getPercentInstance();

            System.out.println(nf.format(0.47));

        }

    }

输出:

    47%

至此,你已经看到了格式化数字的几个不同的技术。另一方面,如何读取并解析包含格式化的数字的字符串?解析支持包含在NumberFormat中。例如:

    import java.util.Locale;

    import java.text.NumberFormat;

    import java.text.ParseException;

    public class DecimalFormat5 {

        public static void main(String args[]) {

            // 本地格式

            NumberFormat nf1 = NumberFormat.getInstance();

            Object obj1 = null;

            // 基于格式的解析

            try {

                obj1 = nf1.parse("1234,56");

            }

            catch (ParseException e1) {

                System.err.println(e1);

            }

            System.out.println(obj1);

            // 德国格式

            NumberFormat nf2 =

                NumberFormat.getInstance(Locale.GERMAN);

            Object obj2 = null;

            // 基于格式的解析

            try {

                obj2 = nf2.parse("1234,56");

            }

            catch (ParseException e2) {

                System.err.println(e2);

            }

            System.out.println(obj2);

        }

    }

这个例子分两部分,都是解析一个字符串:"1234,56"。第一部分使用本地格式解析,第二部分使用德国格式解析。当程序在美国运行,结果是:

    123456

    1234.56

换句话说,"1234,56"在美国被认为是一个巨大的整数"123456"而在德国被认为是一个小数"1234.56"。

还有格式化讨论的最后一个问题。在上面的例子中, DecimalFormat 和 NumberFormat 都被使用了。DecimalFormat 常用于获得很好的格式控制,而NumberFormat 常用于指定不同于本地的地区。如何结合两个类呢?

答案围绕着这样的事实:DecimalFormat是NumberFormat的一个子类,其实例被指定为特定的地区。因此,你可以使用NumberFormat.getInstance 指定一个地区,然后将结构强制转换为一个DecimalFormat对象。文档中提到这个技术可以在大多情况下适用,但是你需要用try/catch 块包围强制转换以防转换不能正常工作 (大概在非常不明显得情况下使用一个奇异的地区)。下面是一个这样的例子:

    import java.text.DecimalFormat;

    import java.text.NumberFormat;

    import java.util.Locale;

    public class DecimalFormat6 {

        public static void main(String args[]) {

            DecimalFormat df = null;

            // 得到一个NumberFormat 对象并

            // 强制转换为一个 DecimalFormat 对象

            try {

                df = (DecimalFormat)

                    NumberFormat.getInstance(Locale.GERMAN);

            }

            catch (ClassCastException e) {

                System.err.println(e);

            }

            // 设置格式模式

            df.applyPattern("####.00000");

            // format a number

            System.out.println(df.format(1234.56));

        }

    }

 

getInstance() 方法获得格式,然后调用applyPattern()方法设置格式模式,输出:

    1234,56000

如果你不关心国际化,可以直接使用DecimalFormat 。

posted @ 2006-04-29 11:14 zxf 阅读(2965) | 评论 (1)编辑 收藏

tomcat 安装好之后,只需要把你的程序包放到$Tomcat_Home$/webapps下就可以直接使用了。这样会使webapps越来越大就需要设置虚拟目录:
1.单个应用设置:
 在<Host>和</host>之间加上
 <Context path="/site" docBase="d:\site" reloadable="true" debug="0">
 </Context>
 参数:path 表示在浏览器中输入http://localhost:8080/site
     docBase表示你的程序包的物理绝对路径,默认的绝对路径是$Tomcat_Home$/webapps
 这样设定了之后会在$tomcat_home$/conf/catalina/localhost目录下生成一个site.xml文件,此文件的内容就是刚才设置的内容。
2.通过前面我们知道了在$tomcat_home$/conf/catalina/localhost目录下会生成相应的配置文件,因此我们可以直接在$tomcat_home$/conf/catalina/localhost目录下写配置文件文件名任意取,最好是跟你的web应用相同便于管理,如site.xml内容同上
<Context path="/site" docBase="d:\site" reloadable="true" debug="0">
 </Context>
3.更改整个根目录:
  找到<Host name="localhost" debug="0" appBase="webapps"
  unpackWARs="true" autoDeploy="true">
 将appBase的设置成期望的路径(绝对路径)
 出现的问题:输入:http://localhost:8080/没有出现默认的页面
 原因当然是更改了路径造成的。解决也很简单了,把文件拷过来,或者再把原来默认的设成虚拟路径。
posted @ 2006-04-28 21:45 zxf 阅读(215) | 评论 (0)编辑 收藏

(一):安装及配置
安装--windows平台
从tomcat网站下载jakarta-tomcat-4.0.1.exe,按照一般的windows程序安装步骤即可安装好tomcat,安装时它会自动寻找你的jdk和jre的位置。

(二):配置
运行tomcat需要设置JAVA_HOME变量

JAVA_HOME=c:/jdk

(三):运行
设置完毕后就可以运行tomcat服务器了,进入tomcat的bin目录,win98下用startup启动tomcat,linux下用startup.sh,相应的关闭tomcat的命令为shutdown和shutdown.sh。

启动后可以在浏览器中输入http://localhost:8080/测试,由于tomcat本身具有web服务器的功能,因此我们不必安装apache,当然其也可以与apache集成到一起。

(四):应用

(1):目录结构
tomcat的目录结构如下:

目录名简介
bin存放启动和关闭tomcat脚本
conf包含不同的配置文件,server.xml(Tomcat的主要配置文件)和web.xml
work存放jsp编译后产生的class文件
webapp存放应用程序示例,以后你要部署的应用程序也要放到此目录
logs存放日志文件
lib/japser/common这三个目录主要存放tomcat所需的jar文件

(2):server.xml配置简介
下面我们将讲述这个文件中的基本配置信息,更具体的配置信息见tomcat的文档

元素名属性解释
serverport指定一个端口,这个端口负责监听关闭tomcat的请求
shutdown指定向端口发送的命令字符串
servicename指定service的名字
Connector
(表示客户端和service之间的连接)
port指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求
minProcessors服务器启动时创建的处理请求的线程数
maxProcessors最大可以创建的处理请求的线程数
enableLookups如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
redirectPort指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
acceptCount指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
connectionTimeout指定超时的时间数(以毫秒为单位)
Engine
(表示指定service中的请求处理机,接收和处理来自Connector的请求)
defaultHost指定缺省的处理请求的主机名,它至少与其中的一个host元素的name属性值是一样的
Context
(表示一个web应用程序,通常为WAR文件,关于WAR的具体信息见servlet规范)
docBase应用程序的路径或者是WAR文件存放的路径
path表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/****
reloadable这个属性非常重要,如果为true,则tomcat会自动检测应用程序的/WEB-INF/lib 和/WEB-INF/classes目录的变化,自动装载新的应用程序,我们可以在不重起tomcat的情况下改变应用程序

host
(表示一个虚拟主机)

name指定主机名
appBase应用程序基本目录,即存放应用程序的目录
unpackWARs如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序

Logger
(表示日志,调试和错误信息)

className指定logger使用的类名,此类必须实现org.apache.catalina.Logger 接口
prefix指定log文件的前缀
suffix指定log文件的后缀
timestamp如果为true,则log文件名中要加入时间,如下例:localhost_log.2001-10-04.txt

Realm
(表示存放用户名,密码及role的数据库)

className指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口

Valve
(功能与Logger差不多,其prefix和suffix属性解释和Logger 中的一样)

className

指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValve类可以记录应用程序的访问信息

directory指定log文件存放的位置
pattern有两个值,common方式记录远程主机名或ip地址,用户名,日期,第一行请求的字符串,HTTP响应代码,发送的字节数。combined方式比common方式记录的值更多

注意:1:经过我测试,我设置Context 的path="",reloadable=true,然后放一个WAR文件到webapps目录,结果tomcat不能检测出此文件(重起tomcat可以),而把此文件解压,则tomcat会自动检测出这个新的应用程序。如果不能自动检测WAR文件,我们可以利用下面管理中讲的方法来部署应用程序。

2:默认的server.xml中,Realm元素只设置了一个className属性,但此文件中也包含几个通过JDBC连接到数据库进行验证的示例(被注释掉了),通过Realm元素我们可以实现容器安全管理(Container Managed Security)。

3:还有一些元素我们没有介绍,如Parameter,loader,你可以通过tomcat的文档获取这些元素的信息。

(3):管理

1:配置
在进行具体的管理之前,我们先给tomcat添加一个用户,使这个用户有权限来进行管理。

打开conf目录下的tomcat-users.xml文件,在相应的位置添加下面一行:

<user name="zf" password="zf" roles="standard,manager"/> 

注意:这一行的最后部分一定是/>,tomcat的文档掉了/符号,如果没有/符号的话,tomcat重起时将无法访问应用程序。通过logs/catalina.out文件你可以看到这个错误的详细信息。

然后重起tomcat,在浏览器中输入http://localhost:8080/manager/,会弹出对话框,输入上面的用户名和密码即可。

2:应用程序列表
在浏览器中输入http://localhost:8080/manager/list,浏览器将会显示如下的信息:

OK - Listed applications for virtual host localhost
/ex:running:1
/examples:running:1
/webdav:running:0
/tomcat-docs:running:0
/manager:running:0
/:running:0

面的信息分别为应用程序的路径,当前状态(running 或者stopped),与这个程序相连的session数。

3:重新装载应用程序
在浏览器中输入 http://localhost:8080/manager/reload?path=/examples,浏览器显示如下:

OK - Reloaded application at context path /examples  

表示example应用程序装载成功,如果我们将server.xml的Context元素的reloadable属性设为true(见上面表格),则没必要利用这种方式重新装载应用程序,因为tomcat会自动装载。

4:显示session信息
在浏览器中输入http://localhost:8080/manager/sessions?path=/examples,浏览器显示如下:

OK - Session information for application at context path /examples Default maximum session inactive interval 30 minutes  

5:启动和关闭应用程序
在浏览器中输入http://localhost:8080/manager/start?path=/examples和http://localhost:8080/manager/stop?path=/examples分别启动和关闭examples应用程序。

6:部署及撤销部署
WAR有两种组织方式,一种是按一定的目录结构组织文件,一种是一个后缀为WAR的压缩包,因此它的部署方式也有两种:
(1):在浏览器中输入:http://localhost:8080/manager/install?path=/examples&war=file:/c:\examples
就会将按目录结构组织的WAR部署

(2):如果输入:http://localhost:8080/manager/install?path=/examples&war=jar:file:/c:\examples.war!/
就会将按压缩包组织的WAR部署,注意此url后半部分一定要有!/号。

部署后就可以用 http://localhost:8080/examples访问了。

在浏览器中输入:http://localhost:8080/manager/remove?path=/examples
就会撤销刚才部署的应用程序。

(4):与apache集成
虽然tomcat也可以作web服务器,但其处理静态html的速度比不上apache,且其作为web服务器的功能远不如apache,因此我们想把apache和tomcat集成起来。

我们以linux系统为例介绍.

从apache网站下载apache1.3.22源代码版本,然后使用如下命令配置安装apache:

mkdir /usr/local/apache
tar zxvf apache.1.32.tar.gz
cd apache.1.32
./configure --prefix=/usr/local/apache --enable-module=so 
make
make install

注意configure命令指定目标安装目录,并且加入DSO(Dynamic Shared Object)支持,注意一定不要忘了这一个选项。

然后下载webapp模块,将解压后mod_webapp.so文件放入apache的libexec目录,编辑apache的conf目录下的httpd.conf,在这个文件的最后加入下面三行:

LoadModule webapp_module libexec/mod_webapp.so
WebAppConnection warpConnection warp localhost:8008
WebAppDeploy examples warpConnection /examples/ 

第一行是加入webapp模块,如果编译apache时不增加DSO支持,则无法使用LoadModule指令,第二行指定tomcat与apache的连接,第三行指定部署那个应用,这两个指令使用格式如下:

WebAppConnection [connection name] [provider] [host:port]
WebAppDeploy [application name] [connection name] [url path]  

其中connection name指定连接名,provider只能是warp,port端口与你的tomcat的配置文件server.xml最后几行指定的要保持一致。文件如下:

<Service name="Tomcat-Apache"> 
<Connector className="org.apache.catalina.connector.warp.WarpConnector"
port="8008" minProcessors="5" maxProcessors="75"
enableLookups="true"
acceptCount="10" debug="0"/>
******
</Service> 

application name与你在tomcat中部署的应用名一致,url path指定访问这个应用的url。例如上面的例子可以通过http://localhost/examples/来访问tomcat中的examples应用。

(5):中文问题
一般jsp的乱码问题可以通过在jsp中加入<%@ page contentType="text/html;charset=GB2312" %>来解决,至于servlet的乱码在可以使用servlet2.3中提供的HttpServeletRequest.setCharacterEncoding函数。更详细的中文问题请见JSP/Servlet 中的汉字编码问题

四:综述
tomcat作为一个servlet(jsp也被编译为servlet执行)容器,其应用前景是非常好的,如果与jboss结合起来,则可以实现sun的j2ee规范(用jboss作ejb服务器)。jboss的官方网站也提供集成了tomcat3.2*的jboss以供下载。另外一个开源的应用服务器(enhydra) 也是基于tomcat的,其提供了更友好的管理界面,部署应用程序也更简单,功能也更强大。

posted @ 2006-04-28 10:05 zxf 阅读(270) | 评论 (0)编辑 收藏

web.xml

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

</web-app>

其它的元素都放在<web-app></web-app>之中。

<discription></discription> 是对站台的描述
<display-name></display-name> 定义站台的名称
<distributable/> 是指定该站台是否可分布式处理

<context-param></context-param> 用来设定web站台的环境参数,它包含两个子元素:
    <param-name></param-name> 用来指定参数的名称
    <param-value></param-value> 用来设定参数值

比如:
<context-param>
    <param-name>my_param</param-name>
    <param-value>hello</param-value>
</context-param>

在此设定的参数,可以在servlet中用 getServletContext().getInitParameter("my_param") 来取得

<filter></filter> 是用来声明filter的相关设定,它包含以下子元素:
    <filter-name></filter-name> 这当然就是指定filter的名字
    <filter-class></filter-class> 这是用来定义filter的类的名称
    <init-param></init-param> 用来定义参数,它有两个子元素:
        <param-name></param-name> 用来指定参数的名称
        <param-value></param-value> 用来设定参数值

比如:
<filter>
        <filter-name>setCharacterEncoding</filter-name>
        <filter-class>com.myTest.setCharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>GB2312</param-value>
        </init-param>
</filter>

<filter></filter>同时使用的是<filter-mapping></filter-mapping> 用来定义filter所对应的URL,它有两个子元素:
    <filter-name></filter-name> 指定filter的名字
    <url-pattern></url-pattern> 指定filter所对应的URL

比如:
<filter-mapping>
        <filter-name>setCharacterEncoding</filter-name>
        <url-pattern>/*</url-pattern>
</filter-mapping>


<listener></listener> 用来设定Listener接口,它的主要子元素为
    <listener-class></listener-class> 定义Listener的类名称

比如:
<listener>
   
<listener-class>com.myTest.ContextListener</listener-class>

</listener>

<servlet></servlet> 用来声明一个servlet的数据,主要有以下子元素:
    <servlet-name>
</servlet-name> 指定servlet的名称
    <servlet-class></servlet-class> 指定servlet的类名称
    <jsp-file></jsp-file> 指定web站台中的某个JSP网页的完整路径
    <init-param></init-param> 用来定义参数,和前面的<init-param>差不多

同样,与<servlet></servlet>一起使用的是<servlet-mapping></servlet-mapping> 用来定义servlet所对应的URL,包含两个子元素:
   
<servlet-name></servlet-name> 指定servlet的名称
    <url-pattern></url-pattern> 指定servlet所对应的URL

比如:
<servlet>
        <servlet-name>ShoppingServlet</servlet-name>
        <servlet-class>com.myTest.ShoppingServlet</servlet-class>
</servlet>
   
<servlet-mapping>
        <servlet-name>ShoppingServlet</servlet-name>
        <url-pattern>/shop/ShoppingServlet</url-pattern>
</servlet-mapping>

<session-config></session-config> 用来定义web站台中的session参数,包含一个子元素:
    <session-timeout></session-timeout> 用来定义这个web站台所有session的有效期限,单位为分钟

<mime-mapping></mime-mapping> 定义某一个扩展名和某一个MIME Type做对映,包含两个子元素:
    <extension></extension> 扩展名的名称
    <mime-type></mime-type> MIME格式

比如:
<mime-mapping>
    <extension>doc</extension>
    <mime-type>application/vnd.ms-word</mime-type>

</mime-mapping>
<mime-mapping>
    <extension>xls</extension>
    <mime-type>application/vnd.ms-excel</mime-type>

</mime-mapping>

<welcome-file-list></welcom-file-list> 用来定义首页的列单,包含一个子元素:
    <welcome-file></welcome-file> 指定首页的文件名称

比如:
<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>index.html</welcome-file>

</welcom-file-list>

<error-page></error-page> 用来处理错误代码或异常的页面,有三个子元素:
    <error-code></error-code> 指定错误代码
    <exception-type></exception-type> 指定一个JAVA异常类型
    <location></location> 指定在web站台内的相关资源路径

比如:
<error-page>
    <error-code>404</error-code>
    <location>/error404.jsp</location>

</error-page>
<error-page>
    <exception-type>java.lang.Exception</exception-type>

    <location>/exception.jsp</location>
</error-page>

<taglib></taglib> 用来设定JSP网页所用到的Tag Library路径,有两个子元素:
    <taglib-uri></taglib-uri> 定义TLD文件的URI,在JSP网页中用taglib指令便可取得该URI的TLD文件
    <taglib-location></taglib-location> 指定TLD文件相对于web站台的存放位置

比如:
<taglib>
      <taglib-uri>myTaglib</taglib-uri>
      <taglib-location>/WEB-INF/tlds/MyTaglib.tld</taglib-location>
</taglib>


<resource-ref></resource-ref> 定义利用JNDI取得站台可利用的资源,有五个子元素:
    <description></description> 资源说明
    <rec-ref-name></rec-ref-name> 资源名称
    <res-type></res-type> 资源种类
    <res-auth></res-auth> 资源经由Application或Container来许可
    <res-sharing-scope></res-sharing-scope> 资源是否可以共享,有Shareable和Unshareable两个值,默认为
Shareable

比如,配置数据库连接池就可在此配置:
<resource-ref>
        <description>JNDI JDBC DataSource of shop</description>
        <res-ref-name>jdbc/sample_db</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
</resource-ref>
posted @ 2006-04-27 09:49 zxf 阅读(316) | 评论 (0)编辑 收藏

在mysql数据库中的user表中把host设为空或者远程ip,就可以了,注意要重新启动mysqld

grant all on  数据库名.*  to  用户名@192.168.1.*  identified by '密码'
posted @ 2006-04-24 17:31 zxf 阅读(1313) | 评论 (0)编辑 收藏

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<meta name="Keywords" content="ff" />
<style type="text/css">
<!--
.prln {
 page-break-before: always;
 page-break-after: always;
}
-->
</style>
</head>

<body>
<p>asdfasdfAsd</p>
<p class="prln">s</p>
<p>dfa</p>
<p class="prln">sdfas df  </p>
</body>
</html>

最新版本的代码片段: 1.0

				
<!-- IE5.5以上 -->
<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0></OBJECT>
<input type=button value=打印 onclick=document.all.WebBrowser.ExecWB(6,1)>
<input type=button value=直接打印 onclick=document.all.WebBrowser.ExecWB(6,6)>
<input type=button value=页面设置 onclick=document.all.WebBrowser.ExecWB(8,1)>
<input type=button value=打印预览 onclick=document.all.WebBrowser.ExecWB(7,1)>

<input type=button value=打开 onclick=document.all.WebBrowser.ExecWB(1,1)>
<input type=button value=另存为 onclick=document.all.WebBrowser.ExecWB(4,1)>
<input type=button value=属性 onclick=document.all.WebBrowser.ExecWB(10,1)>
<input type=button value=全选 onclick=document.all.WebBrowser.ExecWB(17,1)>
<input type=button value=刷新 onclick=document.all.WebBrowser.ExecWB(22,1)>
<input type=button value=关闭窗口 onclick=document.all.WebBrowser.ExecWB(45,1)>



<html>
				<head>
		
				<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
		
				<title>看看</title>
		
				<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
		
				<!--media=print 这个属性可以在打印时有效-->
		
				<style media=print>
		
				.Noprint{display:none;}
		
				.PageNext{page-break-after: always;}
		
				</style>
		
				 
		
				<style>
		
				.tdp
		
				{
		
				    border-bottom: 1 solid #ff0000;
		
				    border-left:  1 solid #000000;
		
				    border-right:  0 solid #ffffff;
		
				    border-top: 0 solid #ffffff;
		
				}
		
				.tabp
		
				{
		
				    border-color: #ff0000 #ff0000 #ff0000 #ff0000;
		
				    border-style: solid;
		
				    border-top-width: 2px;
		
				    border-right-width: 2px;
		
				    border-bottom-width: 1px;
		
				    border-left-width: 1px;
		
				}
		
				.NOPRINT {
		
				       font-family: "宋体";
		
				       font-size: 9pt;
		
				}
		
				 
		
				</style>
		
				 
		
				</head>
		
				 
		
				<body >
		
				<center class="Noprint" >
		
				  <p>
		
				  <OBJECT  id=WebBrowser  classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2  height=0  width=0>
		
				  </OBJECT>
		
				  <input  type=button  value=打印          onclick=document.all.WebBrowser.ExecWB(6,1)>
		
				  <input  type=button  value=直接打印  onclick=document.all.WebBrowser.ExecWB(6,6)>
		
				  <input  type=button  value=页面设置  onclick=document.all.WebBrowser.ExecWB(8,1)>
		
				</p>
		
				  <p>    <input  type=button  value=打印预览  onclick=document.all.WebBrowser.ExecWB(7,1)>
		
				    <br/>
		
				    </p>
		
				  <hr align="center" width="90%" size="1" noshade>
		
				</center>
		
				 
		
				<table width="90%" border="0" align="center" cellpadding="2" cellspacing="0"  class="tabp">
		
				       <tr>
		
				              <td colspan="3" class="tdp">第1页</td>
		
				    </tr>
		
				       <tr>
		
				         <td width="29%" class="tdp"> </td>
		
				         <td width="28%" class="tdp"> </td>
		
				      <td width="43%" class="tdp"> </td>
		
				  </tr>
		
				       <tr>
		
				         <td colspan="3" class="tdp"> </td>
		
				  </tr>
		
				       <tr>
		
				         <td colspan="3" class="tdp"><table width="100%"  border="0" cellspacing="0" cellpadding="0">
		
				        <tr>
		
				          <td width="50%" class="tdp"><p>这样的报表</p>
		
				          <p>对一般的要求就够了。</p></td>
		
				          <td> </td>
		
				        </tr>
		
				      </table></td>
		
				  </tr>
		
				</table>
		
				<hr align="center" width="90%" size="1" noshade class="NOPRINT" >
		
				<!--分页-->
		
				<div class="PageNext"></div>
		
				<table width="90%" border="0" align="center" cellpadding="2" cellspacing="0"  class="tabp">
		
				  <tr>
		
				    <td class="tdp">第2页</td>
		
				  </tr>
		
				  <tr>
		
				    <td class="tdp">看到分页了吧</td>
		
				  </tr>
		
				  <tr>
		
				    <td class="tdp"> </td>
		
				  </tr>
		
				  <tr>
		
				    <td class="tdp"> </td>
		
				  </tr>
		
				  <tr>
		
				    <td class="tdp"><table width="100%"  border="0" cellspacing="0" cellpadding="0">
		
				        <tr>
		
				          <td width="50%" class="tdp"><p>这样的报表</p>
		
				              <p>对一般的要求就够了。</p></td>
		
				          <td> </td>
		
				        </tr>
		
				    </table></td>
		
				  </tr>
		
				</table>
		
				</body>
		
				</html>

posted @ 2006-04-24 16:29 zxf 阅读(6088) | 评论 (1)编辑 收藏

        &

  &命令可用在其他任何命令的后面,它用来通知计算机在后台运行某一命令。通过把作业放在后台,用户可以继续使用当前的shell来处理其他命令;如果命令在前台运行的话,那么用户在此进程结束前不能继续使用当前的shell。 

  adduser

  adduser命令由root或其他具有权限的管理员用来创建新用户,跟在adduser命令后面的是所要创建的帐号名,例如:adduser flying

  alias

  alias命令用来设置命令的别名或替代名。一般说来别名往往是实际命令名的缩写。例如用户为ls设置一个别名dir:

  alias dir=ls

  若仅输入alias本身时,系统将显示当前所有的别名。

  bg

  bg命令用来迫使被挂起的进程在后台运行。例如,当你已经在前台启动了一个命令时(没有在此命令后使用&),你才想到这一命令将运行较长一段时间,但你这时还需使用shell。在这种情况下,可通过ctrl+z挂起当前运行的进程。此时你既可以使它长期挂起,也可以通过输入bg把这一进程放到后台运行。这样shell就可以用来执行其他的命令了。

  cat

  cat通常是用来在屏幕上滚动显示文件的内容。它的格式是:

  cat〈filename〉

  cd

  cd用来改变目录。这一命令非常有用,它有三种典型的使用方法。

  cd   移到目录树的上一层

  cd~  移动到用户的主目录,与单独使用cd相同

  cd directory name改变到指定的目录

  cp

  cp用来拷贝对象。例如要把file1拷贝到file2,用如下命令:

  cp file1 file2

  dd

  dd命令用来转换文件格式。

  fg

  fg命令用来激活某个被挂起的进程并使它在前台运行。当有一个进程正在运行时,由于某种原因需要挂起它,在执行完其他任务后,需要重新把这一进程调到前台运行,这时便可用bg命令使这一进程继续运行。

  find

  find命令用来查找指定目录的文件。当找到后将按照用户的要求对文件进行处理。语法是:

  find以它为起点进行搜索的目录想要查找的文件名或元字符对文件执行的操作

  grep

  grep命令用来在指定的对象中搜索指定的文本。语法是:grep〈text〉〈file〉。它还可以和其他命令的结果联合使用,例如:

  ps -ef|grep-v root

  这一命令要求grep接受ps命令的输出,并除去所有包含单词root的进程(-v的含义是显示与文本不匹配的内容)。在不使用-v选项时,这一命令将显示进程清单中所有包含单词root的进程。

  halt

  halt命令用来通知内核关闭系统,它是一个只能由超级用户执行的命令。

  hostname

  既可以用来显示系统当前的主机名或域名,也可用来设置系统的主机名。

  login

  当向系统注册时,将使用login。login命令也可用来随时从这一用户改变到另一用户。  

  logout

  logout命令用来使当前用户从系统中注销。如果这是你使用的注册到系统的唯一用户,那么将退出系统。

  ls

  ls命令用来列出目录的内容,它的输出格式可通过选项来控制。没有任何选项的ls命令将按照字母顺序列出所有非隐藏文件,显示的列数以正好适合窗口的大小为准。最常用的一组选项是-la。这里a表示要列出所有的文件;l表示以长格式列出,它使输出结果成为一个详细的长列表。  

  more

  more是一个过滤程序,它可以每次一屏地翻阅文本文件的内容。这一命令只能对文件向下进行翻页。

  mount

  mount命令用来把特殊文件(通常是设备名)指定的文件系统安装在作为一个参数被指定的目录上。只有超级用户能够安装文件。如果在运行mount命令时不使用任何参数,它将列出当前被安装的所有文件系统。  

  mv

  mv命令用来把某个对象从这一位置移动到另一位置。如果最后一个变量指定的是一个现有的目录,那么这一命令将把命令行中指定的所有文件移到这一目录中;如果给出的是两个文件,mv将把第一个文件移到第二个文件中。只有当最后一个变量是一个目录时,mv命令的变量才可以超过两个。 

  ps

  ps用来报告进程的状态,它将显示一张当前进程的快照。  

  rm

  rm用来删除指定的文件。利用-r选项,rm将递归地删除文件(warning:危险)。rm可与find命令联合使用,查找某一文件并删除它。在缺省的情况下,rm命令不能删除目录。

  rmdir

  rmdir用来删除指定的空目录。语法是:

  rm〈directory name〉

  umount

  umount命令用来卸载文件。语法是:

  umount〈filename〉

  unalias

  unalias用来取消别名。如前面曾把dir设置为ls命令的别名,要取消它只须输入unalias dir即可。

  unzip

  unzip用来列出、检测或从某个zip文档中抽取文件,它的缺省用法是从文档中抽取文件。其基本语法是:

  unzip〈filename〉

  who

  who命令用来显示当前注册到系统的每个用户的注册名、终端类型、注册时间和远程主机名。

  如果有两个非选项的参数传递给who命令,那么它将打印出正在运行此命令的用户的信息。

  如果想要查看某一对话所持续的时间,可利用-u选项。

  xset

  xset命令用来设置X Window环境中的一些选项,可利用它来设置响铃(xser b〈volume〉〈frequency〉〈duration in milliseconds〉)、鼠标速度(xset m〈acceleration〉〈threshold〉),以及其它参数。

  zip

  zip命令用来列出、检测或向某个zip文档中添加文件,它的缺省用法就是向某个文档中添加文件。
posted @ 2006-04-24 14:30 zxf 阅读(436) | 评论 (0)编辑 收藏

String realpath = request.getRealPath("/");
String realpath = this.servlet.getServletContext().getRealPath("/");
posted @ 2006-04-20 09:40 zxf 阅读(555) | 评论 (0)编辑 收藏

仅列出标题
共4页: 上一页 1 2 3 4 下一页