ADS

2011年1月3日 星期一

惱人的編碼~~編屎人啦

大家好~~
近為了幫公司找出成本為零的項目,想要利用JSP + SERVLET +SQL 完成。
SQL 是原有的ERP 所建立使用的..定序是Chinese_Taiwan_Stroke_BIN
JSP 編碼是UTF-8

在servlet中這二行處理完後,就可以了..不要想太多..哈哈
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");

JSP中也定義
< ~meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

這些天看了不少文件跟API
試了 vel_name1 = new String(vel_name1.getBytes("ISO-8859-1"),"UTF-8"); (依然亂碼)

CharsetDecoder decoder = Charset.forName("UTF-8").newDecoder();
(出現java.nio.charset.malformedinputexception: input length = 1)

結果看到某位大大在網上提示了
@page contentType 是給終端Client 上的Browser 上看的內容編碼
而 Page pageEncoding 是JSP編寫(撰寫)時的編碼 .. 是給JSP要翻成SERVLET時的編譯器看的
又~~~~
在另一位大大Po文上看到
當你有的網頁上有二個HTML 時,在裡面那個不要自訂編碼..

此時我了解到了..我不用去管SQL 出來的字..
我只要告訴SERVLET..輸出到前端時是用什麼編碼就好
也就是contentType 要跟JSP 上的相同

所以我的SERVLET上有這二行
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
其他的編碼或轉碼(getBytes)都拿掉...
YES...它就OK了
這就是我..迷霧二天的記錄..
謝謝看倌~~

2010年12月1日 星期三

如何在XP連線使用WIN 2008的FAX SERVER呢?

在win 2008啟用了fax server 後vista、win7連線都ok..
但大家最愛的xp怎麼丟都沒辨法咧??

經過多天的"陣痛"後,弄出來了~~
原來不是權限(權限只要是fax users及file&print rpc都有權限就好)
也不是xp 的fax沒裝...
而是要用到win 2003 的fax元件..及一些REG
步驟大致如下:
一,取得WIN2003 R2 X86 SP2的 FAX SERVER檔案(要先停下SPOOLER及FAX服務),
  可以從主機上的%SystemRoot%\System32\spool\drivers\win32x86\3
  或
  從I386中使用Expand 解開
  FXSAPI.DLL
  FXSDRV.DLL
  FXSRES.DLL
  FXSTIFF.DLL
  FXSUI.DLL
  FXSWZRD.DLL
二,在2008 Server上停止Spooler及Fax Service
  將上列檔案覆蓋在%SystemRoot%\System32\spool\drivers\win32x86\3
  上,若有檔案被LOCK住(DLL在使用中),那只有重開再停止再覆蓋了
三,將下列資料存成Reg並滙入2008Serv
---------------------------------------------------------------------------------
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows NT
x86\Drivers\Version-3\Microsoft Shared Fax Driver]
"Configuration File"="FXSUI.DLL"
"Data File"="FXSUI.DLL"
"Driver"="FXSDRV.DLL"
"Help File"=""
"Monitor"=""
"Datatype"="RAW"
"Dependent Files"=hex(7):46,00,58,00,53,00,57,00,5a,00,52,00,44,00,2e,00,44,00,4c,00,4c,00,00,00,46,00,58,00,53,00,54,00,49,00,46,00,46,00,2e,00,44,00,4c,00,4c,00,00,00,46,00,58,00,53,00,52,00,45,00,53,00,2e,00,44,00,4c,00,4c,00,00,00,46,00,58,00,53,00,41,00,50,00,49,00,2e,00,44,00,4c,00,4c,00,00,00,00,00
"Previous Names"=hex(7):00,00,90,90
"Version"=dword:00000003
"TempDir"=dword:00000000
"Attributes"=dword:00000001
"Manufacturer"=""
"OEM URL"=""
"HardwareID"=""
"Provider"=""
"DriverDate"=hex:00,00,00,00,00,00,00,00
"DriverVersion"=hex:00,00,00,00,00,00,00,00
------------------------------------------------------------------------------------
四,啟動所停止的二個服務.
五,在XP上新增FAX服務
六,連線2008的FAX設備(使用在FAX Users或LOCAL ADMIN權限的使用者,並記憶)
七,停用XP上的SPOOLER及FAX服務
八,覆蓋2003 FAX Server 所拿到的6個DLL檔
九,啟動XP所停止的二個服務
十,可以使用啦~~

2010年10月24日 星期日

如何利用.htaccess讓網站的檔案結構不讓別人看到?

在多站台的每站設定又希望不同的情況下也可以這樣用

如何利用.htaccess讓網站的檔案結構不讓別人看到?
在apache架好時預設該網站的檔案結構別人是可以看到的,

如下圖


一般而言我們會將httpd.conf 這個檔案的

Options Indexes FollowSymLinks

修改為

Options -Indexes FollowSymLinks

或是直接disabled掉

Options Indexes FollowSymLinks

但是有些情況並不能直接去修改httpd.conf檔案(例如在租用的空間)
這時我們可以透過.htaccess的方式達成..

打開.htaccess檔案編輯加入下面這段

Options All -Indexes

這時就成功囉..如下圖

最近遇到了JAVASCRIPT RETURN後不會再傳到ACTION目標了~

目前還在DEBUG~~
還不知道自己錯在那~~
用FIREBUG 有看到JAVASCRIPT 傳回值(TURE)後但不會再傳給FORM 的ACTION 目標~
以下貼上自己錯的HTML以做記錄


< -%@ page language="java" contentType="text/html; charset=BIG5"
pageEncoding="BIG5"%>
< -%@ taglib prefix="C" uri="http://java.sun.com/jsp/jstl/core"%>
< -!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< -html>
< -head>
< -meta http-equiv="Content-Type" content="text/html; charset=BIG5">
< -title>Member Regist Page< -/title>
< -style type="text/css">
< -!--
#apDiv1 {
position:absolute;
left:0px;
top:0px;
width:730px;
height:420px;
z-index:1;
background-image:url(images/01A.jpg);
background-repeat: no-repeat;
}
#elemName {
text-align: right;
}
#elem {
text-align: left;
}
#nameDiv {
background-color:#FF9933
}
#nicknameDiv {
background-color:#FF9933
}
#passwordDiv {
background-color:#FF9933
}
#titleDiv {
background-color:#FF9933
}
#emailDiv {
background-color:#FF9933
}
#mobleDiv {
background-color:#FF9933
}
#sexDiv {
background-color:#FF9933
}
#errMsgarea{
background-color:#FF0000
}
-->
< -/style>
< -script language="javascript">
function focusto(x){
document.forms[0].elements[x].focus();
}
function hidden_all()
{
nameDiv.style.display = 'none';
nicknameDiv.style.display = 'none';
passwordDiv.style.display = 'none';
titleDiv.style.display = 'none';
emailDiv.style.display = 'none';
mobleDiv.style.display = 'none';
sexDiv.style.display = 'none';
errMsgarea.style.display = 'none';
}

function show_me(obj)
{
hidden_all();
obj.style.display = 'block';
}

function verifyAddress(obj){
var email = obj;
var pattern = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/;
flag = pattern.test(email);
if(!flag){
return "notmail";
}
}
function verifymoble(obj){
var moble = obj;
var pattern = /^([0-9_-])/;
flag = pattern.test(moble);
if(!flag && moble.length != 10){
return "notmob";
}
}

function pageOnLoad(){
hidden_all();
}
function userCheck(){
var d=document;
var uf=uform;
hidden_all();
if(uf.m_name.value == ""){
show_me(nameDiv);
focusto(1);
return false;
}else if(uf.m_nickname.value ==""){
show_me(nicknameDiv);
focusto(2);
return false;
}else if(uf.m_password.value ==""){
show_me(passwordDiv);
focusto(3);
return false;
}else if(uf.m_title.value ==""){
show_me(titleDiv);
focusto(4);
return false;
}else if("notmail" == verifyAddress(uf.m_email.value)){
show_me(emailDiv);
focusto(5);
return false;
}else if("notmob" == verifymoble(uf.m_moble.value)){
show_me(mobleDiv);
focusto(7);
return false;
}else if(uf.m_sex.value == ""){
show_me(sexDiv);
focusto(8);
return false;
}
alert("OK");
return true;
}
< -/script>
< -/head>
< -body onLoad="pageOnLoad();" background="images/01A.jpg">

< -h2>歡迎您加入資訊安全的行列< -/h2>
< -div id="errMsgarea">${errorMsg}< -/div>
< -form name="uform" id="uform" method="post" action="/Norman_dev/addmember.jsp">
< -table width="100%" border="0">
< -tr>
< -td width="35%" align="right">
< -div align="right">帳號:< -/div>
< -/td>
< -td width="35%" align="left">< -input name="m_no" type="text"
id="m_no" size="20" maxlength="20" value="本欄由系統指定" disabled>< -/td>
< -td> < -/td>
< -/tr>
< -tr>
< -td>
< -div id="elemName">姓名:< -/div>
< -/td>
< -td>
< -div id="elem">< -input name="m_name" type="text" id="m_name"
size="20" maxlength="20">< -/div>
< -/td>
< -td>
< -div id="nameDiv">姓名不可為空< -/div>
 < -/td>
< -/tr>
< -tr>
< -td>
< -div id="elemName">暱稱:< -/div>
< -/td>
< -td>
< -div id="elem">< -input name="m_nickname" type="text"
id="m_nickname" size="20" maxlength="20">< -/div>
< -/td>
< -td>
< -div id="nicknameDiv">暱稱不可為空< -/div>
 < -/td>
< -/tr>
< -tr>
< -td>
< -div id="elemName">密碼:< -/div>
< -/td>
< -td>
< -div id="elem">< -input name="m_password" type="password"
id="m_password" size="20" maxlength="20">< -/div>
< -/td>
< -td>
< -div id="passwordDiv">密碼不可為空< -/div>
 < -/td>
< -/tr>
< -tr>
< -td>
< -div id="elemName">職稱:< -/div>
< -/td>
< -td>
< -div id="elem">< -input name="m_title" type="text" id="m_title"
size="20" maxlength="20">< -/div>
< -/td>
< -td>
< -div id="titleDiv">職稱不可為空< -/div>
 < -/td>
< -/tr>
< -tr>
< -td>
< -div id="elemName">E-Mail:< -/div>
< -/td>
< -td>
< -div id="elem">< -input name="m_email" type="text" id="m_email"
size="20" maxlength="20">< -/div>
< -/td>
< -td>
< -div id="emailDiv">E-Mail不可為空或格式錯誤< -/div>
 < -/td>
< -/tr>
< -tr>
< -td>
< -div id="elemName">公司:< -/div>
< -/td>
< -td>
< -div id="elem">< -input name="m_comp" type="text" id="m_comp"
size="20" maxlength="20">< -/div>
< -/td>
< -td> < -/td>
< -/tr>
< -tr>
< -td>
< -div id="elemName">手機:< -/div>
< -/td>
< -td>
< -div id="elem">< -input name="m_moble" type="text" id="m_moble"
size="20" maxlength="20">< -/div>
< -/td>
< -td>
< -div id="mobleDiv">手機不可為空或格式錯誤< -/div>
 < -/td>
< -/tr>
< -tr>
< -td>
< -div id="elemName">性別:< -/div>
< -/td>
< -td>
< -div id="elem">< -input name="m_sex" type="text" id="m_sex"
size="20" maxlength="1" value="F">< -/div>
< -/td>
< -td>
< -div id="sexDiv">性別不可為空< -/div>
 男性:F,女性:M< -/td>
< -/tr>
< -/table>
< -input type="button" value="註冊" onClick="javascript:return userCheck();">

< -/form>

< -/body>
< -/html>

最近遇到了JAVASCRIPT RETURN後不會再傳到ACTION目標了~