<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-95  評論-31  文章-10  trackbacks-0
     

    客戶端使用java
    服務端使用C#

    客戶端數據庫SqlServer2000編碼簡體中文GBK
    服務端數據庫SqlServer2008編碼SQL_Latin1_General_CP1_CI_AS

    客戶端取出數據使用new String("消息".getBytes("GBK"),"UTF-8");進行轉換
    發送的時候使用PrintWriter pw = new PrintWriter(socket.getOutputStream);
    服務端只接收UTF-8編碼顯示為亂碼。

    后來參考資料,才明白new String("消息".getBytes("GBK"),"UTF-8");這種方式只是在JVM內部轉換,那么一旦涉及到流比如數據庫、文件等就要使用java IO進行轉換。也就是說JVM內部編碼unicode和外部os編碼的轉換。
    使用下面方式就沒有問題了
    字符流方式發送
    PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream),"UTF-8")),false);
    字節流方式發送
    PrintStream ps = new PrintStream(socket.getOutputStream(),false,"UTF-8");
    false表示手動pw.flush();

    posted @ 2010-03-18 21:18 朔望魔刃 閱讀(1566) | 評論 (0)編輯 收藏
    首先下載java service wrapper工具
    http://sourceforge.net/project/showfiles.php?group_id=39428

    步驟:
    1、解壓縮java service wrapper包,假設目錄為:wrapper_home
    2、建立一個目錄比如:D盤server文件夾里面建立bin、conf、logs、lib文件夾。
    3、將wrapper_home/bin目錄里wrapper.exe
       將wrapper_home/src/bin目錄里App.bat.in
       將wrapper_home/src/bin目錄里InstallApp-NT.bat.in
       將wrapper_home/src/bin目錄里UninstallApp-NT.bat.in
       統一拷貝至server/bin目錄里,并去掉后綴名in。
       將wrapper_home/src/conf目錄wrapper.conf.in拷貝至server/conf目錄里去掉后綴名in
       再將wrapper_home/lib/目錄里面的wrapper.jar和wrapper.dll拷貝至server/lib目錄里面
    4、將你的應用程序打成jar包后放入server/lib目錄里面,如果程序依賴第三方架包,同樣將jar包放入該目錄下。
    5、配置server/conf/wrapper.conf文件。
    主要修改以下幾項即可:
    #你的JVM位置:
    wrapper.java.command=%JAVA_HOME%\bin\java
    #classpath:里面添加上你要執行的應用程序jar,以及依賴的第三方jar,有多個依次類推
    wrapper.java.classpath.1=../lib/應用程序.jar
    wrapper.java.classpath.2=../lib/wrapper.jar
    wrapper.java.classpath.3=../bin/第三方.jar
    # Java Library Path (location of Wrapper.DLL or libwrapper.so)
    wrapper.java.library.path.1=../lib
    #MAIN CLASS 此處決定了使用Java Service Wrapper的方式
    wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp
    上面紅色字體不能修改成你的執行程序路徑比如
    service.server.Serverbegin 否則打成服務后啟動會提示如下錯誤:

    ERROR  | wrapper  | 2010/01/07 15:13:10 | JVM did not exit on request, terminated
    STATUS | wrapper  | 2010/01/07 15:13:15 | Launching a JVM...
    INFO   | jvm 3    | 2010/01/07 15:13:16 | [WARN]2010-01-07 15:13:16--服務端啟動
    ERROR  | wrapper  | 2010/01/07 15:13:45 | Startup failed: Timed out waiting for a signal from the JVM.
    ADVICE | wrapper  | 2010/01/07 15:13:45 | 
    ADVICE | wrapper  | 2010/01/07 15:13:45 | ------------------------------------------------------------------------
    ADVICE | wrapper  | 2010/01/07 15:13:45 | Advice:
    ADVICE | wrapper  | 2010/01/07 15:13:45 | The Wrapper consists of a native component as well as a set of classes
    ADVICE | wrapper  | 2010/01/07 15:13:45 | which run within the JVM that it launches.  The Java component of the
    ADVICE | wrapper  | 2010/01/07 15:13:45 | Wrapper must be initialized promptly after the JVM is launched or the
    ADVICE | wrapper  | 2010/01/07 15:13:45 | Wrapper will timeout, as just happened.  Most likely the main class
    ADVICE | wrapper  | 2010/01/07 15:13:45 | specified in the Wrapper configuration file is not correctly initializing
    ADVICE | wrapper  | 2010/01/07 15:13:45 | the Wrapper classes:
    ADVICE | wrapper  | 2010/01/07 15:13:45 |     service.hl7Server.HuaHaiHl7Server
    ADVICE | wrapper  | 2010/01/07 15:13:45 | While it is possible to do so manually, the Wrapper ships with helper
    ADVICE | wrapper  | 2010/01/07 15:13:45 | classes to make this initialization processes automatic.
    ADVICE | wrapper  | 2010/01/07 15:13:45 | Please review the integration section of the Wrapper's documentation
    ADVICE | wrapper  | 2010/01/07 15:13:45 | for the various methods which can be employed to launch an application
    ADVICE | wrapper  | 2010/01/07 15:13:45 | within the Wrapper:
    ADVICE | wrapper  | 2010/01/07 15:13:45 |     http://wrapper.tanukisoftware.org/doc/english/integrate.html
    #你的Java應用類,
    wrapper.app.parameter.1= service.Server.Serverbegin
    # 服務名
    wrapper.ntservice.name=server
    # Display name of the service
    wrapper.ntservice.displayname=server
    # 服務描述
    wrapper.ntservice.description=receive message
    其他的配置根據你的需要改變即可
    6.  對以上配置的App.bat進行測試,運行App.bat,dos窗口中顯示;
    7.  對以上配置的服務進行測試,運行server/bin/InstallApp-NT.bat將把你的應用(此處為server)安裝到Win32系統服務中了。
    8.  打開控制面板-管理程序-服務,看到server已經在系統服務中了,其他用法就與我們熟悉的Windows服務一樣了。

    bin/App.bat  控制臺方式運行程序

    bin/InstallApp-NT.bat  安裝服務

    bin/UninstallApp-NT.bat 刪除服務
    posted @ 2010-01-18 13:10 朔望魔刃 閱讀(3411) | 評論 (2)編輯 收藏
    網上流傳了大量大量的如何導出,結果都不太實用。
    網上流傳通用的js導出word代碼如下:
         function method1(){
          var oWD = new ActiveXObject("Word.Application"); 
          oWD.WindowState = 2; 
          var oDC = oWD.Documents.Add("",0,1); 
          var oRange =oDC.Range(0,1); 
          var sel = document.body.createTextRange(); 
          sel.moveToElementText(huahai);  //里面參數為div的id或者form的id或者table的id或者...表示將此范圍內輸出word
          sel.select(); 
          sel.execCommand("Copy"); 
          oRange.Paste(); 
          oWD.Application.Visible = true; 
          }
    <body>
    <div id="huahai">
    </div>
    </body>
    <input type="button" onclick="javascript:method1();" value="導出為WORD">
    以上方法可導出任意jsp(包括圖片)但是除了以下內容:
    凡是讓用戶輸入帶有<input>或者<textarea>等等等標簽輸入框地方就不能導出成word了。
    比如一個table(如下所示),如果使用上述辦法就不能導出。
    如果去掉<input>標簽那么就可以導出,但是問題就是我就是要全部導出.......
    <table id="table1">
    <tr>
    <td>姓名</td><td><input type="text" size="5"></td>
    <td>年齡</td><td><input type="text" size="5"></td>
    </tr>
    <table>
    解決辦法:
    下面給出一個JSP,里面包含div、form、table、image、以及各種<input>標簽導出為word
    <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    </head>
    <body>
    <form action="" id="huahai" >
      <div align="center">
       <div align="center" id="div_content">
        <h2>
         <font color="red">測試導出word</font>
        </h2>
        <h4>
         <font color="red">測試導出word</font>
        </h4>
        </div>
    <table id="table1">
    <tr>
    <td>姓名</td><td><input type="text" size="5"></td>
    <td>年齡</td><td><input type="text" size="5"></td>
    </tr>
    <table>
    <div id="img">
        <hr/>
        <img src="MM.jpg" height="45%" width="30%">
        </br>
    </div>
     <div id="text_area">
        <textarea name="warn_task" wrap="off" cols="80" rows="12">區域內容:</textarea>
        </textarea>
        <hr />
    </div>
    <input type="button" onclick="javascript:test();" value="測試">
    </div>
     </form>
    </body>
    </html>
    下面給出js代碼(加入<head>標簽之間):
    <script type="text/javascript">
       var oWD = new ActiveXObject("Word.Application");
       var oDC = oWD.Documents.Add("",0,1);
       var oRange =oDC.Range(0,1);
    function word(id,way){
       var sel = document.body.createTextRange();
       sel.moveToElementText(id);
       sel.select();
       sel.execCommand(way);
       oRange.Paste();
    }

    function test(){
       var table=document.getElementById('table1');
       var table_cells = table.rows[0].cells;
       var form_elements = document.getElementById('huahai');
       word(div_content,'Copy'); //調用word函數,將div_content范圍內容拷貝到word里面。
       for(i=0;i<table_cells.length;i++){
           oRange =oDC.Range(oRange.End-1,oRange.End); //設定位置依次由上往下、從左往右
           var sel = document.body.createTextRange();
           sel.moveToElementText(table_cells[i]); //將單元格內容復制到word
           sel.select();
           sel.execCommand("Copy");
           sel.moveEnd('character');  //不加這句導出不了,里面參數為character、不是copy
           oRange.Paste();
           oRange =oDC.Range(oRange.End-1,oRange.End);
       }
        oRange =oDC.Range(oRange.End-1,oRange.End); //復制不同的東西,需要寫這句繼續 寫死的這句話就是位置
        var img = document.getElementById('img');
        word(img,'Copy');//將img范圍內容拷貝到word里面。
        oRange =oDC.Range(oRange.End-1,oRange.End);
        var text_area = document.getElementById('text_area');
        word(text_area,'Copy');//將text_area范圍內容拷貝到word里面。
        oRange =oDC.Range(oRange.End-1,oRange.End);
        oWD.Application.Visible = true; //這句意思是所有操作完畢后,在顯示出來,如果寫在里面,會發現word打開后,什么標簽啊、內容啊就跟打字機一樣往里面填
    }
    </script>
     
    最后補充:IE工具設置,安全--啟動-對沒有標記為安全的Activex的控件進行初始化和腳本運行
    posted @ 2010-01-18 13:04 朔望魔刃 閱讀(6113) | 評論 (2)編輯 收藏
    僅列出標題
    共10頁: First 上一頁 2 3 4 5 6 7 8 9 10 
    主站蜘蛛池模板: 成人奭片免费观看| 嫩草影院免费观看| 国产亚洲精品无码拍拍拍色欲| 亚洲高清一区二区三区电影| 成人免费看片又大又黄| 久久久久久国产a免费观看黄色大片 | 全亚洲最新黄色特级网站 | 最近2019免费中文字幕6| 亚洲人成网址在线观看| 日本一卡精品视频免费 | 亚洲码和欧洲码一码二码三码| 成人免费视频观看无遮挡| 亚洲精品成a人在线观看☆| www.亚洲色图| 国产成人免费AV在线播放 | 青青视频免费在线| 亚洲综合色在线观看亚洲| 四虎影视无码永久免费| 亚洲精品高清久久| 午夜网站免费版在线观看| 免费很黄无遮挡的视频毛片| 久久精品国产精品亚洲艾草网美妙| 怡红院免费的全部视频| 亚洲福利秒拍一区二区| 中国在线观看免费国语版| 亚洲GV天堂GV无码男同| 国产亚洲精品影视在线产品| 免费人成在线观看视频高潮| 亚洲美女免费视频| 免费观看四虎精品国产永久| 丝袜捆绑调教视频免费区| 亚洲精品亚洲人成在线麻豆| 日本19禁啪啪无遮挡免费动图| 性生大片视频免费观看一级| 亚洲三级电影网址| 国产大片91精品免费看3| 中文字幕无码免费久久| 亚洲综合av一区二区三区 | 日韩午夜免费视频| 一级毛片在线免费观看| 精品亚洲视频在线|