??xml version="1.0" encoding="utf-8" standalone="yes"?>伊人婷婷综合缴情亚洲五月,日本亚洲色大成网站www久久,亚洲日韩小电影在线观看http://www.tkk7.com/szhswl/category/27780.html宋针q的个hI间zh-cnThu, 10 Jan 2008 10:26:05 GMTThu, 10 Jan 2008 10:26:05 GMT60jsp面转换成htm面http://www.tkk7.com/szhswl/articles/174379.html宋针q?/dc:creator>宋针q?/author>Thu, 10 Jan 2008 09:56:00 GMThttp://www.tkk7.com/szhswl/articles/174379.htmlhttp://www.tkk7.com/szhswl/comments/174379.htmlhttp://www.tkk7.com/szhswl/articles/174379.html#Feedback0http://www.tkk7.com/szhswl/comments/commentRss/174379.htmlhttp://www.tkk7.com/szhswl/services/trackbacks/174379.htmlimport java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
public class ToHtml extends HttpServlet {

    public void service(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
     String url = "";
     String name = "";

     ServletContext sc = getServletContext();

     String htmName = request.getParameter("htmName");// 要生成的htm文g?
     String jspUrl = request.getParameter("jspUrl");//讉K的jsp路径
     String htmUrl = request.getParameter("htmUrl");//存放生成htm文g的\?/p>

     // 则你讉Kq个servlet时加参数.?a href="http://localhost/test/toHtml?file_name=index">http://localhost/test/toHtml?file_name=index

     //url = "/" + file_name + ".jsp";// 你要生成的页面的文g名?br />     我的扩展名ؓjsf .
    
     name = sc.getRealPath(htmUrl)+"\\"+ htmName + ".htm";
     //System.out.println(name);
     //name = ConfConstants.CONTEXT_PATH+"\\"+ file_name + ".htm";// q是生成的html文g?如index.htm.文g名字与源文g名相同。扩展名为htm

     //ConfConstants.CONTEXT_PATHZ的应用的上下文\径?/p>

     RequestDispatcher rd = sc.getRequestDispatcher(jspUrl);

     final ByteArrayOutputStream os = new ByteArrayOutputStream();

     final ServletOutputStream stream = new ServletOutputStream() {
      public void write(byte[] data, int offset, int length) {
       os.write(data, offset, length);
      }

      public void write(int b) throws IOException {
       os.write(b);
      }
     };

     final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));

     HttpServletResponse rep = new HttpServletResponseWrapper(response) {
      public ServletOutputStream getOutputStream() {
       return stream;
      }

      public PrintWriter getWriter() {
       return pw;
      }
     };
     rd.include(request, rep);
     pw.flush();
     FileOutputStream fos = new FileOutputStream(name); // 把jsp输出的内容写到xxx.htm
     os.writeTo(fos);
     fos.close();
     System.out.println("面已经成功生成");
     //PrintWriter out = response.getWriter();
     //out.print("<p align=center><font size=3 color=red>面已经成功生成Qsingle<br>http://www.agilejava.org/space/? 233</font></p>");
    }
   }

 

CallHtml.java

 

import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

public class CallHtml {

           public static void callOnePage(String htmName,String jspUrl,String htmUrl) {
            try {
             String str = "http://127.0.0.1:8000/test/toHtml?htmName="+htmName+"&jspUrl="+jspUrl+"&htmUrl="+htmUrl ;
             int httpResult;
             URL url = new URL(str);
             URLConnection connection = url.openConnection();
             connection.connect();
             HttpURLConnection httpURLConnection = (HttpURLConnection) connection;
             httpResult = httpURLConnection.getResponseCode();
             if (httpResult != HttpURLConnection.HTTP_OK) {
              System.out.println("没有q接成功");
             } else {
              System.out.println("q接成功了 ");
             }
            } catch (Exception e) {
             // TODO: handle exception
            }
           }

          //q个Ҏ适当重蝲Q就可以省去一些参C递?

          }

 

web.xml

 

<servlet>
        <servlet-name>toHtml</servlet-name>
        <servlet-class>com.test.filter.ToHtml</servlet-class>
</servlet>

<servlet-mapping>
        <servlet-name>toHtml</servlet-name>
        <url-pattern>/toHtml</url-pattern>
</servlet-mapping>

_______________________________________下面是网上找的方法:

q几天公叔R要生成静态的HTML面以减数据库与服务器的压力和负担Q于是在|络上一늋搜,扑ֈ几篇相当不错的文章和一些相当有用的资料。ؓ了方便,我整理在自己的BLOGQ以供参考!

在接下来的应用中Q我自己惛_另一U解x案,是通过Ajax + Struts + XML解决静态页面方案,一q写下来Q与大家分nQ?br />
1.生成静态页面技术解x案之一Q{载)
2.生成静态页面技术解x案之二(转蝲Q?
3.一个实现将动态页面{为静态的ҎQ{载)
4.JSP生成静态HTML面范例Q{载)
5.利用XMLQXSL生成静态页面技术方案(转蝲Q?
6.Ajax + Struts + XML解决静态页面方案(原创Q?
随着|站讉K量的加大Q每ơ从数据库读取都是以效率作ؓ代h的,静态页加在搜烦Ӟ也会被优先考虑。互联网上流行的做法是将数据源代码写入数据库再从数据库读取生成静态面Q这h形间加大了数据库。将现有的JSP늛接生成静态页Q将会节省很多?
Z么要生成静态首?
1、如果你首页d的数据库ơ数比较多,速度很慢Q而且占用很多服务器资源。用静态页面访问速度当然快多?
2、搜索引擎容易搜索到
3、如果程序出问题Q也能保证首能讉K
诸如此类{等好处Q那么下面几文章给大家几个完整的解x案!
----------------------------------------------------------------------------------------------------

生成静态页面技术解x案之一

转蝲者前aQ这是一个全面的jsp动态页面静态化ҎQ本站的帖子静态化Ҏ借鉴q篇帖子中方法。向http://www.agilejava.org的single的共享精致敬?

转帖正文Q?

       怿很多人都希望自己的页面越快越好,最好是能静态的Q提高客戯问速度。也便于搜烦引擎搜烦。所以,希望我们的动态读取数据库的页面,可能的生成静态页面。一下系列文章,介绍一下个人的解决Ҏ?

      本系列将介绍个h的一U方法,在不改变原来jsp文g的基上,只需要加入少量的代码Q就让你的新d布系l,很容易就完全变成静态的面?

      本文假设你是用java开发的web动态页面?

      W一步,加入servlet.代码如下?


    

E序代码 E序代码
public class ToHtml extends HttpServlet {

       public void service(HttpServletRequest request, HttpServletResponse response)
         throws ServletException, IOException {
        String url = "";
        String name = "";

        ServletContext sc = getServletContext();

        String file_name = request.getParameter("file_name");// 你要讉K的jsp文g?如indexQ不包括扩展?

        // 则你讉Kq个servlet时加参数.?a href="http://localhost/test/toHtml?file_name=index" target="_blank">http://localhost/test/toHtml?file_name=index

        url = "/" + file_name + ".jsf";// 你要生成的页面的文g名。我的扩展名为jsf .

        name = ConfConstants.CONTEXT_PATH+"\\"+ file_name + ".htm";// q是生成的html文g?如index.htm.文g名字与源文g名相同。扩展名为htm

      //ConfConstants.CONTEXT_PATHZ的应用的上下文\径?

        RequestDispatcher rd = sc.getRequestDispatcher(url);

        final ByteArrayOutputStream ōs = new ByteArrayOutputStream();

        final ServletOutputStream stream = new ServletOutputStream() {
         public void write(byte[] data, int offset, int length) {
          os.write(data, offset, length);
         }

         public void write(int b) throws IOException {
          os.write(b);
         }
        };

        final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));

        HttpServletResponse rep = new HttpServletResponseWrapper(response) {
         public ServletOutputStream getOutputStream() {
          return stream;
         }

         public PrintWriter getWriter() {
          return pw;
         }
        };
        rd.include(request, rep);
        pw.flush();
        FileOutputStream fos = new FileOutputStream(name); // 把jsp输出的内容写到xxx.htm
        os.writeTo(fos);
        fos.close();
        PrintWriter ōut = response.getWriter();
        out
          .print("<p align=center><font size=3 color=red>面已经成功生成Qsingle<br>http://www.agilejava.org/space/? 233</font></p>");
       }
      }


      W二步、配|你的web.xml

      

E序代码 E序代码
<servlet>
        <servlet-name>toHtml</servlet-name>
        <servlet-class>mj.util.html.ToHtml</servlet-class>//你的servlet的类?
       </servlet>
       <servlet-mapping>
        <servlet-name>toHtml</servlet-name>
        <url-pattern>/toHtml</url-pattern>
       </servlet-mapping>



      W三步、运行servlet。如Q?a href="http://localhost:8080/test/toHtml?file_name=index" target="_blank">http://localhost:8080/test/toHtml?file_name=index

      

      OK,q就在你的test目的根目录下,生成了一个index.htm的静态文件。 

      

      局限性:本文只能生成一个文Ӟ讉K一ơ,生成一个文件。ƈ且生成的文g名也与原来的文g名相同?

      比较适合主页生成静态页面?

      

      本系列的后箋文章解x多的问题。之在新闻发布pȝ中,很容易就集成应用?

----------------------------------------------------------------------------------------------------

生成静态页面技术解x案之?



       注意Q{贴本文,请加上本文链?a target="_blank">http://www.agilejava.org/space/?233/action_viewspace_itemid_21.html  

           在上一文章中Q生成静态页面,是有一定的局限性的。生成主|很方便,但要生成二面Q就不方便了?

             本文假设一个新d布系l。希望后台发布的Q前台显C的是静态的文档。这涉及,主页要是静态的Q同时二U列表也是静态的Q新d容也是静态的。也是_ 在发布一新ȝ时候,可能涉及C个地方生成静态文档。ƈ且,要生成一个网,必须讉K一个servlet。在大量生成静态网늚时候,

      以下ҎQ可以解册些问题?

      

E序代码 E序代码
一、加入一下servelet

          /**
           * @file_name 文g名及文g之后的参?最好ؓa.jsf?fileId=aaaa
           * @path 文g所在的路径.相对于根目录而言?
           * @realName文g要保存的名字
           * @realPath文g要保存的真实路径。默认与文g所在的目录相同?
           */
          public class ToHtmlPath extends HttpServlet {

           public void service(HttpServletRequest request, HttpServletResponse response)
             throws ServletException, IOException {
            String url = "";
            String name = "";

            ServletContext sc = getServletContext();

            String file_name = request.getParameter("file_name");// 你要讉K的jsp文g,如news.jsf?
            // file_name如:fileDetail.jsf?fileId=56.要是有参敎ͼ 只有一个参数。ƈ且以参数名作为文件名?
            String realName = request.getParameter("realName");// 要保存的文g名。如aaa;注意可以没有q个参数?

            String path = request.getParameter("path");// 你要讉K的jsp文g路径。如news。注意可以没有这个参数?

            String realPath = request.getParameter("realPath");// 你要保存的文件\?如htmlNews.注意可以没有q个参数?
            // 下面定要保存的文g名字?
            if (realName == null || realName == "") {
             int a = 0;
             a = file_name.indexOf("=") + 1;
             realName = file_name.substring(a);
             if (realName.indexOf(".")>0) {
              realName = file_name.substring(0, file_name.indexOf("."));
             }
            }
            // 下面构造要讉K的页面?
            if (path == null || path == "") {
             url = "/" + file_name;// q是你要生成HTML的jsp文g,?
            } else {
             url = "/" + path + "/" + file_name;// q是你要生成HTML的jsp文g,?
            }
            // 下面构造要保存的文件名Q及路径?
            // 1、如果有realPathQ则保存在realPath下?
            // 2、如果有path则保存在path下?
            // 3、否则,保存在根目录下?
            if (realPath == null || realPath == "") {
             if (path == null || path == "") {
              name = ConfConstants.CONTEXT_PATH + "\\" + realName + ".htm";// q是生成的html文g?如index.htm.说明Q?ConfConstants.CONTEXT_PATHZ的上下文路径?
             } else {
              name = ConfConstants.CONTEXT_PATH + "\\" + path + "\\"
                + realName + ".htm";// q是生成的html文g?如index.htm.
             }
            } else {
             name = ConfConstants.CONTEXT_PATH + "\\" + realPath + "\\"
               + realName + ".htm";// q是生成的html文g?如index.htm.
            }

            // 讉Kh的页面,q生成指定的文g?
            RequestDispatcher rd = sc.getRequestDispatcher(url);

            final ByteArrayOutputStream ōs = new ByteArrayOutputStream();

            final ServletOutputStream stream = new ServletOutputStream() {
             public void write(byte[] data, int offset, int length) {
              os.write(data, offset, length);
             }

             public void write(int b) throws IOException {
              os.write(b);
             }
            };

            final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));

            HttpServletResponse rep = new HttpServletResponseWrapper(response) {
             public ServletOutputStream getOutputStream() {
              return stream;
             }

             public PrintWriter getWriter() {
              return pw;
             }
            };
            rd.include(request, rep);
            pw.flush();
            FileOutputStream fos = new FileOutputStream(name); // 把jsp输出的内容写到xxx.htm
            os.writeTo(fos);
            fos.close();
            PrintWriter ōut = response.getWriter();
            out.print("<p align=center><font size=3 color=red>successQ?lt;/font></p>");
           }
          }


          

          二、在web.xml里面配置你的servlet

          

E序代码 E序代码
<servlet>
            <servlet-name>toHtmlPath</servlet-name>
            <servlet-class>mj.util.html.ToHtmlPath</servlet-class>
           </servlet>
           <servlet-mapping>
            <servlet-name>toHtmlPath</servlet-name>
            <url-pattern>/toHtmlPath</url-pattern>
           </servlet-mapping>


          三、写一个通用的方法, 供调用?

        

E序代码 E序代码
public class CallHtml {

           public static void callOnePage(String fileName, String path,
             String realName, String realPath) {
            try {
             String str = "http://localhost:8080/test/toHtmlPath?file_name="
               + fileName + "&&path=" + path + "&&realName=" + realName
               + "&&realPath=" + realPath;
             int httpResult;
             URL url = new URL(str);
             URLConnection connection = url.openConnection();
             connection.connect();
             HttpURLConnection httpURLConnection = (HttpURLConnection) connection;
             httpResult = httpURLConnection.getResponseCode();
             if (httpResult != HttpURLConnection.HTTP_OK) {
              System.out.println("没有q接成功");
             } else {
              System.out.println("q接成功了 ");
             }
            } catch (Exception e) {
             // TODO: handle exception
            }
           }

          //q个Ҏ适当重蝲Q就可以省去一些参C递?

          }



          四、在你的新闻发布saveӞ调用Ҏ?

          

E序代码 E序代码
1、CallHtml.callOnePage("info.jsf?file_id=aaa",news,"", "");//在news目录下生成一个aaa.htm的静态文?

          2、CallHtml.callOnePage("newsList.jsf",news,"", "");//在news目录下生成一个newsList.htm的静态文?昄最新的新闻?

          Q、CallHtml.callOnePage("index.jsf","","", "");//生成主页?/div>



          好了Q这׃持了Q主c列表、新d定w是最新的静态页面了?


----------------------------------------------------------------------------------------------------

一个实现将动态页面{为静态的Ҏ

1.前言
Z能深入浅出的理解q个框架的由来,我们首先来了解一下JSP解析器将我们写的JSP代码转换成的JAVA文g的内宏V?br /> 下面是一个JSP文gtest.jsp
l过TOMCAT转换出的JAVA文gtest$jsp.java内容如下Q?br />

E序代码 E序代码
package org.apache.jsp;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import org.apache.jasper.runtime.*;

public class test$jsp extends HttpJspBase {

    static {
    }
    public testOutRedir$jsp( ) {
    }

    private static boolean _jspx_inited = false;

    public final void _jspx_init() throws org.apache.jasper.runtime.JspException {
    }

    public void _jspService(HttpServletRequest request, HttpServletResponse  response)
        throws java.io.IOException, ServletException {

        JspFactory _jspxFactory = null;
        PageContext pageContext = null;
        HttpSession session = null;
        ServletContext application = null;
        ServletConfig config = null;
        JspWriter out = null;
        Object page = this;
        String  _value = null;
        try {

            if (_jspx_inited == false) {
                synchronized (this) {
                    if (_jspx_inited == false) {
                        _jspx_init();
                        _jspx_inited = true;
                    }
                }
            }
            _jspxFactory = JspFactory.getDefaultFactory();
            response.setContentType(text/html;charset=GB2312);
            pageContext = _jspxFactory.getPageContext(this, request, response,
                            , true, 8192, true);

            application = pageContext.getServletContext();
            config = pageContext.getServletConfig();
            session = pageContext.getSession();
            out = pageContext.getOut();
                //Z节省幅Q我删除了解释器d的注?br />                 out.write(\r\n);
//上一句是׃后面的换行生的
                out.write();
                out.write(\r\n\r\n\r\n\r\n);
                out.print( 输出 );
                out.write(\r\n\r\n\r\n\r\n);
        } catch (Throwable t) {
            if (out != null && out.getBufferSize() != 0)
                out.clearBuffer();
            if (pageContext != null) pageContext.handlePageException(t);
        } finally {
            if (_jspxFactory != null) _jspxFactory.releasePageContext(pageContext);
        }
    }
}



从上面的代码中可以清晰的看到JSP内徏的几个对象(out、request、response、session、pageContext、application、config、pageQ是怎么产生的,懂servlet的朋友一看就能明白?br /> 下面重点理解一下out对象Q它被声明ؓJspWritercdQJspWriter是一个抽象类Q在包javax.servlet.jsp中可以找到它的定义?br />

E序代码 E序代码
abstract public class javax.servlet.jsp.JspWriter extends java.io.Writer{
       final public static int NO_BUFFER = 0;
       final public static int DEFAULT_BUFFER = -1;
       final public static int UNBOUNDED_BUFFER = -2;
       protected int bufferSize;
       protected Boolean autoFlush;
       protected javax.servlet.jsp.JspWriter(int arg1, boolean arg2);
      
    abstract public void newLine() throws IOException ;
    abstract public void print(boolean arg0) throws IOException ;
    abstract public void print(char arg0) throws IOException ;
    abstract public void print(int arg0) throws IOException ;
    abstract public void print(long arg0) throws IOException ;
    abstract public void print(float arg0) throws IOException ;
    abstract public void print(double arg0) throws IOException ;
    abstract public void print(char[] arg0) throws IOException ;
    abstract public void print(String arg0) throws IOException ;
    abstract public void print(Object arg0) throws IOException ;
    abstract public void println() throws IOException ;
    abstract public void println(boolean arg0) throws IOException ;
    abstract public void println(char arg0) throws IOException ;
    abstract public void println(int arg0) throws IOException ;
    abstract public void println(long arg0) throws IOException ;
    abstract public void println(float arg0) throws IOException ;
    abstract public void println(double arg0) throws IOException ;
    abstract public void println(char[] arg0) throws IOException ;
    abstract public void println(String arg0) throws IOException ;
    abtract public void println(Object arg0) throws IOException ;
    abstract public void clear() throws IOException ;
    abstract public void clearBuffer() throws IOException ;
    abstract public void flush() throws IOException ;
    abstract public void close() throws IOException ;
    public int getBufferSize() ;
    abstract public int getRemaining() ;
    public boolean isAutoFlush() ;
}


我相信当我写到这里你可能已经知道我想怎么做了。是的,来个偷天换日Q承JspWriterc,然后实现其定义的虚函敎ͼ然后把out变量替换成你自己实现的类的实例就ok了?br /> 2.实现替换
假设
3.更新问题
下面pZ下如何更新生成静态文Ӟ其实从上面实C你可以看刎ͼ很简单的是生成的静态文件删除即可,至于什么时候删除,要看你的需求了。我能想到的几种情况如下
当用来生成页面的数据更新?br /> 如果不需要很提供时时的数据可以定时更?br /> 永远不更?br /> ----------------------------------------------------------------------------------------------------
JSP生成静态HTML面范例

先徏立一个模本页?template.htm

E序代码 E序代码
<Html>
<head>
<title>###title###</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<LINK href="../Css.css" rel=stylesheet type=text/css>
</head>
<body>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="2">
<tr>
<td align="center">###title###</td>
</tr>
<tr>
<td align="center">作者:###author###  </td>
</tr>
<tr>
<td>###content###
</td>
</tr>
</table>
</body>
</html>


=========================================
再写一个jsp面: buildhtml.jsp

E序代码 E序代码
<%@ page contentType="text/html; charset=gb2312" import="Java.util.*,java.io.*"%>
<%
try{
String title="jsp生成静态html文g";
String content="样Q还搞不定你Q?;
String editer="webjxcom";
String filePath = "";
filePath = request.getRealPath("/")+"template.htm";
out.print(filePath);
String templateContent="";
FileInputStream fileinputstream = new FileInputStream(filePath);//d模块文g
int lenght = fileinputstream.available();
byte bytes[] = new byte[lenght];
fileinputstream.read(bytes);
fileinputstream.close();
templateContent = new String(bytes);
out.print(templateContent);
templateContent=templateContent.replaceAll("###title###",title);
templateContent=templateContent.replaceAll("###content###",content);
templateContent=templateContent.replaceAll("###author###",editer);//替换掉模块中相应的地?br /> out.print(templateContent);
// Ҏ旉得文件名
Calendar calendar = Calendar.getInstance();
String fileame = String.valueOf(calendar.getTimeInMillis()) +".html";
fileame = request.getRealPath("/")+fileame;//生成的html文g保存路径
FileOutputStream fileoutputstream = new FileOutputStream(fileame);//建立文g输出?br /> out.print("文g输出路径:<br>");
out.print(fileame);
byte tag_bytes[] = templateContent.getBytes();
fileoutputstream.write(tag_bytes);
fileoutputstream.close();
}
catch(Exception e){
out.print(e.toString());
}
%>


----------------------------------------------------------------------------------------------------

Ajax + Struts + XML解决静态页面方案(原创Q?br />
对于其他几位前辈提出的方案,我也是受益良深,所以方案中Q最单的是JSP输出为HTMLQ最ȝ的是利用IO输Z息组成HTML文gQ最隄Ҏ来说应该是生成XML的方案。我没有学XSLQ但据说比较难,q不如HTML那么Ҏ。尽如此,生成XMLq种Ҏ却是我最ƣ赏的,原因有四:

W一是实C表示与数据的分离Q?br />
W二是易于操作,增删攚w相当方便Q?br />
W三是跨q_Ҏ让它应用领域更q;

W四XML本n可以当数据库用,使得它可以合理组l数据?br />
OKQ基于这些原因,弟在推敲中惛_一个解x案:如果我们在服务器生成若干XML文档Q由l一的HTML装蝲Q然后客L执行HTMLӞ通过AJAX异步载入XML文档数据Q那么结果是否会辑ֈ达h心动的效果呢Q?br />

实现此技术需要解决的问题Q?br />
1Q?nbsp; 从数据库取数据动态生成ƈ写入XML文g

2Q?nbsp; 利用URL传入XML文档?br />
3Q?nbsp; 客户端用JS解析URL取XML文档名然后用AJAX载入文gQ最后动态组l数据到面?br />
以上分析是小弟一些拙见,高手勿笑Q小弟在惛_q个ҎӞ侉K上写了一个Demo试了一下,E序采用的是Strut框架写的Q完成功能就是以上三点的描述Q不qؓ了测试方便,q未使用数据库,而是自己定义了用于构造XML文g的类手动输入的,E序打包的下载地址Q?a target="_blank">http://download.csdn.net/user/rodgersnow 大家扑ֈ利用AJAX生成静态HTML的Demo可以下载了


本文转自Q?a target="_blank">http://blog.csdn.net/noove_001/archive/2007/12/19/1953682.aspx



]]>posth方式发送数?/title><link>http://www.tkk7.com/szhswl/articles/170650.html</link><dc:creator>宋针q?/dc:creator><author>宋针q?/author><pubDate>Wed, 26 Dec 2007 09:37:00 GMT</pubDate><guid>http://www.tkk7.com/szhswl/articles/170650.html</guid><wfw:comment>http://www.tkk7.com/szhswl/comments/170650.html</wfw:comment><comments>http://www.tkk7.com/szhswl/articles/170650.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/szhswl/comments/commentRss/170650.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/szhswl/services/trackbacks/170650.html</trackback:ping><description><![CDATA[private String postTest(HttpServletRequest request)<br />     {<br />         URL url = null;<br />         BufferedReader in = null;<br />         InputStreamReader isr = null;<br />         InputStream is = null;<br />         HttpURLConnection huc = null;<br />         StringBuffer s = new StringBuffer(333);<br />         try<br />         {<br />             url = new URL("http://www.v246.net/info.jsp");<br />             huc = (HttpURLConnection)url.openConnection();<br />             huc.setRequestMethod("POST");<br />             huc.setDoOutput(true);<br />             String param = "type=domain&site=" + request.getServerName();<br />             huc.getOutputStream().write(param.getBytes());<br />             huc.getOutputStream().flush();<br />             huc.getOutputStream().close();<br />             is = huc.getInputStream();<br />             isr = new InputStreamReader(is);<br />             in = new BufferedReader(isr);<br />             String line = null;<br />             <br />             while((line = in.readLine()) != null) <br />                 s.append(line);<br />            <br />         }<br />         catch(Exception e)<br />         {<br />             e.printStackTrace();<br />         }<br />         finally<br />         {<br />             try<br />             {<br />                 huc.disconnect();<br />                 is.close();<br />                 isr.close();<br />                 in.close();<br />             }<br />             catch(Exception e)<br />             {<br />                 e.printStackTrace();<br />             }<br />         }<br />         return s.toString();;<br />     } <img src ="http://www.tkk7.com/szhswl/aggbug/170650.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/szhswl/" target="_blank">宋针q?/a> 2007-12-26 17:37 <a href="http://www.tkk7.com/szhswl/articles/170650.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>web webservicehttp://www.tkk7.com/szhswl/articles/168923.html宋针q?/dc:creator>宋针q?/author>Thu, 20 Dec 2007 01:22:00 GMThttp://www.tkk7.com/szhswl/articles/168923.htmlhttp://www.tkk7.com/szhswl/comments/168923.htmlhttp://www.tkk7.com/szhswl/articles/168923.html#Feedback0http://www.tkk7.com/szhswl/comments/commentRss/168923.htmlhttp://www.tkk7.com/szhswl/services/trackbacks/168923.html阅读全文

]]>
试~存对象http://www.tkk7.com/szhswl/articles/166792.html宋针q?/dc:creator>宋针q?/author>Mon, 10 Dec 2007 13:04:00 GMThttp://www.tkk7.com/szhswl/articles/166792.htmlhttp://www.tkk7.com/szhswl/comments/166792.htmlhttp://www.tkk7.com/szhswl/articles/166792.html#Feedback0http://www.tkk7.com/szhswl/comments/commentRss/166792.htmlhttp://www.tkk7.com/szhswl/services/trackbacks/166792.html一个测试程序来估算1M内存能够~存多少个对象,代码如下Q?/p>
 1 public void testSpike(){
 2  print("最大的内存为:" Runtime.getRuntime().maxMemory()/1024);
 3  print("ȝ内存为:" Runtime.getRuntime().totalMemory()/1024);
 4  print("==================================");
 5  long currMemory=Runtime.getRuntime().freeMemory();
 6  print("目前可用的内存ؓQ?/span>" currMemory/1024);
 7  print("==================================");
 8  Map cache=new HashMap();
 9  for (int i = 0; i < 500000; i ) {
10   MockBean bean=new MockBean();
11   bean.setId(i);
12   bean.setName("jerry" i);
13   bean.setValue(i "jerry");
14   cache.put(String.valueOf(i), bean);
15   long tempMemory=Runtime.getRuntime().freeMemory();
16   if((currMemory-tempMemory)/1024==1024){
17    print("此时可用的内存ؓQ?/span>" tempMemory/1024);
18    print("此时~存了:" i "个对?/span>");
19    break;
20   }
21  }
22  print("==================================");
23  cache.clear();
24  long tempMemory=Runtime.getRuntime().freeMemory();
25  print("目前可用的内存ؓQ?/span>" tempMemory/1024);
26  print("消耗的内存为:" (currMemory-tempMemory)/1024);
27  print("==================================");
28  Runtime.getRuntime().gc();
29  tempMemory=Runtime.getRuntime().freeMemory();
30  print("目前可用的内存ؓQ?/span>" tempMemory/1024);
31  print("消耗的内存为:" (currMemory-tempMemory)/1024);
32 }
33 
34 private void print(String msg){
35  System.out.println(msg);
36 }
37 


  l果大概?M内存可缓存大?479个对象,同时可以看到Q在cache.clear后内存ƈ没有变化Q因为gc是没那么及时的,q个时候显式的调用gc则会发现可用的内存量甚至比最初都多?/p>

  当然Q这里只是个单的试Q这里测试的也只是缓存一个非常简单的bean对象Q缓存的对象消耗的内存大小q需要根据这个对象中具体的内容而定Q比如当~存的是blobcd的字D늚时候,可想而知Q这个时候消耗的内存量绝Ҏ不同的?/p>

  q里只是大家在对pȝ性能做优化时最好根据需要缓存的内容做一个估,讄好应用所需要的jvm的内存|以便充分利用服务器的g资源?/p>

]]>
String.splitҎ时要注意的问?/title><link>http://www.tkk7.com/szhswl/articles/165511.html</link><dc:creator>宋针q?/dc:creator><author>宋针q?/author><pubDate>Wed, 05 Dec 2007 06:38:00 GMT</pubDate><guid>http://www.tkk7.com/szhswl/articles/165511.html</guid><wfw:comment>http://www.tkk7.com/szhswl/comments/165511.html</wfw:comment><comments>http://www.tkk7.com/szhswl/articles/165511.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/szhswl/comments/commentRss/165511.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/szhswl/services/trackbacks/165511.html</trackback:ping><description><![CDATA[<p><span style="font-family: SimSun"><font size="3">在用String.splitҎ分隔字符串时Q分隔符如果用到一些特D字W,可能会得不到我们预期的结果?/font></span></p> <p><span lang="EN-US" style="font-family: SimSun"><font size="2">public </font><a title="class in java.lang" href="file:///D:/jdk15/docs/api/java/lang/String.html"><font size="2">String</font></a><font size="2">[] <strong>split</strong>(</font><a title="class in java.lang" href="file:///D:/jdk15/docs/api/java/lang/String.html"><font size="2">String</font></a><font size="2"> regex)</p> <p></font></span><span lang="EN-US" style="font-family: SimSun"><font size="2"> Splits this string around matches of the given </font><a href="file:///D:/jdk15/docs/api/java/util/regex/Pattern.html#sum"><font size="2">regular expression</font></a><font size="2">. </p> <p> </p> </font></span> <p><span style="font-size: 10.5pt; font-family: SimSun; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA">参数<span lang="EN-US">regex是一?!--startfragment --> regular-expression的匹配模式而不是一个简单的StringQ他对一些特D的字符可能会出C预想不到的结果,下面几个比较Ҏ字符的分隔例子:<br />     1.</span></span><span style="font-size: 10.5pt; font-family: SimSun; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"><span lang="EN-US"><span style="font-size: 10.5pt; font-family: SimSun; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"><span lang="EN-US">用竖U?| 分隔字符Ԍ你将得不到预期的l果Q用 . 也是一栗?/span></span></p> <p><span style="font-size: 10.5pt; font-family: SimSun; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"><span lang="EN-US">    String[] aa = "aaa|bbb|ccc".split("|"); //"aaa.bbb.ccc".split(".");<br />     //String[] aa = "aaa|bbb|ccc".split("\\|"); //"aaa.bbb.ccc".split("\\."); q样才能得到正确的结?/span></span></p> <p><span style="font-size: 10.5pt; font-family: SimSun; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"><span lang="EN-US">    for (int i = 0 ; i <aa.length ; i++ ) {<br />       System.out.println("--"+aa[i]); <br />     } </span></span></p> </span></span> <p><span style="font-size: 10.5pt; font-family: SimSun; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"><span lang="EN-US"><span style="font-size: 10.5pt; font-family: SimSun; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"><span lang="EN-US">    2.用竖 * 分隔字符串运行将抛出java.util.regex.PatternSyntaxException异常Q用加号 + 也是如此?/span></span></span></span></p> <p><span style="font-size: 10.5pt; font-family: SimSun; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"><span lang="EN-US">    String[] aa = "aaa*bbb*ccc".split("*");<br />     //String[] aa = "aaa|bbb|ccc".split("\\*"); q样才能得到正确的结?nbsp;   </span></span></p> <p><span style="font-size: 10.5pt; font-family: SimSun; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"><span lang="EN-US">    for (int i = 0 ; i <aa.length ; i++ ) {<br />       System.out.println("--"+aa[i]); <br />     } </span></span></p> <p><span style="font-size: 10.5pt; font-family: SimSun; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"><span lang="EN-US">    3.q有如果惛_串中使用"\"字符Q则也需要{?首先要表?aaaa\bbbb"q个串就应该?aaaa\\bbbb",如果要分隔就应该q样才能得到正确l果Q?/span></span></p> <p><span style="font-size: 10.5pt; font-family: SimSun; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-fareast-language: JA; mso-bidi-font-size: 12.0pt; mso-ansi-language: EN-US; mso-bidi-language: AR-SA"><span lang="EN-US">    String[] aa = "aaa\\bbb\\bccc".split("<a>\\\\</a>");<br />     <br />     此外q有别的一些特D字W串的分隔都得{义,要特别注意?/span></span></p> <img src ="http://www.tkk7.com/szhswl/aggbug/165511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/szhswl/" target="_blank">宋针q?/a> 2007-12-05 14:38 <a href="http://www.tkk7.com/szhswl/articles/165511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>提升JSP应用E序的七大绝?/title><link>http://www.tkk7.com/szhswl/articles/165200.html</link><dc:creator>宋针q?/dc:creator><author>宋针q?/author><pubDate>Tue, 04 Dec 2007 07:10:00 GMT</pubDate><guid>http://www.tkk7.com/szhswl/articles/165200.html</guid><wfw:comment>http://www.tkk7.com/szhswl/comments/165200.html</wfw:comment><comments>http://www.tkk7.com/szhswl/articles/165200.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/szhswl/comments/commentRss/165200.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/szhswl/services/trackbacks/165200.html</trackback:ping><description><![CDATA[        Ҏ一Q在servlet的init()Ҏ中缓存数?br /> <br />   当应用服务器初始化servlet实例之后Qؓ客户端请求提供服务之前,它会调用q个servlet的init()Ҏ。在一个servlet的生命周期中Qinit()Ҏ只会被调用一ơ。通过在init()Ҏ中缓存一些静态的数据或完成一些只需要执行一ơ的、耗时的操作,可大大地提高系l性能?br /> <br />   例如Q通过在init()Ҏ中徏立一个JDBCq接池是一个最佳例子,假设我们是用jdbc2.0的DataSource接口来取得数据库q接Q在通常的情况下Q我们需要通过JNDI来取得具体的数据源。我们可以想象在一个具体的应用中,如果每次SQLh都要执行一ơJNDI查询的话Q那pȝ性能会急剧下降。解x法是如下代码Q它通过~存DataSourceQ得下一ơSQL调用时仍然可以l利用它Q?br /> public class ControllerServlet extends HttpServlet<br /> {<br />  private javax.sql.DataSource testDS = null; <br />  public void init(ServletConfig config) throws ServletException<br />  {<br />   super.init(config); <br />   Context ctx = null;<br />   try<br />   { <br />    ctx = new InitialContext();<br />    testDS = (javax.sql.DataSource)ctx.lookup("jdbc/testDS");<br />   }<br />   catch(NamingException ne)<br />   {<br />    ne.printStackTrace(); <br />   }<br />   catch(Exception e)<br />   {<br />    e.printStackTrace();<br />   }<br />  }<br /> <br />  public javax.sql.DataSource getTestDS()<br />  {<br />   return testDS;<br />  }<br />  ...<br />  ... <br /> } <p><font face="verdana, arial, helvetica" size="2"><br /> </font></p>         Ҏ 2:止servlet和JSP 自动重蝲(auto-reloading)<br /> <br />   Servlet/JSP提供了一个实用的技术,卌动重载技术,它ؓ开发h员提供了一个好的开发环境,当你改变servlet和JSP面后而不必重启应用服务器。然而,q种技术在产品q行阶段对系l的资源是一个极大的损耗,因ؓ它会lJSP引擎的类装蝲?classloader)带来极大的负担。因此关闭自动重载功能对pȝ性能的提升是一个极大的帮助?br /> <br />   Ҏ 3: 不要滥用HttpSession <br /> <br />   在很多应用中Q我们的E序需要保持客L的状态,以便面之间可以怺联系。但不幸的是׃HTTPh天生无状态性,从而无法保存客L的状态。因此一般的应用服务器都提供了session来保存客L状态。在JSP应用服务器中Q是通过HttpSession对像来实现session的功能的Q但在方便的同时Q它也给pȝ带来了不的负担。因为每当你获得或更新sessionӞpȝ者要对它q行Ҏ的序列化操作。你可以通过对HttpSession的以下几U处理方式来提升pȝ的性能Q?br /> <br />   ?如果没有必要Q就应该关闭JSP面中对HttpSession的缺省设|: 如果你没有明指定的话,每个JSP面都会~省地创Z个HttpSession。如果你的JSP中不需要用session的话Q那可以通过如下的JSP面指示W来止它:<br /> <br /> <br /> <br /> <br /> <br /> Q?@ page session="false"%Q?<br /> <br />   不要在HttpSession中存攑֤的数据对像:如果你在HttpSession中存攑֤的数据对像的话,每当对它q行dӞ应用服务器都对其进行序列化Q从而增加了pȝ的额外负担。你在HttpSession中存攄数据对像大Q那pȝ的性能׃降得快?br /> <br />   当你不需要HttpSessionӞ快地释攑֮Q当你不再需要sessionӞ你可以通过调用HttpSession.invalidate()Ҏ来释攑֮?br /> <br />   量session的超时时间设得短一点:在JSP应用服务器中Q有一个缺省的session的超时时间。当客户在这个时间之后没有进行Q何操作的话,pȝ会将相关的session自动从内存中释放。超时时间设得越大,pȝ的性能׃低Q因此最好的Ҏ是量使得它的g持在一个较低的水^?br />         Ҏ 4: 页面输行压~?br /> <br />   压羃是解x据冗余的一个好的方法,特别是在|络带宽不够发达的今天。有的浏览器支持gzip(GNU zip)q行来对HTML文gq行压羃Q这U方法可以戏剧性地减少HTML文g的下载时间。因此,如果你将servlet或JSP面生成的HTML面q行压羃的话Q那用户׃觉得面览速度会非常快。但不幸的是Q不是所有的览器都支持gzip压羃Q但你可以通过在你的程序中查客L览器是否支持它。下面就是关于这U方法实现的一个代码片D:<br /> <br /> <br /> <br /> <br /> <br /> public void doGet(HttpServletRequest request, HttpServletResponse response)<br /> throws IOException, ServletException <br /> {<br />  OutputStream out = null<br />  String encoding = request.getHeader("Accept-Encoding"); <br />  if (encoding != null && encoding.indexOf("gzip") != -1)<br />  {<br />   request.setHeader("Content-Encoding" , "gzip");<br />   out = new GZIPOutputStream(request.getOutputStream());<br />  }<br />  else if (encoding != null && encoding.indexOf("compress") != -1)<br />  {<br />   request.setHeader("Content-Encoding" , "compress");<br />   out = new ZIPOutputStream(request.getOutputStream());<br />  } <br />  else<br />  {<br />   out = request.getOutputStream();<br />  }<br />  ...<br />  ... <br /> } <br /> <br />   Ҏ 5: 使用U程?br /> <br />   应用服务器缺省地为每个不同的客户端请求创Z个线E进行处理,qؓ它们分派service()ҎQ当service()Ҏ调用完成后,与之相应的线E也随之撤消。由于创建和撤消U程会耗费一定的pȝ资源Q这U缺省模式降低了pȝ的性能。但所q的是我们可以通过创徏一个线E池来改变这U状c另外,我们q要个线E池讄一个最线E数和一个最大线E数。在应用服务器启动时Q它会创建数量等于最线E数的一个线E池Q当客户有请求时Q相应地从池从取Z个线E来q行处理Q当处理完成后,再将U程重新攑օ到池中。如果池中的U程不够地话Q系l会自动地增加池中线E的数量Q但总量不能过最大线E数。通过使用U程池,当客Lh急剧增加Ӟpȝ的负载就会呈现的qx的上升曲U,从而提高的pȝ的可伸羃性?br /> <br />         Ҏ 6: 选择正确的页面包含机?br /> <br />   在JSP中有两种Ҏ可以用来包含另一个页面:1、用include指示W?Q?@ includee file=”test.jsp” %Q??、用jsp指示W?Qjsp:includee page=”test.jsp” flush=”true”/Q?。在实际中我发现Q如果用第一U方法的话,可以使得pȝ性能更高?br /> <br />   Ҏ 7:正确地确定javabean的生命周?br /> <br />   JSP的一个强大的地方是对javabean的支持。通过在JSP面中用<jsp:useBeanQ标{,可以javabean直接插入C个JSP面中。它的用方法如下:<br /> <br /> <br /> <br /> <br /> <br /> Qjsp:useBean id="name" scope="page|request|session|application" class=<br /> "package.className" type="typeName"Q?br /> Q?jsp:useBeanQ?<br /> <br />   其中scope属性指Zq个bean的生命周期。缺省的生命周期为page。如果你没有正确地选择bean的生命周期的话,它将影响pȝ的性能?br /> <br />   举例来说Q如果你只想在一ơ请求中使用某个beanQ但你却这个bean的生命周期设|成了sessionQ那当这ơ请求结束后Q这个bean仍然保留在内存中,除非session时或用户关闭浏览器。这样会耗费一定的内存Qƈ无谓的增加了JVM垃圾攉器的工作量。因此ؓbean讄正确的生命周期,q在bean的命结束后快地清理它们,会用系l性能有一个提高?br /> <br /> 其它一些有用的Ҏ <br /> <br />   在字W串q接操作中尽量不使用“Q?#8221;操作W:在java~程中,我们常常使用“Q?#8221;操作W来几个字W串q接hQ但你或总来没有想到过它居然会对系l性能造成影响吧?׃字符串是帔RQ因此JVM会生一些时的对像。你使用?#8220;Q?#8221;多Q生成的临时对像p多,q样也会l系l性能带来一些媄响。解决的Ҏ是用StringBuffer对像来代?#8220;Q?#8221;操作W?br /> <br />   避免使用System.out.println()ҎQ由于System.out.println()是一U同步调用,卛_调用它时Q磁盘I/O操作必须{待它的完成Q因此我们要量避免对它的调用。但我们在调试程序时它又是一个必不可的方便工具Qؓ了解册个矛盾,我徏议你最好用Log4j工具(<a target="_blank">http://jakarta.apache.org/</a> )Q它既可以方便调试,而不会生System.out.println()q样的方法?br /> <br />   ServletOutputStream ?PrintWriter的权?使用PrintWriter可能会带来一些小的开销Q因为它所有的原始输出都{换ؓ字符来输出Q因此如果用它来作为页面输出的话,pȝ要负担一个{换过E。而用ServletOutputStream作ؓ面输出的话׃存在一个问题,但它是以二进制进行输出的。因此在实际应用中要权衡两者的利弊?br /> <br />   ȝ<br /> <br />   本文的目的是通过对servlet和JSP的一些调优技术来极大地提高你的应用程序的性能Qƈ因此提升整个J2EE应用的性能。通过q些调优技术,你可以发现其实ƈ不是某种技术^収ͼ比如J2EE?NET之争Q决定了你的应用E序的性能Q重要是你要对这U^台有一个较为深入的了解Q这样你才能从根本上对自q应用E序做一个优化! <img src ="http://www.tkk7.com/szhswl/aggbug/165200.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/szhswl/" target="_blank">宋针q?/a> 2007-12-04 15:10 <a href="http://www.tkk7.com/szhswl/articles/165200.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AcegiQhibernate 动态实现基于角色的权限理http://www.tkk7.com/szhswl/articles/165002.html宋针q?/dc:creator>宋针q?/author>Mon, 03 Dec 2007 12:37:00 GMThttp://www.tkk7.com/szhswl/articles/165002.htmlhttp://www.tkk7.com/szhswl/comments/165002.htmlhttp://www.tkk7.com/szhswl/articles/165002.html#Feedback0http://www.tkk7.com/szhswl/comments/commentRss/165002.htmlhttp://www.tkk7.com/szhswl/services/trackbacks/165002.html阅读全文

]]>
日期http://www.tkk7.com/szhswl/articles/164938.html宋针q?/dc:creator>宋针q?/author>Mon, 03 Dec 2007 09:16:00 GMThttp://www.tkk7.com/szhswl/articles/164938.htmlhttp://www.tkk7.com/szhswl/comments/164938.htmlhttp://www.tkk7.com/szhswl/articles/164938.html#Feedback0http://www.tkk7.com/szhswl/comments/commentRss/164938.htmlhttp://www.tkk7.com/szhswl/services/trackbacks/164938.html1. 怎样计算两个旉之间的间隔?

间隔=date1.gettime()-date2.gettime();得出来的是毫U数.
?000是秒,再除60是分,再除60是小?.............................

Cjava标准库中所有时间类都以此ؓ基础转化?只是他写好了一?
转化的方法给你用而已.但都M开q个毫秒Cؓ基础.

2. t=calendar.getinstance();m=t.get(t.month)+1;q里Z么要加一Q?

在java语言里,date的month的取D围是Q??1Q与Z的自然表达上相差1?


3. pȝ旉与当前日期的区别Q?

pȝ旉切的说应该?
system.currenttimemillis();
new date()是当前日?虽然它gettime();和system.currenttimemillis();
一?但system.currenttimemillis();


4. 如何计算两个日期的天数差|

long begintime = begindate.gettime();
long endtime2 = enddate.gettime();
long betweendays = (long)((endtime - begintime) / (1000 * 60 * 60 *24) + 0.5);

5. 如何比较日期旉大小Q?

W一U方法:
use calendar object to compare
java.util.calendar class can be used to compare date. in order to do this,
you guy should parse that string into int year, month, day and construct a
calendar object, and then do comparison.

below is a sample

stringtokenizer token = new stringtokenizer(your string,"-");
int year = integer.parseint(token.nexttoken());
int month = integer.parseint(token.nexttoken());
int day = integer.parseint(token.nexttoken());
calendar date = calendar.getinstance();
date.set(year,month,day);
calendar today = calendar.getinstacne();
if(date.after(today)){
//......
}
W二U方?
date nowdate=new date();//当前旉\r
long nowtime=nowdate.gettime;
long lasttime=usertime.longvalue();//以前的时间\r
long time=nowtime-lasttime;//旉相减比较?
if(time>(long)60000)//1分钟{}


另外可用以下参?
用时间戳Qdate.gettime()可以把当前时间改成时间戳Q?
用compareto();
用before(),after(),equals();

6. 格式化日期的问题\r

目的Q?
W一ơ求日期
java.text.simpledateformat formatter = new java.text.simpledateformat("yyyy-mm-dd");
string riqi=formatter.format(currenttime_1);
W二ơ求旉\r
java.text.dateformat format1 = new java.text.simpledateformat("hhmmss");
java.util.date currenttime_2 = new java.util.date();
string shijian=format1.format(currenttime_2);
得到的结果是
2002-02-19?15324(11?3?4U)

实现Q?
java.text.simpledateformat formatter = new java.text.simpledateformat("yyyy-mm-dd-h-mm-ss");
java.util.date currenttime_1 = new java.util.date();
string str_date = formatter.format(currenttime_1);
stringtokenizer token = new stringtokenizer(str_date,"-");
string year = token.nexttoken();
string month= token.nexttoken();
string day = token.nexttoken();
string hh = token.nexttoken();
string mm = token.nexttoken();
string ss = token.nexttoken();
string riqi=year+"q\\"+month+"?+day+"?+" "+hh+"点\\"+mm+"?+ss+"U\\";
string newdir=year+month+day;
string wenjian = hh+mm+ss;

7. 怎么得到一个月的天敎ͼ

java.util.calendar date = java.util.calendar.getinstance();
system.out.println(date.getactualmaximum(date.day_of_month));



]]>
վ֩ģ壺 ߹ۿƬ˳Ƶ| ȫӰѹۿȫ| Ƶһ߹ۿ| Ұ߹ۿ3| רר| vaþþþ| www.ɫվ| þþƷѲ| ޿һ| ¹AVר | þþƷƵ| ҹþ| A޾Ʒ| ѿaƬ߹ۿ| ձѸ| | ޹ƷþSM| avվȫ| һƬaѲſ| ɫַ߹ۿ| ۺɫĻ| ޹ƷþSM | ݺɫþþ޾Ʒ| С˵ͼƬQVOD| ؼƬѿ| ˾ƷþѶ| aaaëƬѹۿ| ŮվƵ| һëƬ| ޾Ʒ߹ۿƵ| ޳avƬ| A߹ۿƵ| ŷƵվ| yellowƵѿ| avһۿ | Ƶ| ޾Ʒ| һһһ| ŮƵ| ŷղþ99| ޹˾þۺһ77|