發表文章

目前顯示的是 12月, 2014的文章

servlet 用get傳中文參數

from: response.sendRedirect("./change?reason=" + URLEncoder.encode("售完", "UTF-8")); ps.將中文轉為UTF-8的URL to: String reason = request.getParameter("reason"); reason = new String(reason.getBytes("iso-8859-1"),"UTF-8"); ps.接收端無法使用request.setCharacterEncoding("UTF-8")接收get過來的中文參數,只能使用getBytes reference http://openhome.cc/Gossip/Encoding/Servlet.html 原文轉貼如下: 請求參數的編碼處理,基本上必須分POST與GET的情況來說明,我們先來看POST的情況… 如果客戶端沒有在Content-Type標頭中設定字元編碼資訊(例如瀏覽器可以設定Content-Type: text/html; charset=UTF-8),此時使用HttpServletRequest的getCharacterEncoding()傳回值會是null,在這個情況下,容器若使用的預設編碼處理是ISO-8859-1(大部份瀏覽器預設的字元集) 你可以使用HttpServletRequest的setCharacterEncoding()方法指定取得POST請求參數時使用的編碼。例如若瀏覽器以UTF-8來發送請求,則你接收時也要使用UTF-8編碼字串,則可以在取得任何請求值之「前」,執行以下陳述: request.setCharacterEncoding("UTF-8"); 在HttpServletRequest的API文件中,對setCharacterEncoding()的說明清楚提到: Overrides the name of the character encoding used in the body of this request. 也就是說,這個方法對於

jcaptcha

web.xml:     <servlet>         <servlet-name>jcaptcha</servlet-name>         <servlet-class>com.octo.captcha.module.servlet.image.SimpleImageCaptchaServlet</servlet-class>     </servlet>     <servlet-mapping>         <servlet-name>jcaptcha</servlet-name>         <url-pattern>/jcaptcha.jpg</url-pattern>     </servlet-mapping> web-inf/lib: commons-collections-3.2 commons-logging-1.0.4 filters-2.0.235 jcaptcha-2.0-alpha-1-SNAPSHOT jcaptcha-api-1.0 jcaptcha-integration-simple-servlet-2.0-alpha-1-SNAPSHOT jsp: <script type="text/javascript">     function refresh() {         var image = document.getElementById("jcaptcha.jpg");         image.src = "jcaptcha.jpg?" + Math.floor(Math.random() * 1000)     } </script> ... <img src="jcaptcha.jpg" id="jcaptcha.jpg" /> <input type="text" name="jcaptcha" value=&quo