??xml version="1.0" encoding="utf-8" standalone="yes"?>91精品国产91久久久久青草,红桃视频亚洲,久久蜜桃av一区精品变态类天堂http://www.aygfsteel.com/minmoon/zh-cnTue, 06 May 2025 22:08:28 GMTTue, 06 May 2025 22:08:28 GMT60J2me开?/title><link>http://www.aygfsteel.com/minmoon/archive/2006/11/01/78480.html</link><dc:creator>月亮</dc:creator><author>月亮</author><pubDate>Wed, 01 Nov 2006 07:30:00 GMT</pubDate><guid>http://www.aygfsteel.com/minmoon/archive/2006/11/01/78480.html</guid><wfw:comment>http://www.aygfsteel.com/minmoon/comments/78480.html</wfw:comment><comments>http://www.aygfsteel.com/minmoon/archive/2006/11/01/78480.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/minmoon/comments/commentRss/78480.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/minmoon/services/trackbacks/78480.html</trackback:ping><description><![CDATA[ <a > <br />一些资?<br /><br /><br /><br /><br />http://www.csdn.net/subject/j2meTools/</a> <br /> <br /> <a >http://news.csdn.net/news/newstopic/24/24127.shtml</a> <br /> <br /> <br /> <br /> <img src ="http://www.aygfsteel.com/minmoon/aggbug/78480.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/minmoon/" target="_blank">月亮</a> 2006-11-01 15:30 <a href="http://www.aygfsteel.com/minmoon/archive/2006/11/01/78480.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>游戏http://www.aygfsteel.com/minmoon/archive/2006/09/12/69170.html月亮月亮Tue, 12 Sep 2006 07:35:00 GMThttp://www.aygfsteel.com/minmoon/archive/2006/09/12/69170.htmlhttp://www.aygfsteel.com/minmoon/comments/69170.htmlhttp://www.aygfsteel.com/minmoon/archive/2006/09/12/69170.html#Feedback1http://www.aygfsteel.com/minmoon/comments/commentRss/69170.htmlhttp://www.aygfsteel.com/minmoon/services/trackbacks/69170.html

月亮 2006-09-12 15:35 发表评论
]]>
vi命o详解http://www.aygfsteel.com/minmoon/archive/2006/05/13/45983.html月亮月亮Sat, 13 May 2006 07:13:00 GMThttp://www.aygfsteel.com/minmoon/archive/2006/05/13/45983.htmlhttp://www.aygfsteel.com/minmoon/comments/45983.htmlhttp://www.aygfsteel.com/minmoon/archive/2006/05/13/45983.html#Feedback0http://www.aygfsteel.com/minmoon/comments/commentRss/45983.htmlhttp://www.aygfsteel.com/minmoon/services/trackbacks/45983.html没有指定一个文Ӟ那么vi命o会自动生一个无名的I的工作文g。若指定的文件不存在Q?br />那么按指定的文件名创徏一个新的文件。若Ҏ件的修改不保存的话,v i命oq不改变原?br />来文件的内容。?

  注意Qvi命oq不锁住所~辑的文Ӟ因此多个用户可能在同时编辑一个文Ӟ那么最后?br />保存的文件版本将被保留。?/p>

下面是vi命o使用的一些选项及含义:          

  -c sub-command 在对指定的文件编辑前Q先执行指定的命令 sub-command . 

  -r filename 恢复指定的文件filename .          

  -R 指定的文g以只ȝ方式攑օ~辑器中Q这样不会保存对文g的Q何修 攏V?/p>

  -y number 编辑窗口的大小设ؓnumber行。         ?/p>

  下面是vi~辑所处的三种模式Q         ?/p>

  .命o模式 q入vi时所处的模式。在此模式下用户可输入各U子命o对进?作,如删除行、?br />_脓行、移向下一个字、移向不同行{。?/p>

  .文本输入模式 在此模式下可以修改一行的内容q增L行。在命o模式下键入a 、i 或?br />c键可q入文本输入模式Q按Escape键可q回命o模式。?/p>

  .命oҎ式 在此模式下Q可以通过子命令输入更多的参数。如Qw子命令要求输入一文?br />件名Q?/"子命令要求输入一个查N。用户用Escape键返回命令模式。?/p>


下面是自命o模式下执行的Q在同一行上Ud的自命oQ         ?/p>

  h 光标左UM根{         ?/p>

  l 光标右UM根{         ?/p>

  j 光标下UM根{         ?/p>

  k 光标上UM根{         ?/p>

  w 光标移C一个小字的前面。         ?/p>

  W 光标移C一个大字的前面。         ?/p>

  b 光标移到前一个小字的前面。         ?/p>

  B 光标移到前一个大字的前面。         ?/p>

  e 光标移C一个小字的后面。         ?/p>

  E 光标移到前一个大字的后面。         ?/p>

  fc 把光标移到同一行的下一个c字符处。         ?/p>

  Fc 把光标移到同一行的前一个c字符处。         ?/p>

  tc 把光标移到同一行的下一个字Wc的前一根{         ?/p>

  Tc 把光标移到同一行的前一个字Wc的后一根{         ?/p>

  number| 把光标移到递number列上。         ?/p>

下面是命令模式下在行间移动的子命令:          

  +或Enter 把光标移至下一行第一个非I白字符。         ?/p>

  - 把光标移至上一行第一个非I白字符。         ?/p>

  0 把光标移到当前行的第一个字W处。         ?/p>

  $ 把光标移到当前行的最后一个字W处。         ?/p>

  H 把光标移到屏q最端一行。         ?/p>

  L 把光标移到屏q最底端一行。         ?/p>

  M 把光标移到屏q中间。         ?/p>

下面是命令模式下改变屏幕昄的子命oQ         ?/p>

  z- 把当前行作ؓ屏幕的最后一行,q新显C屏q。         ?/p>

  z. 把当前行作ؓ屏幕的中间一行,q新显C屏q。         ?/p>

  Ctrl+l 重新昄屏幕当前内容。         ?/p>

  /pattern/z- Lpattern的下一个位|,q把所在行设ؓ屏幕的最后一行。?/p>

下面是在命o模式下用来显C页面的子命令:          

  Ctrl + f向后滚一c         ?/p>

  Ctrl + d向后滚半c         ?/p>

  Ctrl + b向前滚一c         ?/p>

  Ctrl + u向前滚半c         ?/p>

  Ctrl + e屏幕向下滚一行。         ?/p>

  Ctrl + y屏幕上滚一行。         ?/p>

下面是在命o模式下用来查扑֭W串所使用的子命oQ         ?/p>

  /pattern 向后L指定的pattern ,若遇到文件尾Q则从头再开始。?/p>

  Qpattern 向前L指定的pattern ,若遇到文件头Q则从尾再开始。?/p>

  n 在上ơ指定的方向上,再次执行上次定义的查找。         ?/p>

  N 在上ơ指定的方向的相反方向上Q再ơ执行上ơ定义的查找。         ?/p>

  /pattern/+number 光标停在包含pattern的行后面Wnumber行上。?/p>

  /pattern/-number 光标停在包含pattern的行前面Wnumber行上。?/p>

  % Ud匚w?Q)"?{}"上。         ?/p>

下面是在文本输入模式下用来输入文本的子命令(用户可在M时候按Escapeq回到命令模式)Q?/p>

  a 在光标之后开始输入文本。         ?/p>

  A在行ּ始输入文本。         ?/p>

  i在光标之前开始输入文本。         ?/p>

  I在行首第一个非I白字符前输入文本。         ?/p>

  o在光标所在行后插入一I。         ?/p>

  O在光标所在行前插入一I。         ?/p>

下面是在命o模式下改变文本所使用的子命oQ用户可在Q何的时候按Escape键返回到命o模式Q: 

  cc或S 修改一整行。         ?/p>

  C 改变一行光标位|以后的部分。         ?/p>

  cw 改变光标所在单词。         ?/p>

  dd删除当前行。         ?/p>

  D 删除光标所在行光标后面的内宏V         ?/p>

  dw删除光标所在的单词。         ?/p>

  J 把下一行内容加到本行行。         ?/p>

  rc把光W所在字W替换成c .          

  R 覆盖本行内容。         ?/p>

  u恢复上一ơ的修改。         ?/p>

  x删除光标所在的字符。         ?/p>

  ~ 改变光标所在出字符的大写。         ?/p>

  . 重复上一?作。         ?/p>

  <<把当前行Ud左边。         ?/p>

  >>把当前行Ud双。         ?/p>

下面是用于文件中拯文本的字命oQ         ?/p>

  p 缓冲区内容取到光标所在行的下面一行。         ?/p>

  P 缓冲区内容取到光标所在行的上面一行。         ?/p>

  "bd 文本删除至有名~冲区b .          

  "bp 张脓有名~冲区b中内宏V         ?/p>

  yy把当前行攑օ~冲区。         ?/p>

  Y 把当前行攑օ~冲区。         ?/p>

  Yw把光标所在的单词攑օ~冲区。         ?/p>

下面是用于保存文件的子命令:          

  :w 回写修改后的文g。         ?/p>

  :w filename 当filename不存在时Q把修改后的文g存ؓ文gfilename ,当文件filename 
存在Ӟ报错。?/p>

  !w filename 如果文gfilename存在Ӟ把修改后的文件保存ؓ文gfilename . 

下面列出了在vi~辑的多个文件之间切换所用的子命令:          

  :n开始编辑viȀzȝ文g列表中的下一个文件。         ?/p>

  :n filenames 指定被~辑的新的文件列表。         ?/p>

下面列出了用于在当前文g和另外一个文仉切换的子命oQ         ?/p>

  :e filename 使用filenameȀzvi Q在vi中装入另一个文件filenameQ。?/p>

  e!重新装入当前文gQ若当前文g有改动,则丢弃以前的改动。         ?/p>

  :e+filename 使用filenameȀzvi ,q从文gN开始编辑。?/p>

  :e+number filename 使用filenameȀzvi ,q在Wnumber行开始编辑。?/p>

  :e# 开始编辑另外一个文件。         ?/p>

下面是在本文件中加入其他文g代码所使用的子命oQ         ?/p>

  :r filenamedfilename文gQƈ其内容加到当前文g后。  ?/p>

  :r ! command执行command文gQƈ其输出加到当前文g后。  ?/p>

下面是vi中其他的子命令:          

  ctrl+g 取得正在~辑文g的有关信息。         ?/p>

  :sh启动sh Q从sh中返回可用exit或ctrl+d .          

  :! Command 执行命ocommand .          

  !!重新执行上次?! Command子命令。         ?/p>

  :q退出vi Q若用户对编辑的文g有所修改Q系l不会让用户使用q命o退出。  ?/p>

  :q!退出vi而不是否对文g有改动。         ?/p>

  ZZ?wq 保存Ҏ件的修改q出vi .          

  用户可在一个特D的文g.exrc中定义特D的vi命o。在vi中用这些命令时Q必d该?br />命o前加上一个冒? Q? ?/p>

月亮 2006-05-13 15:13 发表评论
]]>
_NLog4jhttp://www.aygfsteel.com/minmoon/archive/2006/04/26/43247.html月亮月亮Wed, 26 Apr 2006 04:59:00 GMThttp://www.aygfsteel.com/minmoon/archive/2006/04/26/43247.htmlhttp://www.aygfsteel.com/minmoon/comments/43247.htmlhttp://www.aygfsteel.com/minmoon/archive/2006/04/26/43247.html#Feedback0http://www.aygfsteel.com/minmoon/comments/commentRss/43247.htmlhttp://www.aygfsteel.com/minmoon/services/trackbacks/43247.html log4j虽然ȝ来说是比较容易用的Q但是要是想比较_N的操纵它还是有很多地方值得探讨的?br />    q几天有I,把项目中大家用到的log4j实现的功能分了一下类Q大致分Z面三c?
    <1>所有的日志信息都输出到log.log.
    <2>对于一些特D的日志Q如启动时候的日志Q,输出到log/startup/startup.log.
    <3>对于某些Ҏ包下面的日志Q如com.aspire包下面的error信息都输出到error.log   
    有了q几个功能,怿对于大部分的pȝ都是够用的了Q下面这个例子就是实Cq几个功?
    (至于其他的一些配|,如格式这些的׃说明,有很多这U资?
   
    ***********  log4j 配置文g  ************   
   
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="

<appender name="file" class="org.apache.log4j.RollingFileAppender">
 <param name="File" value="log.log"/>
 <layout class="org.apache.log4j.PatternLayout">
 <param name="ConversionPattern" value=" %d{ISO8601} [%c]- %m%n"/>
 </layout>
</appender>

<appender name="error" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="error.log"/>
  <param name="MaxBackupIndex" value="300"/>
  <param name="Encoding" value="GB2312"/>
  <param name="MaxFileSize" value="20MB"/>
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%d{ISO8601} %p [%c] - [%m]%n"/>
  </layout>
    <filter class="org.apache.log4j.varia.LevelRangeFilter">
  <!-- qo,只记录error信息-->
  <param name="LevelMin" value="error"/>
  <param name="LevelMax" value="error"/>
  <param name="acceptOnMatch" value="true"/>
    </filter>
</appender>
<appender name="startup" class="com.aspire.TimeSizeRollingFileAppender">
  <!--该类使自׃FileAppenderzQ可以自己控制输出文件的路径 -->
  <param name="File" value="log/startup/startup.log" />
  <param name="Encoding" value="GBK" />
  <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%m %d{ISO8601}- %m%n %p %l%n" />
  </layout>
</appender>

<logger name="biz.startup">
<!--Logger logger = Logger.getLogger("biz.startup") 可以q样来调用本logger-->
  <level value="debug" />
  <appender-ref ref="startup" />
</logger>

<logger name="com.aspire" additivity="false">
<!--Log log = LogFactory.getLog(TestLog4j.class) 此时如果TestLog4j
    位于com.aspire包下面,那么使用本logger
 -->
  <level value="debug"/>
  <appender-ref ref="error"/>
</logger>
<root>
<level value="info"/>
<!-- 默认输出到log.log-->
<appender-ref ref="file"/>
</root>
</log4j:configuration>

***********  log4j 配置文gl束 ************

**********  z的TimeSizeRollingFileAppenderc?****
package com.aspire;

import org.apache.log4j.FileAppender;
import org.apache.log4j.spi.ErrorCode;
import java.io.File;
import java.io.IOException;

public class TimeSizeRollingFileAppender
    extends FileAppender
    implements ErrorCode {

  private final static String FS = System.getProperty("file.separator");
  public TimeSizeRollingFileAppender() {
  }
  public void setFile(String file) {
    String val = file.trim();
    File domain = new File(".");
    try {
      fileName = domain.getCanonicalPath() + FS + val;
    }
    catch (IOException ex) {
      ex.printStackTrace();
    }
  }
}

********** TimeSizeRollingFileAppender cȝ?******

************ 调用CZ TestLog4jc?**************
package com.aspire;

import org.apache.log4j.Logger;
import org.apache.log4j.LogManager;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.xml.DOMConfigurator;
import org.apache.commons.logging.Log;

public class TestLog4j {
  private Logger logger = Logger.getLogger("biz.startup");
  private Log log = LogFactory.getLog(TestLog4j.class);

  public static void config(){
    DOMConfigurator.configure("conf\\log4jConf.xml");
  }
  public void Test(){
    /**
     * error > warn > info > debug
     */
    logger.error("*****error*****");
    logger.debug("****debug*****");
    logger.warn("*****warn******");
    logger.info("*****info******");
    log.error("中华之崛?");
  }
  public static void main(String [] argv){
    TestLog4j t = new TestLog4j();
    TestLog4j.config();
    t.Test();
  }
}

***************  TestLog4j end ***********



月亮 2006-04-26 12:59 发表评论
]]>
23U经典的设计模式_Prototype模式(原Ş模式)http://www.aygfsteel.com/minmoon/archive/2006/04/16/41331.html月亮月亮Sun, 16 Apr 2006 07:21:00 GMThttp://www.aygfsteel.com/minmoon/archive/2006/04/16/41331.htmlhttp://www.aygfsteel.com/minmoon/comments/41331.htmlhttp://www.aygfsteel.com/minmoon/archive/2006/04/16/41331.html#Feedback0http://www.aygfsteel.com/minmoon/comments/commentRss/41331.htmlhttp://www.aygfsteel.com/minmoon/services/trackbacks/41331.html 很多时候,创徏对象的时候,只是在某些属性g有区别,而大部分都很怼Q但是这L对象的初始化相对来说比较复杂Q而且
需要耗费较长的时间或资源Q这U情况下Q我们可以考虑使用Prototype模式。我觉得q种模式实用于这L情况:如果该类的用户对于该
cȝ对象是怎么创徏的,对类的内部结构这些都不关心的情况Qƈ且该cȝ创徏q程比较Ҏ或资源时Q可以考虑使用该模式。下面是该模式的
一个例?

Prototype c?/font>

package com.moonsoft;

import java.lang.Cloneable;
public class Prototype implements Cloneable {
 
 public String myname;
 
 Prototype(){
  System.out.println("start:"+System.currentTimeMillis());
  for( int i=0; i< 9999999; i++){   
  }
  System.out.println("end:"+System.currentTimeMillis());
 }
 
 public Object clone(){
  Object o = null;
  try{
   o = super.clone();   
  }
  catch(CloneNotSupportedException ex){
   ex.printStackTrace();
  }
  return o;
 }
 
 public void whoami(){
  System.out.println(myname);
 }
}


试c?br />
package com.moonsoft;

public class Test {
 
 public static void main(String [] argv){
  Prototype  p = new Prototype();
  p.whoami();
  p.myname = "loucy";
  Prototype  p1 = (Prototype)p.clone();
  p1.whoami(); 
  
 }
}



月亮 2006-04-16 15:21 发表评论
]]>
技巧_jsp~存问题的解?/title><link>http://www.aygfsteel.com/minmoon/archive/2006/04/04/39172.html</link><dc:creator>月亮</dc:creator><author>月亮</author><pubDate>Tue, 04 Apr 2006 07:11:00 GMT</pubDate><guid>http://www.aygfsteel.com/minmoon/archive/2006/04/04/39172.html</guid><wfw:comment>http://www.aygfsteel.com/minmoon/comments/39172.html</wfw:comment><comments>http://www.aygfsteel.com/minmoon/archive/2006/04/04/39172.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/minmoon/comments/commentRss/39172.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/minmoon/services/trackbacks/39172.html</trackback:ping><description><![CDATA[如果一直ؓjsp的缓存问题困扰的话,可以试试在jsp中加入以下几句话:<br /><br /><head><br /><meta http-equiv="Cache-Control" content="max-age=0" forua="true" /><br /><meta http-equiv="Cache-Control" content="no-cache" forua="true"/><br /><meta http-equiv="Cache-Control" content="must-revalidate" forua="true" /><br /></head><br /><br />max-age=30 pC缓存的最长存在时间是30s,no-cache表示无缓存,must-revalidate表示每次讉K必须重新验证是否有更斎ͼ<img src ="http://www.aygfsteel.com/minmoon/aggbug/39172.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/minmoon/" target="_blank">月亮</a> 2006-04-04 15:11 <a href="http://www.aygfsteel.com/minmoon/archive/2006/04/04/39172.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用Java实现的Html web服务?/title><link>http://www.aygfsteel.com/minmoon/archive/2006/03/28/37787.html</link><dc:creator>月亮</dc:creator><author>月亮</author><pubDate>Tue, 28 Mar 2006 05:55:00 GMT</pubDate><guid>http://www.aygfsteel.com/minmoon/archive/2006/03/28/37787.html</guid><wfw:comment>http://www.aygfsteel.com/minmoon/comments/37787.html</wfw:comment><comments>http://www.aygfsteel.com/minmoon/archive/2006/03/28/37787.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/minmoon/comments/commentRss/37787.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/minmoon/services/trackbacks/37787.html</trackback:ping><description><![CDATA[ <p>  马上p开始{到新的项目组Q做一个全新的目了,对于HTTP协议需要一定的了解Q所以周末自qJava写了一个简单的web服务器试试,只能实现单的html文g览?br /><br />主要包括三个c?WebServer(监听览器请?,SocketThread(处理览器请求的q程),StringUtil(实现一些公q操作),下面是三个类的代?<br /><br /><br /><strong>----WebServer----</strong><br /><font color="#0000ff">import java.io.IOException;<br />import java.net.ServerSocket;<br />import java.net.Socket;</font></p> <p> <font color="#0000ff">public class WebServer {<br /> <br /> public static void main(String[] argv) throws IOException {<br />  ServerSocket servSocket = new ServerSocket(StringUtil.LISTENING_PORT);<br />  try {<br />   while (true) {<br />    Socket socket = servSocket.accept();<br />    new SocketThread(socket).start();<br />   }<br />  } finally {<br />   servSocket.close();<br />  }<br /> }<br />}</font> <br /> <strong>---SocketThread------</strong> <br /> <font color="#0000ff">import java.io.BufferedReader;<br />import java.io.BufferedWriter;<br />import java.io.File;<br />import java.io.InputStreamReader;<br />import java.io.OutputStreamWriter;<br />import java.io.PrintStream;<br />import java.io.Writer;<br />import java.net.Socket;</font> </p> <p> <font color="#0000ff">public class SocketThread extends Thread {<br /> private Socket socket = null;</font> </p> <p> <font color="#0000ff"> public SocketThread(Socket s) {<br />  this.socket = s;<br /> }</font> </p> <p> <font color="#0000ff"> public void run() {<br />  try {<br />   if (socket == null) {<br />    throw new Exception("==>SOCKET为空<==");<br />   }<br />   BufferedReader reader = new BufferedReader(new InputStreamReader(<br />     socket.getInputStream()));<br />   String fileName = "";<br />   while (true) {<br />    String str = reader.readLine();<br />    if (str == null || str.length() <= 0) {<br />     break;<br />    }<br />    //System.out.println("===>"+str);<br />    if (StringUtil.isGetRequestInfo(str)) {<br />     fileName = StringUtil.getFileName(str);<br />     break;<br />    }<br />   }<br />   //System.out.println("===>客户机IP==>"+socket.getInetAddress().toString());<br />   //System.out.println("===>客户机端?=>"+socket.getPort());   <br />   /*<br />    BufferedWriter writer = new BufferedWriter(new <br />    OutputStreamWriter(socket.getOutputStream()));<br />    */<br />   PrintStream outputStream = new PrintStream(socket.getOutputStream());<br />   File file = new File(StringUtil.WEBPATH + fileName);<br />   if (file.exists()) { //如果文g存在<br />    StringUtil.sendHttpHead(outputStream, file);<br />    StringUtil.sendFile(outputStream, file);<br />    outputStream.flush();<br />   } else { //文g没找刎ͼq回404面 <br />    StringUtil.send404Page(outputStream);<br />    outputStream.flush();<br />   }<br />  } catch (Exception e) {<br />   e.printStackTrace();<br />  } finally {<br />   try {<br />    socket.close();<br />   } catch (Exception e) {<br />   }<br />  }<br /> }</font> </p> <p> <font color="#0000ff">}<br /><br /><br /><br /></font> <strong>---StringUtil-----</strong> <br /> <font color="#0000ff">import java.io.DataInputStream;<br />import java.io.File;<br />import java.io.FileInputStream;<br />import java.io.PrintStream;</font> </p> <p> <font color="#0000ff">/**<br /> * @author xiaoliang <br /> */<br />public class StringUtil {</font> </p> <p> <font color="#0000ff"> // 服务器监听的端口<br /> public static final int LISTENING_PORT = 8080;</font> </p> <p> <font color="#0000ff"> // 服务器文件的位置<br /> public static final String WEBPATH = "E:";</font> </p> <p> <font color="#0000ff"> /**<br />  * 判断该字W串是不是浏览器发送过来的h头信?br />  * @param str<br />  * @return<br />  */<br /> public static boolean isGetRequestInfo(String str) {<br />  if (str == null || str.length() <= 0)<br />   return false;<br />  boolean isGetStr = true;<br />  if (str.indexOf("GET") != 0) {<br />   isGetStr = false;<br />  }<br />  if (str.indexOf("HTTP/") <= 0) {<br />   isGetStr = false;<br />  }<br />  return isGetStr;<br /> }</font> </p> <p> <font color="#0000ff"> /**<br />  * 获得h信息中的文g?默认为index.html<br />  * <br />  * @param str<br />  * @return<br />  */<br /> public static String getFileName(String str) {<br />  String fileName = "index.html", s;<br />  int httpIndex = str.lastIndexOf("HTTP/");<br />  s = str.substring(3, httpIndex);<br />  s = s.trim();<br />  if (s != null && s.length() > 0 && s.indexOf(".") > 0) {<br />   fileName = s;<br />  }<br />  return fileName;<br /> }</font> </p> <p> <font color="#0000ff"> /**<br />  * 发送文件到客户?br />  * <br />  * @param out<br />  * @param file<br />  */<br /> public static void sendFile(PrintStream out, File file) {<br />  try {<br />   DataInputStream in = new DataInputStream(new FileInputStream(file));<br />   int length = (int) file.length();<br />   byte[] buffer = new byte[length];<br />   in.readFully(buffer);<br />   out.write(buffer, 0, length);<br />   in.close();<br />  } catch (Exception e) {<br />   e.printStackTrace();<br />  }<br /> }</font> </p> <p> <font color="#0000ff"> /**<br />  * 发送返回的头部信息<br />  * @param out<br />  */<br /> public static void sendHttpHead(PrintStream outputStream, File file) {<br />  try {<br />   outputStream.println("HTTP/1.0200OK");<br />   outputStream.println("Content_Type:textQhtm1");<br />   outputStream.println("Content_Length:" + file.length());<br />   outputStream.println("Server:moon webserver 1.0");<br />   outputStream.println("");<br />  } catch (Exception e) {<br />   e.printStackTrace();<br />  }<br /> }</font> </p> <p> <font color="#0000ff"> /**<br />  * q回404面<br />  * @param out<br />  */<br /> public static void send404Page(PrintStream out) {<br />  try {<br />   out.println("HTTP Q?.0 404 no found");<br />   out.println("Content_type:text/html");<br />   out.println("");<br />   out.println("Error404:file not found!");<br />  } catch (Exception e) {<br />   e.printStackTrace();<br />  }<br /> }<br /> <br /> public static void main(String[] argv) {<br />  String str = "GET /11.html HTTP/1.1";<br />  str = StringUtil.getFileName(str);<br />  System.out.println("==>" + str + "<==");<br />  File file = new File(StringUtil.WEBPATH + str);<br />  if (file.exists()) {<br />   System.out.println("exists");<br />  } else {<br />   System.out.println("not exists");<br />  }<br /> }</font> </p> <p> <font color="#0000ff">}<br /></font> <br /> </p> <img src ="http://www.aygfsteel.com/minmoon/aggbug/37787.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/minmoon/" target="_blank">月亮</a> 2006-03-28 13:55 <a href="http://www.aygfsteel.com/minmoon/archive/2006/03/28/37787.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Apache FileUpload 使用http://www.aygfsteel.com/minmoon/archive/2006/03/06/33828.html月亮月亮Mon, 06 Mar 2006 04:33:00 GMThttp://www.aygfsteel.com/minmoon/archive/2006/03/06/33828.htmlhttp://www.aygfsteel.com/minmoon/comments/33828.htmlhttp://www.aygfsteel.com/minmoon/archive/2006/03/06/33828.html#Feedback1http://www.aygfsteel.com/minmoon/comments/commentRss/33828.htmlhttp://www.aygfsteel.com/minmoon/services/trackbacks/33828.htmlFileUpload lg使用注意:
1>
首先创徏一个HTML面。注意,凡是要上载文件的表单都必设|enctype属性,且属性的值必Lmultipart/form-dataQ同时请求方法必LPOST.
<form name="myform" action="fileuploaddemo.jsp"  method="post" enctype="multipart/form-data">
 
2>commons-fileupload-1.1.jar和commons-io-1.1.jar 两个包都要引入,
因ؓ在parseRequest(request)的类有关l承于DiskFileItemcR?/FONT>

3>CZ
      //查表单是否正?BR>      boolean isMultipart = FileUpload.isMultipartContent(request);
      DiskFileItemFactory  factory = new DiskFileItemFactory();
      ServletFileUpload upload = new ServletFileUpload(factory);
      //文g最大,设ؓ-1表示不受限制
      upload.setSizeMax(4096);
      //解析hQ把解析的结果放在一个List里面
      List items = upload.parseRequest(request);
      //~存大小Q设?1表示不受限制
      factory.setSizeThreshold(4096);
      //讄临时目录
      factory.setRepository(new File("D:\\temp"));
      Iterator iter = items.iterator();
      while( iter.hasNext() ){
        FileItem item  = (FileItem)iter.next();
        //查是一个普通的表单域还是Filelg
        if( !item.isFormField() ){
          System.out.println("FileName:==>"+item.getName());
          System.out.println("FieldName:==>"+item.getFieldName());
          System.out.println("Size:==>"+item.getSize());
          //item.getName q回的是完整的文件名Q如:E:\\xx\11.doc
          //所以这里用一个fullFile来取文g?BR>          File fullFile  = new File(item.getName());
          File uploadedFile = new File("D:\\ftp\\",fullFile.getName());
          item.write(uploadedFile);
        }
      }



月亮 2006-03-06 12:33 发表评论
]]>
EJB QLhttp://www.aygfsteel.com/minmoon/archive/2006/02/27/32762.html月亮月亮Mon, 27 Feb 2006 15:34:00 GMThttp://www.aygfsteel.com/minmoon/archive/2006/02/27/32762.htmlhttp://www.aygfsteel.com/minmoon/comments/32762.htmlhttp://www.aygfsteel.com/minmoon/archive/2006/02/27/32762.html#Feedback0http://www.aygfsteel.com/minmoon/comments/commentRss/32762.htmlhttp://www.aygfsteel.com/minmoon/services/trackbacks/32762.htmlselect  i from  users as  i  where i.name=?1则编译EJB的时候会报错Q但是如果把users 首字母大写就OK了?BR>select  i from  Users as  i  where i.name=?1

月亮 2006-02-27 23:34 发表评论
]]>
EJb 会话Beanhttp://www.aygfsteel.com/minmoon/archive/2006/02/22/31980.html月亮月亮Wed, 22 Feb 2006 08:35:00 GMThttp://www.aygfsteel.com/minmoon/archive/2006/02/22/31980.htmlhttp://www.aygfsteel.com/minmoon/comments/31980.htmlhttp://www.aygfsteel.com/minmoon/archive/2006/02/22/31980.html#Feedback0http://www.aygfsteel.com/minmoon/comments/commentRss/31980.htmlhttp://www.aygfsteel.com/minmoon/services/trackbacks/31980.html在EJB容器中,SessionBean主要有两U:无状态(statelessQ和有状态(statefulQ?BR>1、无状态EJBQ类似ServletQ它只提供一个引?Bean instance)Q被所有客L使用Q不保留某个客户的单独信息?BR>例如Q在某无状态EJB中,有一个数据成员(变量Q?i_count Q整型,用于讉K计数Q初始gؓ0Q访问一ơ篏?Q,它是公共的。某客户端访问后Q值篏加ؓ1。另一个客L讉K时是已经变化了的gؓ1?/P>

2、有状态EJBQ类似数据库的Connect链接Q也cMU程守护Q它提供引用?Bean instance pool)Q每个客L会有单独的信息?BR>例如Q在某有状态EJB中,有一个数据成员(变量Q?i_count Q整型,用于讉K计数Q初始gؓ0Q访问一ơ篏?Q,它对每个客户端来说是隔离的。某客户端访问后Q值篏加ؓ1。另一个客L讉K时还是原来的gؓ0?/P>

q里提到的数据成员(变量Q?i_count Q在EJB规范中称作:conversational state 。对它的要求也很多的Q例如类型ؓ Serializable objects。还有,q要在ejbActivate()QejbPassivate()QejbRemove(){生命周期约定的Ҏ中处理。详见EJB规范吧?/P>

我的感想Q在看第一遍书Ӟq一Ҏ觉都没有Q根本就看不明白SessionBean中的session与Servlet容器中的session有什么区别?BR>动手~程后,才感觉到EJB只是比Servlet更规范,更重量而已。真正的区别是接口协议一个是ZHTTPQ一个是ZRMI/IIOP。Servlet与无状态的SessionBean在Session上是一L控制。Servlet中的Session对象与有状态的SessionBean是一L控制?BR>对于应用Q例如有一个购物RQ要记录正在采购的物品信息,没有EJBӞ我们一般是存在Servlet容器中的session中。有了EJBQ则可以存储在有状态的SessionBean中,q且该次有状态的sessionBean的instanceq得保存在Servlet的session中。这L好处是:臛_可以减轻Servlet容器的负载?BR>


转自:
http://zengabo.blogchina.com/blog/527365.html



月亮 2006-02-22 16:35 发表评论
]]>
վ֩ģ壺 ͭ| | հ| | ɳ| | Ͻ| | | | | | ũ| | | ͻȪ| | | »| | | | | | ԰| ع| | | | | տ| | ʤ| | | ҵ| | | | | ɽ|