??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲mv大片欧洲mv大片,国产精品国产亚洲精品,国产一区二区三区免费http://www.aygfsteel.com/HappyJava/q福人生(J2EE)zh-cnFri, 20 Jun 2025 17:38:06 GMTFri, 20 Jun 2025 17:38:06 GMT60Struts2利用stream直接输出Excelhttp://www.aygfsteel.com/HappyJava/articles/229873.html李徏?/dc:creator>李徏?/author>Fri, 19 Sep 2008 01:57:00 GMThttp://www.aygfsteel.com/HappyJava/articles/229873.htmlhttp://www.aygfsteel.com/HappyJava/comments/229873.htmlhttp://www.aygfsteel.com/HappyJava/articles/229873.html#Feedback0http://www.aygfsteel.com/HappyJava/comments/commentRss/229873.htmlhttp://www.aygfsteel.com/HappyJava/services/trackbacks/229873.html 一、struts.xml
<? xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
  
<struts>

    <constant name="struts.i18n.encoding" value="UTF-8"/>

    <package name="demo" extends="struts-default">
        <action name="excel" method="execute" class="demo.ExcelAction">
                <result name="excel" type="stream">
                    <param name="contentType">application/vnd.ms-excel</param>    <!-- 注意q里的ContentType -->
                    <param name="inputName">excelStream</param>                   <!-- q里需要和Action里的变量名一?-->
                    <param name="contentDisposition">filename="standard.xls"</param>
                    <param name="bufferSize">1024</param>
                </result>
        </action>
    </package>
</struts>

二、Struts2?Action

package demo;
public class ExcelAction {
    private InputStream excelStream; // 需要生成getter和setter

    public String execute() throws Exception {
        StringBuffer excelBuf = new StringBuffer();
        excelBuf.append("BookName").append("\t").append("Year").append("\t").append("author").append("\n");
        excelBuf.append("Thinking in Java").append("\t").append("2001").append("\t").append("Eckel").append("\n");
        excelBuf.append("Spring in action").append("\t").append("2005").append("\t").append("Rod").append("\n");
        String excelString = excelBuf.toString();
        logger.debug("result excel String: " + excelString);
        excelStream = new ByteArrayInputStream(excelString.getBytes(), 0, excelString.length());
        return "excel";
    }

    // getter and setter
    ...
}

三、Jsp面

<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <s:head />
 </head>

 <body>

    <s:form action="" method="post">
       <s:submit key="button.submit"/>
    </s:form>
 </body>
</html>



]]>
jsp中对目录的操?/title><link>http://www.aygfsteel.com/HappyJava/articles/229867.html</link><dc:creator>李徏?/dc:creator><author>李徏?/author><pubDate>Fri, 19 Sep 2008 01:49:00 GMT</pubDate><guid>http://www.aygfsteel.com/HappyJava/articles/229867.html</guid><wfw:comment>http://www.aygfsteel.com/HappyJava/comments/229867.html</wfw:comment><comments>http://www.aygfsteel.com/HappyJava/articles/229867.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/HappyJava/comments/commentRss/229867.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/HappyJava/services/trackbacks/229867.html</trackback:ping><description><![CDATA[<p><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><br /> <%@ page import="java.io.*" %><br /> <%<br />  String path = request.getContextPath();<br />  String basePath = request.getScheme() + "://"<br />    + request.getServerName() + ":" + request.getServerPort()<br />    + path + "/";<br /> %></p> <p><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><br /> <html><br />   <head><br />     <base href="<%=basePath%>"><br />     <br />     <title>My JSP 'createD.jsp' starting page</title><br />     <br />  <meta http-equiv="pragma" content="no-cache"><br />  <meta http-equiv="cache-control" content="no-cache"><br />  <meta http-equiv="expires" content="0">    <br />  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><br />  <meta http-equiv="description" content="This is my page"><br />  <!--<br />  <link rel="stylesheet" type="text/css" href="styles.css"><br />  --></p> <p>  </head><br />   <br />   <body><br />   <%<br />    String pathStr = request.getRealPath("/upload");<br />    pathStr = pathStr + "\\Sub";//要建立的目录\?<br />    out.println(pathStr);<br />    //建立代表Sub目录的File对象Qƈ得到它的一个引?<br />    File d = new File(pathStr);<br />    if (d.exists()) {//查Sub目录是否存在 <br />     d.delete();<br />     out.println("Sub目录存在Q已删除");<br />    } else {<br />     d.mkdir();//建立Sub目录 <br />     out.println("Sub目录不存在,已徏?);<br />    }<br />   %></p> <p> </body><br /> </html><br /> </p> <img src ="http://www.aygfsteel.com/HappyJava/aggbug/229867.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/HappyJava/" target="_blank">李徏?/a> 2008-09-19 09:49 <a href="http://www.aygfsteel.com/HappyJava/articles/229867.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jsp 中对文g的操?/title><link>http://www.aygfsteel.com/HappyJava/articles/229865.html</link><dc:creator>李徏?/dc:creator><author>李徏?/author><pubDate>Fri, 19 Sep 2008 01:47:00 GMT</pubDate><guid>http://www.aygfsteel.com/HappyJava/articles/229865.html</guid><wfw:comment>http://www.aygfsteel.com/HappyJava/comments/229865.html</wfw:comment><comments>http://www.aygfsteel.com/HappyJava/articles/229865.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/HappyJava/comments/commentRss/229865.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/HappyJava/services/trackbacks/229865.html</trackback:ping><description><![CDATA[首先取得当前的磁盘\径,指定要徏立的文g的\径,再进行检查,假如文g不存在,则徏立这个文Ӟ假如文g存在Q则删除q个文g?br />   <br />   CreateDelete.jsp<br />   <br />   <%@ page contentType="text/Html; charset=GB2312"%><br />   <%@ page import="Java.io.*" %><br />   <%@ page language="java" %><br />   <HTML><br />   <HEAD><br />   <TITLE>文g的徏立与删除</TITLE><br />   </HEAD><br />   <BODY><br />   <CENTER><br />   <FONT SIZE = 5 COLOR = blue>文g的徏立与删除</FONT><br />   </CENTER><br />   <BR><br />   <HR><br />   <BR><br />   <%<br />   //建立代表目前目录位置中File.txt档的File变量, q由fileName变量变数引用<br />   String path = request.getRealPath("/jsphosting/wenjian");<br />   File fileName = new File(path, "File.txt");<br />   //查File.txt是否存在<br />   if(fileName.exists())<br />   {<br />   //删除File.txt?br />   fileName.delete();<br />   //输出目前所在的目录路径<br />   out.println(path + "\File.txt");<br />   %><br />   <FONT SIZE = 4 COLOR = red>存在</FONT>, 已完?br />   <FONT SIZE = 4 COLOR = red>删除</FONT><br />   <%<br />   }<br />   else<br />   {<br />   //在目前的目录下徏立一个名为File.txt的文字档<br />   fileName.createNewFile();<br />   //输出目前所在的目录路径<br />   out.println(path + "\File.txt");<br />   %><br />   <FONT SIZE = 4 COLOR = red>不存?lt;/FONT>, 已完?br />   <FONT SIZE = 4 COLOR = red>建立</FONT><br />   <%<br />   }<br />   %><br />   </BODY><br />   </HTML><br />   <br />   昄目录中的文g<br />   <br />   首先建立要显C的目录的FILE对象Q然后调用LISTFILESҎQ该Ҏq回一个FILE对象数组Q显C数l中的所有元素即可?br />   <br />   ListFile.jsp<br />   <br />   <%@ page contentType="text/html; charset=GB2312"%><br />   <%@ page language="java" %><br />   <%@ page import="java.io.*" %><br />   <HTML><br />   <HEAD><br />   <TITLE>取得目录中的文g</TITLE><br />   </HEAD><br />   <BODY><br />   <CENTER><br />   <FONT SIZE = 5 COLOR = blue>取得目录中的文g</FONT><br />   </CENTER><br />   <BR><br />   <HR><br />   <BR><br />   <%<br />   //取得目前目录的磁盘目?br />   String path = request.getRealPath("/jsphosting/wenjian");<br />   //建立代表目前目录位置的d变量<br />   File d = new File(path);<br />   //取得代表目录中所有文?br />   File list[] = d.listFiles();<br />   %><br />   ?lt;Font color = red><%= path%></Font>目录下的文g有(每个文g有其相应的功能)<BR><br />   <Font color = blue><br />   <ul><br />   <%<br />   for(int i=0; i < list.length; i++)<br />   {<br />   %><br />   <li><%= list[i].getName() %><BR><br />   <%<br />   }<br />   %><br />   </ul><br />   </Font><br />   </BODY><br />   </HTML><br />   <br />   d文g中的字符<br />   <br />   直接调用FILEREADER对象的READQ)Ҏd所要显C的字符<br />   <br />   ReadAll.jsp<br />   <br />   <%@ page contentType="text/html; charset=GB2312" %><br />   <%@ page language="java" %><br />   <%@ page import="java.io.*" %><br />   <HTML><br />   <HEAD><br />   <TITLE>d文g内容</TITLE><br />   </HEAD><br />   <BODY><br />   <CENTER><br />   <FONT SIZE = 5 COLOR = blue>d文g内容</FONT><br />   </CENTER><br />   <BR><br />   <HR><br />   <BR><br />   <%<br />   String path = request.getRealPath("/jsphosting/wenjian");<br />   //取得目前目录在伺服端的实际位|?br />   FileReader fr = new FileReader(path + "\File.txt");<br />   //建立FileReader变量,q设定由fr变量变数引用<br />   int c = fr.read();<br />   //从文件中d一个字?br />   while(c != -1)<br />   //判定是否已读到文件的l尾<br />   {<br />   out.print((char)c);<br />   //输出d到的数据<br />   c = fr.read();<br />   //从文件中d数据<br />   if(c == 13)<br />   //判定是否为断行字?br />   {<br />   out.print("<BR>");<br />   //输出分行标签<br />   fr.skip(1);<br />   //略过一个字?br />   c = fr.read();<br />   //d一个字?br />   }<br />   }<br />   //关闭文g<br />   fr.close();<br />   %><br />   </BODY><br />   </HTML><br />   <br />   数据写入文?br />   <br />   通过调用FILEWRITER对象的WRITEQ)Ҏ向文件中写入数据<br />   <br />   Write.jsp<br />   <br />   <%@ page contentType="text/html; charset=GB2312"%><br />   <%@ page language="java" %><br />   <%@ page import="java.io.*" %><br />   <HTML><br />   <HEAD><br />   <TITLE>数据写入文?lt;/TITLE><br />   </HEAD><br />   <BODY><br />   <CENTER><br />   <FONT SIZE = 5 COLOR = blue>数据写入文?lt;/FONT><br />   </CENTER><br />   <BR><br />   <HR><br />   <BR><br />   <%<br />   String path = request.getRealPath("/jsphosting/wenjian");<br />   //取得目前目录在伺服端的实际位|?br />   FileWriter fw = new FileWriter(path + "\File.txt");<br />   //建立FileWrite对象,q设定由fw对象变量引用<br />   //字串写入文?br />   fw.write("大家?");<br />   fw.write("大家学习jsp愉快Q?);<br />   fw.write("希望大家能够深入了解jsp技术!");<br />   fw.close();<br />   //关闭文g<br />   %><br />   <P>写入文g内容?lt;/P><br />   <FONT SIZE = 4 COLOR = red><br />   <%<br />   FileReader fr = new FileReader(path + "\File.txt");<br />   //建立FileReader对象,q设定由fr对象变量引用<br />   BufferedReader br = new BufferedReader(fr);<br />   //建立BufferedReader对象,q设定由br对象变量引用<br />   String Line = br.readLine();<br />   //d一行数?br />   out.println(Line + "<BR>");<br />   //输出d得的数据<br />   br.close();<br />   //关闭BufferedReader对象<br />   fr.close();<br />   //关闭文g<br />   %><br />   </FONT><br />   </BODY><br />   </HTML><br /> 资料引用:http://www.knowsky.com/367146.html <img src ="http://www.aygfsteel.com/HappyJava/aggbug/229865.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/HappyJava/" target="_blank">李徏?/a> 2008-09-19 09:47 <a href="http://www.aygfsteel.com/HappyJava/articles/229865.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关闭myeclipse的Quick Update自动更新功能 http://www.aygfsteel.com/HappyJava/articles/226856.html李徏?/dc:creator>李徏?/author>Thu, 04 Sep 2008 02:26:00 GMThttp://www.aygfsteel.com/HappyJava/articles/226856.htmlhttp://www.aygfsteel.com/HappyJava/comments/226856.htmlhttp://www.aygfsteel.com/HappyJava/articles/226856.html#Feedback0http://www.aygfsteel.com/HappyJava/comments/commentRss/226856.htmlhttp://www.aygfsteel.com/HappyJava/services/trackbacks/226856.htmlWindows > Preferences > MyEclipse > Community Essentials,
把选项 "Search for new features on startup"的前勑֎掉即?

]]>
MyEclipse开发JSP面假死问题解决办法 http://www.aygfsteel.com/HappyJava/articles/226855.html李徏?/dc:creator>李徏?/author>Thu, 04 Sep 2008 02:25:00 GMThttp://www.aygfsteel.com/HappyJava/articles/226855.htmlhttp://www.aygfsteel.com/HappyJava/comments/226855.htmlhttp://www.aygfsteel.com/HappyJava/articles/226855.html#Feedback0http://www.aygfsteel.com/HappyJava/comments/commentRss/226855.htmlhttp://www.aygfsteel.com/HappyJava/services/trackbacks/226855.htmlEclipse3.2安装完MyEclipse 在开发jspӞ只要一?#8220;.”号弹出提C后MyEclipse死了,没有响应Q最后只能整个关掉,重启一下。问题还是存在?br />
解决办法Q?/span>
拔了|线好?具体什么原因正在查?

要想q接|线可以使用q有一个办法就是修改一个打开的方?br />
具体操作Q?br />
在eclipse里选中jsp文gQ右键,打开方式Q?gt;会显C有MyEclipse JSP Editor  选择q项卛_Q如果选择 MyEclipse Visual JSP Designer q项׃有前面说的问题了?

关闭myeclipse的Quick Update自动更新功能

Windows > Preferences > MyEclipse > Community Essentials,
把选项 "Search for new features on startup"的前勑֎掉即?


]]>
实现Eclipse自动提示功能http://www.aygfsteel.com/HappyJava/articles/226849.html李徏?/dc:creator>李徏?/author>Thu, 04 Sep 2008 02:05:00 GMThttp://www.aygfsteel.com/HappyJava/articles/226849.htmlhttp://www.aygfsteel.com/HappyJava/comments/226849.htmlhttp://www.aygfsteel.com/HappyJava/articles/226849.html#Feedback0http://www.aygfsteel.com/HappyJava/comments/commentRss/226849.htmlhttp://www.aygfsteel.com/HappyJava/services/trackbacks/226849.html 
 

Eclipse中默认是输入"."后出现自动提C,用于cL员的自动提示Q可是有时候我们希望它能在我们输入cȝ首字母后出现自动提C,可以节省大量的输入时_虽然按alt + /会出现提C,但还是要多按一ơ按键,太麻烦了Q?/font>

    从Window -> preferences -> Java -> Editor -> Content assist -> Auto-Activation下,我们可以?."号后面加入我们需要自动提C的首字q,比如"ahiz"?/font>

    然后我们回到Eclipse的开发环境,输入"a"Q提C就出现了?/font>

但是我们可以发现Q这个Auto-Activation下的输入框里最多只能输?个字母,也许是Eclipse的开发h员担心我们输入的太多会媄响性能Q但计算机的性能不用白不用,所以我们要打破q个限制?/font>

其实上面都是铺垫Q制造一下气氛,以显得我们下面要做的事情很牛似的Q其实不Ӟ一切都很简单。嘿?:)

?."后面随便输入几个字符Q比?abij"Q然后回到开发环境,File -> export -> general -> preferences -> 选一个地方保存你的首选项Q比如C:\a.epf

用Q何文本编辑器打开a.epfQ查扑֭W串“abij”Q找C后,替换?#8220;abcdefghijklmnopqrstuvwxyz”QM是你想怎样怎样Q!然后回到EclipseQFile -> import -> general -> preferences -> 导入刚才的a.epf文g。此时你会发现输入Q何字q都可以得到自动提示了。爽Q!Q?/font>

最后:自动提示弹出的时间最好改?00毫秒以下Q这样会比较爽一点,不然你都完事了,自动提示才弹出来:)Q不q也要看机器性能?/font>



]]>
eclipse.ini说明http://www.aygfsteel.com/HappyJava/articles/226379.html李徏?/dc:creator>李徏?/author>Tue, 02 Sep 2008 06:41:00 GMThttp://www.aygfsteel.com/HappyJava/articles/226379.htmlhttp://www.aygfsteel.com/HappyJava/comments/226379.htmlhttp://www.aygfsteel.com/HappyJava/articles/226379.html#Feedback0http://www.aygfsteel.com/HappyJava/comments/commentRss/226379.htmlhttp://www.aygfsteel.com/HappyJava/services/trackbacks/226379.html 
-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M
q里有几个问题:
1. 各个参数的含义什么?
2. Z么有的机器我?Xmx?XX:MaxPermSize都设|ؓ512M之后Eclipse可以启动Q而有些机器无法启动?
3. Z上面的参数写入到eclipse.ini文gEclipse没有执行对应的设|?

下面我们一一q行回答

1. 各个参数的含义什么?

参数?vmargs的意思是讄JVM参数Q所以后面的其实都是JVM的参CQ我们首先了解一下JVM内存理的机Ӟ然后再解释每个参C表的含义?br />
?Heap)和非?Non-heap)内存
?照官方的说法Q?#8220;Java 虚拟机具有一个堆Q堆是运行时数据区域Q所有类实例和数l的内存均从此处分配。堆是在 Java 虚拟机启动时创徏的?#8221;“在JVM中堆之外的内存称为非堆内?Non-heap memory)”。可以看出JVM主要理两种cd的内存:堆和非堆。简单来说堆是Java代码可及的内存,是留l开发h员用的Q非堆就是JVM留给 自己用的Q所以方法区、JVM内部处理或优化所需的内?如JIT~译后的代码~存)、每个类l构(如运行时常数池、字D和Ҏ数据)以及Ҏ和构造方?的代码都在非堆内存中?
堆内存分?br /> JVM初始分配的内存由-Xms指定Q默认是物理内存?/64QJVM最大分配的内存?Xmx 指定Q默认是物理内存?/4。默认空余堆内存于40%ӞJVM׃增大堆直?Xmx的最大限ӞIZ堆内存大?0%ӞJVM会减堆直到- Xms的最限制。因此服务器一般设|?Xms?Xmx相等以避免在每次GC 后调整堆的大?
非堆内存分配
JVM使用-XX:PermSize讄非堆内存初始|默认是物理内存的1/64Q由XX:MaxPermSize讄最大非堆内存的大小Q默认是物理内存?/4?
JVM内存限制(最大?
?先JVM内存限制于实际的最大物理内?废话Q呵?Q假讄理内存无限大的话QJVM内存的最大D操作pȝ有很大的关系。简单的说就32位处理器虽然 可控内存I间?GB,但是具体的操作系l会l一个限Ӟq个限制一般是2GB-3GBQ一般来说Windowspȝ下ؓ1.5G-2GQLinuxpȝ 下ؓ2G-3GQ,?4bit以上的处理器׃会有限制了?
2. Z么有的机器我?Xmx?XX:MaxPermSize都设|ؓ512M之后Eclipse可以启动Q而有些机器无法启动?

通过上面对JVM内存理的介l我们已l了解到JVM内存包含两种Q堆内存和非堆内存,另外JVM最大内存首先取决于实际的物理内存和操作pȝ。所以说讄VM参数DE序无法启动主要有以下几U原因:

1) 参数?Xms的值大?XmxQ或?XX:PermSize的值大?XX:MaxPermSizeQ?br />
2) -Xmx的值和-XX:MaxPermSize的d过了JVM内存的最大限Ӟ比如当前操作pȝ最大内存限Ӟ或者实际的物理内存{等。说到实际物?内存q里需要说明一点的是,如果你的内存?024MBQ但实际pȝ中用到的q不可能?024MBQ因为有一部分被硬件占用了?

3. Z上面的参数写入到eclipse.ini文gEclipse没有执行对应的设|?

那ؓ什么同L参数在快h式或者命令行中有效而在eclipse.ini文g中是无效的呢Q这是因为我们没有遵守eclipse.ini文g的设|规则:

参数形如“??#8221;q种形式Q中间有I格的需要换行书写,如果g有空格的需要用双引号包括v来。比如我们?vm C:\Java\jre1.6.0\bin\javaw.exe参数讄虚拟机,在eclipse.ini文g中要写成q样Q?br />
-vm
C:\Java\jre1.6.0\bin\javaw.exe
按照上面所说的Q最后参数在eclipse.ini中可以写成这个样子:

-vmargs
-Xms128M
-Xmx512M
-XX:PermSize=64M
-XX:MaxPermSize=128M
实际q行的结果可以通过Eclipse?#8220;Help”-“About Eclipse SDK”H口里面?#8220;Configuration Details”按钮q行查看?br />
另外需要说明的是,Eclipse压羃包中自带的eclipse.ini文g内容是这LQ?br />
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Xms40m
-Xmx256m
??#8211;launcher.XXMaxPermSizeQ注意最前面是两个连接线Q跟-XX:MaxPermSize参数的含义基本是一LQ我觉得唯一的区 别就是前者是eclipse.exe启动的时候设|的参数Q而后者是eclipse所使用的JVM中的参数。其实二者设|一个就可以了,所以这里可以把 –launcher.XXMaxPermSize和下一行?注释掉?

3. 其他的启动参数?如果你有一个双核的CPUQ也许可以尝试这个参?



]]>eclipse代码提示功能的设|?/title><link>http://www.aygfsteel.com/HappyJava/articles/226367.html</link><dc:creator>李徏?/dc:creator><author>李徏?/author><pubDate>Tue, 02 Sep 2008 06:20:00 GMT</pubDate><guid>http://www.aygfsteel.com/HappyJava/articles/226367.html</guid><wfw:comment>http://www.aygfsteel.com/HappyJava/comments/226367.html</wfw:comment><comments>http://www.aygfsteel.com/HappyJava/articles/226367.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/HappyJava/comments/commentRss/226367.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/HappyJava/services/trackbacks/226367.html</trackback:ping><description><![CDATA[<div class="wmqeeuq" id="art" style="margin: 15px" width="560">刚才安装了swt DesignerQ发现提C公能没有了?br /> 解决ҎQ?br /> <p>windowsQ?gt;preferences->java->Editor->Code   Assist   ?/p> <p>autoQactivetion中的Enable auto-activetion选项要勾选上</p> <p>q里面有个时间的讑֮是ؓ提示代码讑֮的显C时间。你可以Ҏ自己的情况设定?/p> 但都不能自动提示Q查了查以前eclipse 的设|才扑ֈQwindow->Preferences->Java->Editor->Content Assist->Advanced   上面的选项卡Select the proposal kinds contained in the 'default' content assist list: 中把 <span style="color: rgb(255,1,2)">Other Java Proposals 选项打上勑ְ可以了?/span> <p>另注Q?/p> <p>有些情况在eclipse中安装插件时代码自动功能失效Q同样可以用以上方式修改回来?/p> </div> <img src ="http://www.aygfsteel.com/HappyJava/aggbug/226367.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/HappyJava/" target="_blank">李徏?/a> 2008-09-02 14:20 <a href="http://www.aygfsteel.com/HappyJava/articles/226367.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java调用.dll文ghttp://www.aygfsteel.com/HappyJava/articles/219839.html李徏?/dc:creator>李徏?/author>Mon, 04 Aug 2008 02:47:00 GMThttp://www.aygfsteel.com/HappyJava/articles/219839.htmlhttp://www.aygfsteel.com/HappyJava/comments/219839.htmlhttp://www.aygfsteel.com/HappyJava/articles/219839.html#Feedback0http://www.aygfsteel.com/HappyJava/comments/commentRss/219839.htmlhttp://www.aygfsteel.com/HappyJava/services/trackbacks/219839.html.在程序用jnative调用window?/span>dll

1.   安装

http://sourceforge.net/projects/jnative

解压后得?/span>3个文ӞJNativeCpp.dllQ?/span>libJNativeCpp.soQ?/span>JNative.jarQ其中:

JNativeCpp.dll     攑֜windows/system32目录?/span>

libJNativeCpp.so    linux下?/span>

JNative.jar          导入工程?/span>

2.   使用

2.1.     加蝲dll文g

JNative可用两U方式加?/span>dll文gQ?/span>

a.使用System.loadLibrary加蝲,使用此方法可加蝲pȝ目录中的dll文g?/span>

b.可以先把dll文g复制?/span>system32目录下,使用文g前缀名作为参数来加蝲dll文g。?/span>System.load加蝲,此方法参Cؓdll文g全\径名?/span>

2.2.     调用函数

a、首先创?/span>JNative对象Q?/span>

JNative jnative = new JNative(dll文g?/span>, 函数?/span>);

b、设|返回值类型:

jnative.setRetVal(Type.INT);

c、设|参?/span>

jnative.setParameter(0, Type.STRING, ); //讄W一个参Cؓ字符?/span>

jnative.setParameter(1, Type.INT, String.valueof());       //讄W二个参Cؓ整数

d、执?/span>

n.invoke();

e、获取返回?/span>

Integer.parseInt(jnative.getRetVal());

3.实例

import org.xvolks.jnative.JNative;

import org.xvolks.jnative.Type;

import org.xvolks.jnative.exceptions.NativeException;

import org.xvolks.jnative.pointers.Pointer;

import org.xvolks.jnative.pointers.memory.HeapMemoryBlock;

public class Test {

       public static void main(String[] args) throws NativeException, IllegalAccessException {

       JNative v=new JNative("Kernel32.dll","GetModuleFileNameA");

        int i = 0;

        v.setRetVal(Type.INT);

        Pointer pName = new Pointer(new HeapMemoryBlock(1024));

       

        v.setParameter(i++, 0);//module handle

        v.setParameter(i++, pName);//pFileName

        v.setParameter(i++, 1024);//nSize

        v.setRetVal(Type.INT);

        v.invoke();

        int ret = Integer.parseInt(v.getRetVal());

        if (ret == 0) {

            // return "null";

            System.err.println(

                    "GetModuleFileName failed!");

        } else {

           

            String path = pName.getAsString().substring(0,

                    ret);

            pName.dispose();

            v.dispose();

            System.out.println("current process's path is:"+path);

        }

    }

 

}

 

 

4.注意:

?/span>JNative中用?/span>JDK1.5的一些特性,如枚举、静态引入等Q所以在JDK1.4下是不能用的?/span>

?/span>.在程序用jawin调用window?/span>dll

jawin 可以?/span>dll中的Ҏq行调用Q也可以调用com中的Ҏ.内部q提供了一个工P直接?/span> comlg导出?/span> java的类Q个为很方便?/span>

下面是我们作的一个测试,很顺利便通过了?/span>

1、下?/span>jawinQ?/span>http://jawinproject.sourceforge.net/?/span>

2、配|:

    a.?/span>jawin.jar放于%JAVA_HOME%"jre"lib"ext?/span>?/span>

    b.?/span>jawin.dll放于c:"winnt"system32下。否则将出现错误Q?/span>COMException : no jawin in java.library.pathQ?/span>

    也可?/span>jawin.dll放于每个目目录下?/span>

 

   c.x?/span>Editplus中调?/span>Jawin/NJawin的例子,可以通过?/span>而在Eclipse中有时还会出上面的错误:COMException : no jawin in java.library.path?/span>

   d.?/span>Eclipse中,菜单->window->preference->Java->installed JREs 原来的remove,重新Z个指C?/span>java sdk目录?/span> ok了?/span>

 3、程序测试:

 

import org.jawin.FuncPtr;

 

import org.jawin.ReturnFlags;

 

public class GfJawinTest {

 

       public static void main(String[] args) {

 

              try {

 

                     FuncPtr msgBox = new FuncPtr("USER32.DLL", "MessageBoxW");

                     msgBox.invoke_I(0, "Hello From a DLL", "From Jawin", 0, ReturnFlags.CHECK_NONE);

              } catch (Exception e) {

 

                     e.printStackTrace();

 

              }

 

       }

 

}

 

 

4.利用jawin调用comlg, ?/span>word:

//创徏word

import org.jawin.DispatchPtr;

import org.jawin.win32.Ole32;

public class CreateWord {

 

       public static void main(String[] args) {

              try {

                     Ole32.CoInitialize();//                   初始?/span>

                     DispatchPtr app = new DispatchPtr("Word.Application");//               创徏word对象

                     app.put("Visible",true); //                     ?/span>word可见

                     DispatchPtr docs=(DispatchPtr)app.get("Documents"); //                 获得document对象集合

                     DispatchPtr doc=(DispatchPtr)docs.invoke("Add"); //                    新增一个文?/span>

                     app.invoke("Activate"); //                    Ȁzd前文?/span>

                    

                     DispatchPtr objTextFont=(DispatchPtr)((DispatchPtr)doc.get("Content")).get("Font");

//                   取得Font对象

                     objTextFont.put("Name","黑体");

//                   讄字体

                     objTextFont.put("Size","48");

//                   讄字号

                     DispatchPtr docSelection=(DispatchPtr)app.get("Selection");

//                   取得Selection对象

                     docSelection.invoke("TypeText","Jawwintesttext!"nJawin试文本?/span>");

//                   使用TypeTextҎd文本

                     doc.invoke("SaveAs","d:""jawintest.doc");

//                   保存文档(保存?/span>C盘根目录?/span>)

                     doc.invoke("Close");

//                   关闭当前文档Q去掉前面的注释Wƈ重新~译后可生效

                     app.invoke("Quit");

//                   退?/span>WordQ去掉前面的注释Wƈ重新~译后可生效

 

                    

                     Ole32.CoUninitialize(); //                     释放对象

              } catch (Exception e) {

                     e.printStackTrace();

              }

       }

 

}

 

//打开word

import org.jawin.DispatchPtr;

import org.jawin.win32.Ole32;

 

public class OpenWord {

       public static void main(String[] args) {

              try {

                     Ole32.CoInitialize();

                     DispatchPtr app = new DispatchPtr("Word.Application");

                     app.put("Visible", true);

                     DispatchPtr docs = (DispatchPtr) app.get("Documents");

                     DispatchPtr doc = (DispatchPtr) docs.invoke("Open", "d:""word.doc");

                     Ole32.CoUninitialize();

              } catch (Exception e) {

                     e.printStackTrace();

              }

       }

}

 

//调用word中的另存?/span>,保存?/span>.html

import org.jawin.DispatchPtr;

import org.jawin.win32.Ole32;

 

public class Word2Html {

       public static void main(String[] args) {

 

              String path = "e://17001939578.doc";

              int iPos = path.lastIndexOf(".");

              String fileExtName = path.substring(iPos + 1);

              String fileMainName = path.substring(0, iPos);

              fileExtName = fileExtName.toLowerCase();

              try {

                     Ole32.CoInitialize();

                     // 初始?/span>

                     DispatchPtr app = new DispatchPtr("Word.Application");

                     // 创徏word对象

                     app.put("Visible", false);

                     // word不可?/span>

                     DispatchPtr docs = (DispatchPtr) app.get("Documents");

                     // 取得Documents对象

                     DispatchPtr doc = (DispatchPtr) docs.invoke("Open", path);

                     // 打开指定?/span>word文g

                     doc.invoke("SaveAs", fileMainName + ".html");

                     // 另存?/span>HTML文g

                     app.invoke("quit");

                     // 关闭word

                     Ole32.CoUninitialize();

                     // 释放对象

                     System.out.println(""n转换完成Q?/span>");

                     System.out.println(""n文g名:" + fileMainName + ".html");

              } catch (Exception e) {

                     System.out.println(""n该文件不存在Q或者其他错?/span>(如:q行环境问题)Q?/span>");

              }

       }

}



]]>
delphi日期函数http://www.aygfsteel.com/HappyJava/articles/216617.html李徏?/dc:creator>李徏?/author>Tue, 22 Jul 2008 07:14:00 GMThttp://www.aygfsteel.com/HappyJava/articles/216617.htmlhttp://www.aygfsteel.com/HappyJava/comments/216617.htmlhttp://www.aygfsteel.com/HappyJava/articles/216617.html#Feedback0http://www.aygfsteel.com/HappyJava/comments/commentRss/216617.htmlhttp://www.aygfsteel.com/HappyJava/services/trackbacks/216617.html 
Day 开头的函数
?
Unit

DateUtils

function DateOf(const Avalue: TDateTime): TDateTime;

描述
使用 DateOf 函数用来把一?TDateTime cd的变量{变成一?
只带有日期的 TDateTime cd变量?
例如Q?
showmessage(DateTimetostr(dateof(now())));
你得到的?2003/03/19
?showmessage(DateTimetostr((now())));
得到的是 2003/03/19 10:50:49

●function DateTimeToStr(DateTime: TDateTime): string;

描述
DateTimeToString 函数?TDateTime cd的参?DateTime 转换成一?
字符Ԍ使用l定的全局变量 ShortDateFormat 的格式,旉部分按照
l定的全局变量 LongTimeFormat 的格式?
其中 DateTime 为零的部分将不会昄出来?

例如Q?
ShortDateFormat:=’yyyy mm dd’;
showmessage(DateTimetostr((now())));
你将得到Q?003 03 19 10:50:49


●procedure DateTimeToString(var Result: string; const Format: string; DateTime: TDateTime);

描述Q?
DateTimeToString ҎTDateTimecd的参数DateTime 按照由参数Format提供的格?
转化成字W串Qƈ保存在Result中?
对于Format的格式类型,L Date-Time format strings 的帮助?

例如Q?
DateTimeToString(result,’yyyy mm dd’,now());
那么 result的结果ؓQ?003 03 19 10:50:49

●procedure DateTimeToSystemTime(DateTime: TDateTime; var SystemTime: TSystemTime);

描述Q?
有时Z调用API函数来用系l时_你可以?DateTimeToSystemTime ҎQ来一?
TDateTime cd的时间变量{换成一?TSystemTime cd?pȝ旉?

●function DateTimeToUnix(const Avalue: TDateTime ): Int64;

描述Q?
使用 DateTimeToUnix 函数来将一?TDateTime 型时间变量{换成一个相应的 Unix 格式
的日期和旉?
Unix date-and-time values are encoded as the number of seconds that have elapsed
since midnight at the start of January 1, 1970.


●function DateToStr(Date: TDateTime): string;

描述Q?
使用 DateToStr 函数能得?TDateTime 日期旉cd的日期部分。日期的转换格式依赖?
全局变量 ShortDateFormat?

●function DayOf(const Avalue: TDateTime): Word;

描述Q?
对于l定的TDateTimecd的日期时_使用 DayOf 函数能得到该日期是该月䆾的第几天?
该函数的q回数值在 1 ?31 之间
注意QDayOf 函数得到的结果与 DayOfTheMonth 相同?

例如Q?
showmessage(inttostr(dayof(now)));
得到的是Q?9 Q今天是 某月19日)

●function DayOfTheMonth(const Avalue: TDateTime): Word;

?DayOf 相同?

●function DayOfTheWeek(const Avalue: TDateTime): Word;

描述Q?
对于l定的TDateTimecd的日期时_使用 DayOfTheWeek 函数能得到该日期是该星期?
W几天。DayOfTheWeek 函数的返回数gؓ 1 ?7Q其?1 表示星期一Q?7 表示星期日?
注意QDayOfTheWeek ?ISO 8601 标准的(此标准ؓ 星期一是一周的W一天)。对于一?
的第一天是星期日的标准Q如果想获得星期敎ͼ请?DayOfWeek 函数?
Tip: To make the return value more readable, use the Day of week constants.

●function DayOfTheYear(const Avalue: TDateTime): Word;

描述Q?
Ҏl定的日期时间参数AvalueQ?DayOfTheYear 函数能得到在该日期所在的q䆾中,?
日期按照序所计算的天数。因此,作ؓTDateTimecd的变?“1??#8221;在该函数所得到?
l果?1 Q?#8220;1??#8221;所得到的结果ؓ 2Q?#8220;2??#8221;所得到的结果就?32Q依ơ类推?

●function DayOfWeek(Date: TDateTime): Integer;

Description

DayOfWeek returns the day of the week of the specified date as an integer between
1 and 7, where Sunday is the first day of the week and Saturday is the seventh.

Note: DayOfWeek is not compliant with the ISO 8601 standard, which defines Monday
as the first day of the week. For an ISO 8601 compliant version, use the DayOfTheWeek
function instead.

描述Q?
按照l定的TDateTimecd的参数DateQDayOfWeek 函数得到一周中的第几天Q从1??
q里 星期?是一周的W一天,?星期?是第七天?

●function DaysBetween(const ANow, AThen: TDateTime): Integer;

描述Q?
Ҏ两个TDateTimecd的日期时间变?ANow ?AThenQDaysBetween函数能得C者之间的
天数的差距?
DaysBetween 仅仅Ҏ天数的不同来计算。因此,对于 1999q?2?1?下午11?9??
2000q???11?8分,该函数得到的l果?0Q因Z者之间的旉差别q差 1 分钟才到
1 天?

●function DaysInAMonth(const AYear, AMonth: Word): Word;

描述Q?
对于各定?q䆾和月份,DaysInAMonth 函数能得?该月份的d数?
q䆾应该??1 ?9999
月䆾应该??1 ?12

●function DaysInAYear(const AYear: Word): Word;

描述Q?
对于l定的年份,DaysInAYear函数能得到该q䆾的d数?
q䆾应该?1 ?9999?

●function DaysInMonth(const Avalue: TDateTime): Word;

描述Q?
Ҏl定的TDateTimecd的时间日期参数AvalueQDaysInMonth函数能得到该月䆾的d数?

●function DaysInYear(const Avalue: TDateTime): Word;

描述Q?
Ҏl定的TDateTimecd的时间日期参数AvalueQDaysInYear函数能得到该q䆾的d数?

●function DaySpan(const ANow, AThen: TDateTime): Double;

描述Q?
Ҏ两个TDateTimecd的日期时间参数ANow和AThenQDaySpan能得到在天数上的差距?
?DaysBetween 函数不同QDaysBetween 函数 只是计算 整的天数Q?DaySpan函数?
不一天的C得到?
注意Q此函数q回的数gؓ Double 型?

?Month 开头的函数

●function MonthOf(const Avalue: TDateTime): Word;

描述Q?
Ҏl定的TDateTimecd的时间日期参数AvalueQMonthOf函数能得到该q䆾的该月䆾数?
MonthOfq回数gؓ 1 ?12?
注意QMonthOf函数得到的数gMonthOfTheYear函数相同

●function MonthOfTheYear(const Avalue: TDateTime): Word;

与MonthOf函数相同?

●function MonthsBetween(const ANow, AThen: TDateTime): Integer;

描述Q?
Ҏ两个l定的TDateTimecd的参数ANow和AThenQMonthsBetween函数能得C个日期在月䆾
上差距数。因为月份的天数是不同的Q所?MonthsBetween 函数q回的是一个近似|该近?
值基于每个月份ؓ 30.4375 天。不一个月的数字将不被计算?
因此Q例如,对于 2???2?8日,MonthsBetween q回的数gؓ 0?
同样Q对?2???3?日,MonthsBetween q回的数g?0?

●function MonthSpan(const ANow, AThen: TDateTime): Double;

描述Q?
Ҏ两个l定的TDateTimecd的参数ANow和AThenQMonthsBetween函数能得C个日期在月䆾
上差距数。因为月份的天数是不同的Q所?MonthsBetween 函数q回的是一个近似|该近?
值基于每个月份ؓ 30.4375 天。与 MonthsBetween 函数不同QMonthsBetween函数不计不?
一个月的数字,MonthSpan函数会得到不一个月的数字?
注意Q此函数q回的类型ؓ Double

●function MonthStr(DateTime: TDateTime): string;

Description

HTTP message headers permit several formats for the representation of date and time
values. MonthStr converts a TDateTime value into a string representing the month.
MonthStr allows server applications to work with date values taken from HTTP request
messages, without worrying about the details of how they are formatted.

?Week 开头的函数

●function WeekOf(const Avalue: TDateTime): Word;

描述Q?
ҎTDateTimecd的日期时间参数AValuQWeekOf函数会得到该星期Zq的W几?
星期?

●function WeeksInAYear(const AYear: Word): Word;

描述Q?
WeeksInAYear 函数Ҏq䆾得到在该q䆾中共包含多少个星期?

●function WeeksBetween(const ANow, AThen: TDateTime): Integer;

描述Q?
Ҏ两个TDateTimecd的日期时间参数ANow和AThenQWeeksBetween函数得到这两个旉?
星期上的差数。如果差C一个星期,则忽略掉?

●function WeekSpan(const ANow, AThen: TDateTime): Double;

描述Q?
Ҏ两个TDateTimecd的日期时间参数ANow和AThenQWeeksBetween函数得到这两个旉?
星期上的差数。如果差C一个星期,则WeekSpan函数不会忽略掉?
注意Q此函数的返回类型ؓ Double

?Year 开头的函数

●function YearOf(const Avalue: TDateTime): Word;

描述Q?
Ҏl定的TDateTimecd的日期时间参数AvalueQYearOf函数能得到该日期的年份数字?
YearOf函数q回的数gؓ?1 ?9999

●function YearsBetween(const ANow, AThen: TDateTime): Integer;

描述Q?
Ҏ两个l定的TDateTimecd的参数ANow和AThenQYearsBetween函数能得C个日期在q䆾
上差距数。因为年份的天数是不同的Q所?YearsBetween 函数q回的是一个近似|该近?
值基于每q的天数?365.25 天。不的一q的差距不会被计算?
因此例如Q对?1?日和12?1日,如果q两个日期在同一q_?YearsBetween q回数?
?0Q如果这两个日期在͘q的q䆾Q则 YearsBetween 函数q回数gؓ 1?

●function YearSpan(const ANow, AThen: TDateTime): Double;

描述Q?
Ҏ两个l定的TDateTimecd的参数ANow和AThenQYearsBetween函数能得C个日期在q䆾
上差距数。因为年份的天数是不同的Q所?YearsBetween 函数q回的是一个近似|该近?
值基于每q的天数?365.25 天。与 YearsBetween 函数不同QYearsBetween函数忽略掉?
一q的数字Q?YearSpan 计不一q的数字?
注意Q该函数q回cd为Double


●function Yesterday: TDateTime;

描述Q?
Yesterday函数能得到当前日期的前一天的日期Q返回数g不包括时间部分?
例如Q?
当前日期?2003/3/19
?showmessage(datetimetostr(Yesterday));
得?2003/3/18

☆日期的合成
●function EncodeDate(Year, Month, Day: Word): TDateTime;

描述Q?
EncodeDate函数根据参?q䆾、月份、日?而得C个TDateTimecd的时间变量?

●function EncodeDateDay(const AYear, ADayOfYear: Word): TDateTime;

描述Q?
EncodeDateDay根据参数年份和天数Q而得C个TDateTimecd的时间变量?
其中AYear ?1 ?9999?
ADayOfYear 为日子在该年份顺序排列的天数Q例如,1?日时QADayOfYear?Q?
2?日时QADayOfYear?Q??日时QADayOfYear?2?

●function EncodeDateMonthWeek(const AYear, AMonth, AWeekOfMonth: Word; const ADayOfWeek: Word =

1): TDateTime;

描述Q?
EncodeDateMonthWeek 函数根据参?q䆾、月份、星期数Q星期几Q来得到一个TDateTimecd
的时间变量?
其中AYear ?1 ?9999?
其中AMonth ?1 ?12?
AWeekOfMonth是在该月份的星期敎ͼ1 表示W一个星期,可能包含4天或更多的天数?
注意Q一个月的第一天如果是 星期5Q星?或星期日Q用表示q三天的AMonth数值必设?
Z一个月份的数字Q同?AWeekOfMonth 要设为在上一个月所在的星期数?
同样Q如果一个月的最后一天是 星期1Q星?Q或星期3Q那么用表示q三天的AMonth数?
必须讑֮Z一个月份的数字Q同?AWeekOfMonth ?1?
ADayOfWeek表示星期几,星期一?Q星期二??

●function EncodeDateTime(const AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond:

Word):TDateTime;

描述Q?
EncodeDateTime Ҏ参数 q䆾、月份、日子、小时、分、秒、毫U?来得C个TDateTimecd
日期旉?

●function EncodeDateWeek(const AYear, AWeekOfYear: Word; const ADayOfWeek: Word = 1): TDateTime;

描述Q?

EncodeDateWeek Ҏ参数 q䆾、星期数、星期几 来得C个TDateTimecd日期旉?

AWeekOfYear是在该年份的星期敎ͼ1 表示W一个星期,可能包含4天或更多的天数?
注意Q一q的W一天如果是 星期5Q星?或星期日Q用表示q三天的AYear数值必设?
Z一个年份的数字Q同?AWeekOfYear 要设为在上一个年所在的星期数?
同样Q如果一q的最后一天是 星期1Q星?Q或星期3Q那么用表示q三天的AYear数?
必须讑֮Z一个年份的数字Q同?AWeekOfYear ?1?
ADayOfWeek表示星期几,星期一?Q星期二??

●function EncodeTime(Hour, Min, Sec, MSec: Word): TDateTime;

描述Q?
EncodeTime函数Ҏ参数 时、分、秒、毫U?得到个一个TDateTime数倹{?

☆日期的分解

●procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word);

描述Q?
DecodeDate从一个TDateTimecd参数Date中分解出得到q䆾、月份、日子?

●procedure DecodeDateDay(const Avalue: TDateTime; out AYear, ADayOfYear: Word);

描述Q?
DecodeDateDay Ҏ会根据TDateTimecd参数Avalue 得到相应的年份和日期L?
ADayOfYearQ??日,此数gؓ1Q??日,此数gؓ2?

●procedure DecodeDateMonthWeek(const Avalue: TDateTime; out AYear, AMonth, AWeekOfMonth,

ADayOfWeek: Word);

描述Q?
DecodeDateMonthWeekҎҎTDateTimecd参数Avalue 得到相应的年份、月份、月份中的第几个
星期、星期几
AYearQ年?
AMonthQ月份,1 ?12
AWeekOfMonthQ在该月份中的第几个星期
ADayOfWeekQ星期几。星期一??

●procedure DecodeDateTime(const Avalue: TDateTime; out AYear, AMonth, ADay, AHour, AMinute,

ASecond, AMilliSecond: Word);

描述Q?
DecodeDateTime ҎҎTDateTimecd参数Avalue 得到相应的年份、月份、日子、小时、分、秒?
毫秒?

●procedure DecodeDateWeek(const Avalue: TDateTime; out AYear, AWeekOfYear, ADayOfWeek: Word);

描述Q?
DecodeDateWeekҎҎTDateTimecd参数Avalue 得到相应的年份、在该年中的W几个星期、星期几?/div>


]]> վ֩ģ壺 ˼| | բ| غ| ;| ʻ| | | | | | | | | | | ԫ| | | | ʮ| | Į| | ɫ| | Ȫ| ¡| ƺ| | | | | | ʡ| ½| | ¹Ȫ| | ǭ| |