隨筆 - 100  文章 - 50  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          我收藏的一些文章!

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          在weblogic有時(shí)會(huì)有TokenStreamIOException(unix或linux系統(tǒng))異常出現(xiàn):

          Root cause of ServletException.

          weblogic.utils.ParsingException: nested TokenStreamException: antlr.TokenStreamIOException

                  at weblogic.servlet.jsp.JspLexer.parse(JspLexer.java(Compiled Code))

                  at weblogic.servlet.jsp.JspParser.doit(JspParser.java:106)

                  at weblogic.servlet.jsp.JspParser.parse(JspParser.java:234)

                  at weblogic.servlet.jsp.Jsp2Java.outputs(Jsp2Java.java:125)

                  at weblogic.utils.compiler.CodeGenerator.generate(CodeGenerator.java:258)

                  at weblogic.servlet.jsp.JspStub.compilePage(JspStub.java:388)

                  at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:238)

                  at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:188)

                  at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.java(Compiled Code))

                  at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java(Compiled Code))

                  at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java(Compiled Code))

                  at weblogic.servlet.internal.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:322)

                  at edu.yale.its.tp.cas.servlet.Login.doGet(Login.java:188)

                  at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)

                  at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code))

                  at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java(Inlined Compiled Code))

                  at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java(Compiled Code))

                  at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java(Inlined Compiled Code))

                  at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java(Compiled Code))

                  at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java(Compiled Code))

                  at weblogic.security.service.SecurityManager.runAs(SecurityManager.java(Inlined Compiled Code))

                  at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java(Compiled Code))

                  at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java(Compiled Code))

                  at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java(Compiled Code))

                  at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)

          原因:中文編碼問題

          解決:在web.xml里加上過濾:

          <filter>

               <filter-name>Set Character Encoding</filter-name>

               <filter-class>edu.yale.its.tp.cas.SetCharacterEncodingFilter</filter-class>

               <init-param>

                        <param-name>encoding</param-name>

                        <param-value>GB2312</param-value>

                   </init-param>

               </filter>

               <filter-mapping>

                   <filter-name>Set Character Encoding</filter-name>

                   <url-pattern>/*</url-pattern>

               </filter-mapping>

          --------------//SetCharacterEncodingFilter類是中文過濾類

          package edu.yale.its.tp.cas;

          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;

          /**
           * Example filter that sets the character encoding to be used in parsing the

           * incoming request, either unconditionally or only if the client did not

           * specify a character encoding.

           * 如果原來沒有設(shè)置request的編碼,就設(shè)置;否則保持不變

           */

          public class SetCharacterEncodingFilter
              implements Filter {

            protected String encoding = null;

            protected FilterConfig filterConfig = null;

            protected boolean ignore = true;

            /**
             * Take this filter out of service.

             */

            public void destroy() {

              this.encoding = null;

              this.filterConfig = null;

            }

            /**
             * Select and set (if specified) the character encoding to be used to

             * interpret request parameters for this request.

             */

            public void doFilter(ServletRequest request, ServletResponse response,

                                 FilterChain chain)

                throws IOException, ServletException {

          // Conditionally select and set the character encoding to be used

              if (ignore || (request.getCharacterEncoding() == null)) {

                String encoding = selectEncoding(request);

                if (encoding != null) {

                  request.setCharacterEncoding(encoding); //設(shè)置request編碼的地方

                }else
                {

                  request.setCharacterEncoding("gb2312"); //強(qiáng)制設(shè)置編碼
                }

              }

          // Pass control on to the next filter

          // 傳遞控制到下一個(gè)過濾器

             chain.doFilter(request, response);

            }

            /**
             * Place this filter into service.

             * 從web-app的web.xml文件中讀取初始參數(shù)的值

             */

            public void init(FilterConfig filterConfig) throws ServletException {

              this.filterConfig = filterConfig;

              this.encoding = filterConfig.getInitParameter("encoding");

              String value = filterConfig.getInitParameter("ignore");

              if (value == null) {

                this.ignore = true;
              }

              else if (value.equalsIgnoreCase("true")) {

                this.ignore = true;
              }

              else if (value.equalsIgnoreCase("yes")) {

                this.ignore = true;
              }

              else {

                this.ignore = false;
              }

            }

            /**
             * Select an appropriate character encoding to be used, based on the

             * characteristics of the current request and/or filter initialization

             * parameters. If no character encoding should be set, return

             * <code>null</code>.

             * 選擇request原來的編碼

             */

            protected String selectEncoding(ServletRequest request) {

              return (this.encoding);

            }

          }

          posted on 2009-03-27 10:14 fly 閱讀(977) 評(píng)論(0)  編輯  收藏 所屬分類: jsp學(xué)習(xí)
          主站蜘蛛池模板: 县级市| 托克逊县| 泸州市| 石河子市| 双柏县| 乐山市| 榆树市| 阿克陶县| 无锡市| 岐山县| 斗六市| 淮南市| 涡阳县| 株洲市| 玉山县| 定陶县| 东方市| 南雄市| 即墨市| 三亚市| 大田县| 娄烦县| 丁青县| 江安县| 天门市| 游戏| 曲靖市| 启东市| 天峻县| 登封市| 日土县| 旌德县| 咸丰县| 同仁县| 彰武县| 孝昌县| 榕江县| 玉屏| 文成县| 沂水县| 通山县|