
2010年1月18日
摘要: Jdk和cglib動態代理說明和示例
閱讀全文
posted @
2018-08-16 10:46 朔望魔刃 閱讀(200) |
評論 (0) |
編輯 收藏
摘要: 簡化resultMap映射
閱讀全文
posted @
2018-03-14 13:58 朔望魔刃 閱讀(977) |
評論 (0) |
編輯 收藏
摘要: HTTP+Restful的常用安全認證策略
閱讀全文
posted @
2018-01-19 16:04 朔望魔刃 閱讀(430) |
評論 (0) |
編輯 收藏
摘要: spring對quartz的簡單整合配置
閱讀全文
posted @
2017-12-27 18:18 朔望魔刃 閱讀(2027) |
評論 (0) |
編輯 收藏
摘要: 解決DIGEST-MD5, Not authcated 等問題
閱讀全文
posted @
2017-12-22 17:58 朔望魔刃 閱讀(379) |
評論 (0) |
編輯 收藏
摘要: 一點小結
閱讀全文
posted @
2017-12-18 22:32 朔望魔刃 閱讀(282) |
評論 (0) |
編輯 收藏
摘要: 簡單優化
閱讀全文
posted @
2017-11-17 14:19 朔望魔刃 閱讀(3200) |
評論 (0) |
編輯 收藏
摘要: 一點吐槽
閱讀全文
posted @
2017-11-17 00:50 朔望魔刃 閱讀(1108) |
評論 (0) |
編輯 收藏
摘要: nativeQuery的坑
閱讀全文
posted @
2017-11-14 14:20 朔望魔刃 閱讀(5653) |
評論 (0) |
編輯 收藏
摘要: 延遲加載的深入理解
閱讀全文
posted @
2017-11-13 18:12 朔望魔刃 閱讀(438) |
評論 (0) |
編輯 收藏
摘要: page從0開始
閱讀全文
posted @
2017-11-10 11:06 朔望魔刃 閱讀(201) |
評論 (0) |
編輯 收藏
摘要: spring-boot 靜態資源配置
閱讀全文
posted @
2017-11-08 14:31 朔望魔刃 閱讀(619) |
評論 (0) |
編輯 收藏
摘要: spring-boot文件上傳同時包含Dto
閱讀全文
posted @
2017-10-19 13:28 朔望魔刃 閱讀(1352) |
評論 (0) |
編輯 收藏
摘要: K-鄰近算法
閱讀全文
posted @
2017-08-01 12:02 朔望魔刃 閱讀(150) |
評論 (0) |
編輯 收藏
摘要: 機器學習入門-流程
閱讀全文
posted @
2017-08-01 11:47 朔望魔刃 閱讀(298) |
評論 (0) |
編輯 收藏
摘要: Nginx反向代理負載均衡以及端口丟失問題
閱讀全文
posted @
2017-07-15 15:01 朔望魔刃 閱讀(2344) |
評論 (0) |
編輯 收藏
摘要: 轉換
閱讀全文
posted @
2017-06-13 10:13 朔望魔刃 閱讀(468) |
評論 (0) |
編輯 收藏
摘要: maven三種打包插件優劣對比
閱讀全文
posted @
2017-05-03 10:08 朔望魔刃 閱讀(15135) |
評論 (0) |
編輯 收藏
摘要: 啟動問題
閱讀全文
posted @
2017-02-19 11:33 朔望魔刃 閱讀(206) |
評論 (0) |
編輯 收藏
摘要: 修改sqoop源碼并部署配合oozie測試
閱讀全文
posted @
2016-12-09 13:42 朔望魔刃 閱讀(593) |
評論 (0) |
編輯 收藏
摘要: oozie sqoop hive 各種問題
閱讀全文
posted @
2016-12-06 17:45 朔望魔刃 閱讀(1152) |
評論 (0) |
編輯 收藏
摘要: 使用mvn deploy發布到遠程倉庫時報錯 Return code is: 400
閱讀全文
posted @
2016-12-01 09:58 朔望魔刃 閱讀(205) |
評論 (0) |
編輯 收藏
摘要: oozie調度sqoop1
閱讀全文
posted @
2016-10-10 14:12 朔望魔刃 閱讀(964) |
評論 (0) |
編輯 收藏
摘要: oozie的server配置運行
閱讀全文
posted @
2016-09-21 18:01 朔望魔刃 閱讀(336) |
評論 (0) |
編輯 收藏
摘要: oozie安裝及生成
閱讀全文
posted @
2016-09-21 13:38 朔望魔刃 閱讀(868) |
評論 (0) |
編輯 收藏
摘要: 安裝配置mysql
閱讀全文
posted @
2015-12-21 20:42 朔望魔刃 閱讀(277) |
評論 (0) |
編輯 收藏
摘要: 1+N的問題
閱讀全文
posted @
2015-07-20 17:04 朔望魔刃 閱讀(341) |
評論 (0) |
編輯 收藏
摘要: maven添加額外目錄或者資源
閱讀全文
posted @
2015-07-16 12:58 朔望魔刃 閱讀(760) |
評論 (0) |
編輯 收藏
摘要: 打包
閱讀全文
posted @
2015-05-13 18:14 朔望魔刃 閱讀(304) |
評論 (0) |
編輯 收藏
摘要: 配置關鍵點
閱讀全文
posted @
2015-02-16 13:47 朔望魔刃 閱讀(301) |
評論 (0) |
編輯 收藏
摘要: 血與淚的教訓之一坨翔
閱讀全文
posted @
2015-02-15 11:57 朔望魔刃 閱讀(296) |
評論 (0) |
編輯 收藏
摘要: maven自定義構建多模塊工程
閱讀全文
posted @
2015-02-12 00:43 朔望魔刃 閱讀(2211) |
評論 (0) |
編輯 收藏
摘要: 配置以及解決不能創建django工程的問題
閱讀全文
posted @
2015-01-19 15:29 朔望魔刃 閱讀(223) |
評論 (0) |
編輯 收藏
摘要: windows訪問linux遠程桌面,免費工具
閱讀全文
posted @
2014-12-20 22:13 朔望魔刃 閱讀(300) |
評論 (0) |
編輯 收藏
摘要: Ivy問題
閱讀全文
posted @
2014-12-10 10:40 朔望魔刃 閱讀(241) |
評論 (0) |
編輯 收藏
摘要: 事物復習
閱讀全文
posted @
2014-07-17 14:06 朔望魔刃 閱讀(343) |
評論 (0) |
編輯 收藏
摘要: 簡單架構圖以及自定義協議分析
閱讀全文
posted @
2014-05-21 00:21 朔望魔刃 閱讀(5959) |
評論 (0) |
編輯 收藏
摘要: 聯想網卡設置,解決網速慢以及連接不上問題
閱讀全文
posted @
2014-05-16 22:43 朔望魔刃 閱讀(8591) |
評論 (0) |
編輯 收藏
摘要: netty用法
閱讀全文
posted @
2014-05-05 15:17 朔望魔刃 閱讀(2279) |
評論 (0) |
編輯 收藏
摘要: netty初體驗
閱讀全文
posted @
2014-05-03 14:11 朔望魔刃 閱讀(5463) |
評論 (0) |
編輯 收藏
摘要: spring4.0.2整合blazeds+flex
閱讀全文
posted @
2014-03-10 15:37 朔望魔刃 閱讀(3928) |
評論 (0) |
編輯 收藏
摘要: 結構與行為
閱讀全文
posted @
2013-09-30 15:08 朔望魔刃 閱讀(264) |
評論 (0) |
編輯 收藏
摘要: 存儲
閱讀全文
posted @
2013-09-28 14:57 朔望魔刃 閱讀(260) |
評論 (0) |
編輯 收藏
摘要: 行為,行為
閱讀全文
posted @
2013-09-26 16:34 朔望魔刃 閱讀(260) |
評論 (0) |
編輯 收藏
摘要:
閱讀全文
posted @
2013-09-26 13:57 朔望魔刃 閱讀(220) |
評論 (0) |
編輯 收藏
摘要: 類的friend
閱讀全文
posted @
2013-09-24 15:34 朔望魔刃 閱讀(253) |
評論 (0) |
編輯 收藏
摘要: eclipse部署
閱讀全文
posted @
2013-09-23 13:59 朔望魔刃 閱讀(2492) |
評論 (0) |
編輯 收藏
摘要: 單用戶以及群組移植
閱讀全文
posted @
2013-08-01 12:02 朔望魔刃 閱讀(1653) |
評論 (0) |
編輯 收藏
摘要: 集群配置
閱讀全文
posted @
2013-07-25 15:40 朔望魔刃 閱讀(9889) |
評論 (17) |
編輯 收藏
摘要: 配置運行
閱讀全文
posted @
2013-07-22 15:09 朔望魔刃 閱讀(2857) |
評論 (0) |
編輯 收藏
摘要: root無法登錄以及linux安裝服務后遠程無法訪問端口
閱讀全文
posted @
2013-07-18 13:26 朔望魔刃 閱讀(17840) |
評論 (1) |
編輯 收藏
摘要: JTable繪制單元格顏色
閱讀全文
posted @
2013-04-27 21:00 朔望魔刃 閱讀(2040) |
評論 (0) |
編輯 收藏
摘要: 還有rpc的osgi工程的jar包依賴
閱讀全文
posted @
2012-07-25 01:37 朔望魔刃 閱讀(2502) |
評論 (0) |
編輯 收藏
摘要: 不是我玩osgi 是osgi玩我
閱讀全文
posted @
2012-07-25 00:51 朔望魔刃 閱讀(464) |
評論 (0) |
編輯 收藏
摘要: 值傳遞是什么?其實很簡單
閱讀全文
posted @
2012-06-13 22:07 朔望魔刃 閱讀(280) |
評論 (0) |
編輯 收藏
摘要: 最終類初始化順序
閱讀全文
posted @
2012-06-13 21:52 朔望魔刃 閱讀(238) |
評論 (0) |
編輯 收藏
摘要: 基礎知識
閱讀全文
posted @
2012-06-12 20:31 朔望魔刃 閱讀(318) |
評論 (0) |
編輯 收藏
摘要: 溫故而知新,說自己不浮躁 其實自己還是浮躁
閱讀全文
posted @
2012-06-12 00:12 朔望魔刃 閱讀(290) |
評論 (0) |
編輯 收藏
摘要: swing日期控件
閱讀全文
posted @
2012-05-24 20:40 朔望魔刃 閱讀(6848) |
評論 (0) |
編輯 收藏
摘要: swing小結
閱讀全文
posted @
2012-05-23 21:22 朔望魔刃 閱讀(239) |
評論 (0) |
編輯 收藏
摘要: hibernate
閱讀全文
posted @
2012-01-18 12:41 朔望魔刃 閱讀(271) |
評論 (0) |
編輯 收藏
摘要: try
閱讀全文
posted @
2011-12-14 21:03 朔望魔刃 閱讀(211) |
評論 (0) |
編輯 收藏
摘要: 簡單數據結構
閱讀全文
posted @
2011-12-07 12:40 朔望魔刃 閱讀(255) |
評論 (0) |
編輯 收藏
摘要: 生產者消費者
閱讀全文
posted @
2011-11-09 22:04 朔望魔刃 閱讀(219) |
評論 (0) |
編輯 收藏
摘要: 區別
閱讀全文
posted @
2011-11-05 11:04 朔望魔刃 閱讀(209) |
評論 (0) |
編輯 收藏
摘要: socket及web
閱讀全文
posted @
2011-09-04 13:21 朔望魔刃 閱讀(252) |
評論 (0) |
編輯 收藏
摘要: 一個賦值
閱讀全文
posted @
2011-06-02 17:52 朔望魔刃 閱讀(192) |
評論 (0) |
編輯 收藏
摘要: xfire基本用法
閱讀全文
posted @
2011-05-30 17:48 朔望魔刃 閱讀(554) |
評論 (0) |
編輯 收藏
摘要: 如題
閱讀全文
posted @
2011-03-28 21:05 朔望魔刃 閱讀(5400) |
評論 (0) |
編輯 收藏
摘要: 如題
閱讀全文
posted @
2011-03-17 02:26 朔望魔刃 閱讀(343) |
評論 (1) |
編輯 收藏
摘要: 如題
閱讀全文
posted @
2011-03-10 15:07 朔望魔刃 閱讀(5325) |
評論 (3) |
編輯 收藏
摘要: Axis2使用
閱讀全文
posted @
2011-03-04 17:08 朔望魔刃 閱讀(2982) |
評論 (0) |
編輯 收藏
摘要: 浮
閱讀全文
posted @
2011-02-28 18:15 朔望魔刃 閱讀(176) |
評論 (0) |
編輯 收藏
摘要: 如題
閱讀全文
posted @
2011-02-16 16:25 朔望魔刃 閱讀(3312) |
評論 (0) |
編輯 收藏
摘要: 命令模式中的關鍵點
閱讀全文
posted @
2010-12-25 23:28 朔望魔刃 閱讀(249) |
評論 (0) |
編輯 收藏
摘要: Java IO里面類層次記憶
閱讀全文
posted @
2010-12-25 23:06 朔望魔刃 閱讀(206) |
評論 (0) |
編輯 收藏
摘要: linux環境下tomcat配置若干問題
閱讀全文
posted @
2010-09-17 16:35 朔望魔刃 閱讀(1613) |
評論 (0) |
編輯 收藏
摘要: Google了一下午,思考了一下午,終于找到解決辦法。。。其實原來很簡單~
閱讀全文
posted @
2010-09-17 00:04 朔望魔刃 閱讀(5666) |
評論 (1) |
編輯 收藏
摘要: 基于下載、以及多個鏈接使用同一個Action方法的注解
閱讀全文
posted @
2010-09-09 18:49 朔望魔刃 閱讀(2294) |
評論 (0) |
編輯 收藏
摘要: ORACLE常見命令總結,都是工作中常用的
閱讀全文
posted @
2010-09-08 20:46 朔望魔刃 閱讀(748) |
評論 (0) |
編輯 收藏
這個問題本身說起來就很糾結,一般都只會配置多個數據源即多個數據庫,很少有配置多個表空間的,其實hibernate根本不需要配置任何表空間,只需使用MyEclipse的MyEclipse hibernate視圖進行映射表生成pojo即可,唯一需要改動的只是賦予一個用戶訪問多個表空間的權限即可,使用sys用戶dba身份登陸plsql輸入:alter user 用戶 quota unlimited on 表空間A; 就可以使一個用戶訪問多個表空間了,那么當執行hql語句的時候,會自動跟上表空間名字進行訪問查詢。
posted @
2010-09-08 20:40 朔望魔刃 閱讀(2298) |
評論 (0) |
編輯 收藏
摘要: struts2
閱讀全文
posted @
2010-09-07 23:45 朔望魔刃 閱讀(381) |
評論 (0) |
編輯 收藏
摘要: /** *//**
* @author LX
* 通用Reveiver類
*/
public abstract class Receiver {
//抽象接收者,定義每個接收...
閱讀全文
posted @
2010-09-06 23:42 朔望魔刃 閱讀(265) |
評論 (0) |
編輯 收藏
摘要: 命令模式
閱讀全文
posted @
2010-09-06 00:21 朔望魔刃 閱讀(279) |
評論 (0) |
編輯 收藏
摘要: 不一樣的單例模式,雖然很簡單但是再次理解有了不一樣的認識。。。
閱讀全文
posted @
2010-09-02 15:44 朔望魔刃 閱讀(368) |
評論 (1) |
編輯 收藏
摘要: 該模式挺難理解,想了快一晚上。。。才算有點眉目。。。然后照搬一些java.io類還有servlet里面的過濾器終于有所領悟。
使用接口實現,下面給出代碼:
1/** *//**
2 *定義被裝飾者
3 **/
4public interface&nb...
閱讀全文
posted @
2010-08-31 11:07 朔望魔刃 閱讀(2343) |
評論 (1) |
編輯 收藏
第一種適用于:20100823這種字符串格式

function dateValid()
{
var bd = document.getElementById("sStartSaveDate").value;

var beginDate = new Date(bd.replace(/^(\d
{4})(\d
{2})(\d
{2})$/,"$1/$2/$3"));
var ed = document.getElementById("sEndSaveDate").value;

var endDate = new Date(ed.replace(/^(\d
{4})(\d
{2})(\d
{2})$/,"$1/$2/$3"));

if(beginDate >= endDate)
{
alert("結束時間必須大于開始時間!");
return false;

}else
{
document.getElementById('searchform').submit();
}
}
第二種適用于:2010-08-23這種字符串格式

function dateValid()
{
var beginDate = new Date(document.getElementById("sStartSaveDate").value.replace(/-/g,"/"));
var endDate = new Date(document.getElementById("sEndSaveDate").value.replace(/-/g,"/"));

if(beginDate >= endDate)
{
alert("結束時間必須大于開始時間!");
return false;

}else
{
document.getElementById('searchform').submit();
}

第三種適用于:2010/08/23這種字符串格式

function dateValid()
{
var beginDate = new Date(document.getElementById("sStartSaveDate").value);
var endDate = new Date(document.getElementById("sEndSaveDate").value);

if(beginDate >= endDate)
{
alert("結束時間必須大于開始時間!");
return false;

}else
{
document.getElementById('searchform').submit();
}
}

posted @
2010-08-23 19:20 朔望魔刃 閱讀(2779) |
評論 (1) |
編輯 收藏
摘要: 熟悉代理模式的基礎上,首先使用反射實現動態調用某個對象的某個方法,目的就是某個對象某個方法可以進行配置,使用XML或者使用后綴名properties文件。
代碼如下:
1import java.lang.reflect.Method
2public class ReflectUtils{
...
閱讀全文
posted @
2010-08-19 10:33 朔望魔刃 閱讀(497) |
評論 (0) |
編輯 收藏
摘要: 1public class MyStack {
2 private int[] a;
3 private int count = 0;
4 &...
閱讀全文
posted @
2010-08-19 10:19 朔望魔刃 閱讀(234) |
評論 (0) |
編輯 收藏
經驗不足導致了N多問題~特此總結下
1、首先確認雙方建立長連接OR短連接,這問題由于雙方缺乏溝通頭痛了好久。對方其實是短連接,而自己用長連接方式發送導致消息漏發。
2、其次確認每條消息開始結束符,雙方互相確認,以此為依據進行分隔消息進行處理。使用了(char)11和(char)28作為每條消息的開始結束符,對方是0x0b和0x1c,其實就是(char)11和(char)28。
3、發送緊急數據判斷是否和對方處于連接狀態也就是網絡上流傳的心跳數據每次發送消息前即java這邊socket.sendUrgentData(0)來判斷。使用socket.isClosed()和socket.isConnected();判斷是否連接不起作用!這個只能判斷之前的連接是否還處于連接狀態。
4、編碼問題對方使用UTF-8 java這邊是GBK,使用InputStreamWriter來進行輸出編碼設置。
posted @
2010-04-02 13:26 朔望魔刃 閱讀(1350) |
評論 (1) |
編輯 收藏
客戶端使用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 朔望魔刃 閱讀(3409) |
評論 (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 朔望魔刃 閱讀(6112) |
評論 (2) |
編輯 收藏