網頁

2013年9月28日 星期六

Spring、J2EE學習筆記-submit中文的問題

同樣的錯又犯了一次,使用spring或j2ee開發的話,若submit的資料中有中文字,要在取得資料時,先執行以下指令,這邊做個紀錄,免得以後又犯

request.setCharacterEncoding("UTF-8");

另外查了下資料,也有幾個地方要注意
1. 在web.xml中要加入
<filter>

    <filter-name>characterEncodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>     <init-param> 
        <param-name>encoding</param-name> 
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
</filter>


2. JSP中要加入
<%@page contentType="text/html" pageEncoding="UTF-8"%>

3. server.xml中的conntector要加入useBodyEncodingForURI
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" useBodyEncodingForURI="true"/>



參考網址:

2013年9月23日 星期一

Hibernate學習筆記 - Error for: id numeric(19,2) identity not null

在用ant執行hbm2ddl來建table時,出現個問題,id的type設成big_integer,sql產生出一段底下的sql

id numeric(19,2) identity not null

本以為export出sql且ant回應build success是ok的,但發現table根本沒有create,將sql整個執行過後發現,sybase(可能其他DB也是有)要求numeric(19,0)才能正常運作,我針對id的宣告如下:

<id name="id" column="id" type="big_integer">
    <meta attribute="field-description">xxx</meta>
    <meta attribute="use-in-tostring">true</meta>
    <meta attribute="use-in-equals">true</meta>
    <generator class="native" />
</id>


想說就直接加成這樣,將precision設成10,scale設成0

<id name="id" type="big_integer">
    <column name="id" precision="10" scale="0" />
    <meta attribute="field-description">xxx</meta>
    <meta attribute="use-in-tostring">true</meta>
    <meta attribute="use-in-equals">true</meta>
    <generator class="native" />
</id>


但~ 不能用,找了很久的資料都找不到,結果跟generator一樣,是順序問題,如下設定就好了

<id name="id" type="big_integer">
    <meta attribute="field-description">xxx</meta>
    <meta attribute="use-in-tostring">true</meta>
    <meta attribute="use-in-equals">true</meta>
    <column name="id" precision="10" scale="0" />
    <generator class="native" />
</id>


參考網址:
Chapter 5. Basic O/R Mapping
Re: want to force scale=0 attr in hbm for BigInteger

2013年9月22日 星期日

JSTL學習筆記-JSP上取得session的資料

需求:
  • 在jsp上不用java code方式取得session的資料

在jsp上,session的預設object是sessionScope,所以只要直接使用sessionScope即可,例如,要取得在session中設好的userId,直接寫

${sessionScope.userId}


參考網址:
Print session attributes in jsp
How to use the values from session variables in jsp pages that got saved using @Scope(“session”) in the mvc controllers

JSTL學習筆記-jstl比對class name

JSTL使用的越多,就越覺得好用,今天正好遇到想要在jsp檢驗class,通常會想到用instanceof,不過其實有更快的做法,例:

targetObject.class.name == 'class_name'

上述即檢查targetObject是否為class_name的instance

做下記錄

參考網址:
how do i check for instance of a bean using jstl ?

2013年9月16日 星期一

Spring學習筆記-編譯spring 3.2.X

因為耍笨想要玩新玩意,莫名其妙變成在搞spring,spring目前不再提供jar檔,所以像我一樣老派的,就只能想辦法,最後找到這個Building a distribution with dependencies,還好其實還是有提供,大概步驟如下:

Step1. 將Github的master改成3.2.x再下載成zip或整個git下載
Step2. 解開zip後進入根目錄(例如我的是spring-framework-3.2.x)
Step3. 執行./gradlew depsZip(我是用mac,windows改用.bat)

再來就慢慢的等吧....最後在src下的每個專案都有各自的jar檔在目錄下

2013年9月7日 星期六

Javascript學習筆記-取得目前的url資訊

需求:用javascript取得目前的hostname

做法:
用window.location.hostname。

Example:
var hostname = window.location.hostname;

var hostname = location.hostname;

上圖取自:Javascript hostname屬性

如上圖,可以用location取得整個link或帶上的參數,或是哪種protocol,再自行運用


參考網址:
Javascript hostname屬性

2013年9月2日 星期一

iOS開發筆記 - int8_t及Byte的小差別

在寫iOS app時,宣告byte陣列使用時(尤其是在網路封包的raw data上),我個人在查資料時,最常見的是int8_t,不過在我實際使用上,卻發現一個小差別,最好還是用Byte,例如:

int8_t aa = (int8_t) 0xe0;
Byte bb = (Byte) 0xe0;


NSlog(@"data: %02x",aa);  --> 顯示:e0
NSlog(@"data: %02x",bb);  --> 顯示:e0

像上述這樣寫,是沒有差別的,使用上是ok的,但如果是接收資料再從NSData轉換過來就有不同了,例如,假設NSData *aa的第一個元素是e0

int8_t *rawData = malloc(sizeof(int8_t) * aa.length);
[aa getBytes:rawData length:aa.length];
NSlog(@"data: %02x", rawData);  --> 顯示:ffffffe0

Byte *rawData = malloc(sizeof(Byte) * aa.length);
[aa getBytes:rawData length:aa.length];
NSlog(@"data: %02x", rawData);  --> 顯示:e0

若要直接操作byte元素,還是最好用Byte會比較不會有不知名的錯誤。