隨筆 - 5  文章 - 4  trackbacks - 0

          留言簿

          文章分類(2)

          文章檔案(7)

          搜索

          •  

          最新評論

          12月23日
          ----------------
          解決字符問題

          解決字符問題主要是程序中要用到的字符保持統(tǒng)一的字符編碼,現(xiàn)在以utf-8為例子


          jsp中:

          <%@ page language="java" contentType="text/html; charset=UTF-8"
              pageEncoding="UTF-8"%>
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          <title>Insert title here</title>
          </head>
          <body>
          <form action="/MyTestServletApp/codingServlet" method="post">
          <div>
          姓名
          <input type="text" name="name" value="utf中文字符">
          </div>
          <div>
          密碼
          <input type="text" name="pass" value="hellokitty">
          </div>
          <input type="submit" value="提交" >

          </form>
          </body>
          </html>

           

          servlet中:

          package testcharactercoding;

          import java.io.IOException;
          import java.io.PrintWriter;
          import java.io.UnsupportedEncodingException;
          import java.io.Writer;

          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          /**
           * Servlet implementation class for Servlet: codingServlet
           *
           */
          public class codingServlet extends javax.servlet.http.HttpServlet implements
            javax.servlet.Servlet {
           /*
            * (non-Java-doc)
            *
            * @see javax.servlet.http.HttpServlet#HttpServlet()
            */
           public codingServlet() {
            super();
           }

           /*
            * (non-Java-doc)
            *
            * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request,
            *      HttpServletResponse response)
            */
           protected void doGet(HttpServletRequest request,
             HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
           }

           /*
            * (non-Java-doc)
            *
            * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request,
            *      HttpServletResponse response)
            */
           protected void doPost(HttpServletRequest request,
             HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub

            /* 用于請求和響應(yīng)的字符編碼的設(shè)置,一定要在請求前進(jìn)行設(shè)置 */
            request.setCharacterEncoding("UTF-8");
            response.setContentType("text/html;charset=UTF-8");
               response.setCharacterEncoding("UTF-8");
            
            String nameValue = (String) request.getParameter("name");
            String passValue = (String) request.getParameter("pass");

            /*
             * 或者這樣轉(zhuǎn)換
             * try {
             nameValue = new String(nameValue.getBytes("ISO8859_1"),"UTF-8");
            } catch (UnsupportedEncodingException ex) {
             ex.printStackTrace();
            }*/

            PrintWriter out = response.getWriter();

            out.println("<html>");
            
            System.out.println(nameValue);
            out.println(nameValue);
            System.out.println(passValue);
            out.println(passValue);
            out.println("<br>測試結(jié)束!");
            out.print("</html>");
           }
          }

          也可以通過創(chuàng)建一個 filter來轉(zhuǎn)換
          映射 /*

          package filter;

          import java.io.IOException;

          import javax.servlet.Filter;
          import javax.servlet.FilterChain;
          import javax.servlet.FilterConfig;
          import javax.servlet.ServletException;
          import javax.servlet.ServletRequest;
          import javax.servlet.ServletResponse;
          import javax.servlet.http.*;

          public class CharCodingFilter implements Filter {

           public void init(FilterConfig arg0) throws ServletException {
            // TODO 自動生成方法存根
            
               System.out.println("CharCodingFilter init!");
           }

           public void doFilter(ServletRequest request, ServletResponse response,
             FilterChain chain) throws IOException, ServletException {
            // TODO 自動生成方法存根
            
           request.setCharacterEncoding("UTF-8");
           response.setContentType("text/html;charset=UTF-8");
               response.setCharacterEncoding("UTF-8");
               
           /*// 是否能通過這樣  去除ie緩存
                  HttpServletResponse httpRes = (HttpServletResponse)response;
               httpRes.setHeader("Pragma","No-cache");
               httpRes.setHeader("Cache-Control","no-cache");
               httpRes.setDateHeader("Expires", 0);*/
               
           chain.doFilter(request,response);
           }

           public void destroy() {
            // TODO 自動生成方法存根

            System.out.println("CharCodingFilter destroy!");
           }

          }

           

          在web應(yīng)用程序中處理異常
          -------------------------
                  <servlet>
            <description></description>
            <display-name>ThrowError</display-name>
            <servlet-name>ThrowError</servlet-name>
            <servlet-class>erroexception.ThrowError</servlet-class>
           </servlet>
           <servlet>
            <description></description>
            <display-name>ServletExceptionErro</display-name>
            <servlet-name>ServletExceptionErro</servlet-name>
            <servlet-class>
             erroexception.ServletExceptionErro
            </servlet-class>
           </servlet>
           <servlet>
            <description></description>
            <display-name>Error404</display-name>
            <servlet-name>Error404</servlet-name>
            <servlet-class>erroexception.Error404</servlet-class>
           </servlet>
                 
           
           <error-page>
            <error-code>404</error-code>
            <location>/Error404</location>
           </error-page>
           <error-page>
            <exception-type>java.lang.Throwable</exception-type>
            <location>/ErrorGen</location>
           </error-page>
           <error-page>
            <exception-type>javax.servlet.ServletException</exception-type>
            <location>/ServletExceptionErro</location>
           </error-page>

          //拋出的ServletException異常,如果沒有該異常的處理,則會被 ErrorGen 進(jìn)行處理

           

          ErrorGen.java //在tomcat調(diào)試下,該文件的大小應(yīng)該大于512k

          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          Throwable throwable = (Throwable)request.getAttribute("javax.servlet.error.excepion");
            PrintWriter out = response.getWriter();
            out.println("message:"+(String)request.getAttribute("javax.servlet.error.message"));
            out.println("<br>request_uri:"+(String)request.getAttribute("javax.servlet.error.request_uri"));
            out.println("<br>status_code:"+((Integer)request.getAttribute("javax.servlet.error.status_code")).toString());
            out.println("<br>servlet_name:"+(String)request.getAttribute("javax.servlet.error.servlet_name"));
               out.println("<br>512k 512k 512k 512k 512k 512k 512k 512k 512k 512k 512k 512k 512k ");
          }

          posted on 2006-12-24 02:38 googlor 閱讀(527) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 建始县| 西乌珠穆沁旗| 上饶市| 望奎县| 集安市| 吴堡县| 右玉县| 泌阳县| 玛多县| 晋宁县| 临西县| 德州市| 卓尼县| 马山县| 合山市| 黔西| 晋城| 金秀| 南郑县| 高台县| 朝阳县| 鄂托克旗| 昔阳县| 安龙县| 南雄市| 清流县| 蚌埠市| 湘西| 玉林市| 潜山县| 罗平县| 凌云县| 锡林郭勒盟| 张家口市| 溧水县| 宜君县| 廉江市| 左贡县| 万安县| 耒阳市| 赤峰市|