우리는 부두 컨테이너에 웹 애플리케이션을 실행하고 있습니다. jsp에는 forward가 있습니다. jsp : param의 값은 ISO-8859-1
입니다. Jetty에게 URL이 ISO-8859-1임을 어떻게 알릴 수 있습니까?Embedded Jetty NotUtf8Exception
시스템 속성 org.eclipse.jetty.util.UrlEncoding.charset
이 작동하지 않습니다. org.eclipse.jetty.util.Utf8Appendable$NotUtf8Exception: Not valid UTF8! incomplete UTF8 sequence...
이 발생합니다. 조직 나는 방법 mergeQueryString의 소스 코드에서 발견 한
Caused by: org.eclipse.jetty.util.Utf8Appendable$NotUtf8Exception: Not valid UTF8! incomplete UTF8 sequence
at org.eclipse.jetty.util.Utf8Appendable.checkState(Utf8Appendable.java:232) ~[jetty-util-9.1.0.v20131115.jar:9.1.0.v20131115]
at org.eclipse.jetty.util.Utf8StringBuffer.getStringBuffer(Utf8StringBuffer.java:65) ~[jetty-util-9.1.0.v20131115.jar:9.1.0.v20131115]
at org.eclipse.jetty.util.UrlEncoded.decodeString(UrlEncoded.java:843) ~[jetty-util-9.1.0.v20131115.jar:9.1.0.v20131115]
at org.eclipse.jetty.util.UrlEncoded.decodeTo(UrlEncoded.java:221) ~[jetty-util-9.1.0.v20131115.jar:9.1.0.v20131115]
at org.eclipse.jetty.server.Request.mergeQueryString(Request.java:2172) ~[jetty-server-9.1.0.v20131115.jar:9.1.0.v20131115]
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:229) ~[jetty-server-9.1.0.v20131115.jar:9.1.0.v20131115]
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:101) ~[jetty-server-9.1.0.v20131115.jar:9.1.0.v20131115]
at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:792) ~[javax.servlet.jsp-2.3.2.jar:2.3.2]
at org.apache.jsp.WEB_002dINF.jsp.template.test_005jsp_jsp._jspService(test_005jsp_jsp.java:84) ~[na:na]
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111) ~[javax.servlet.jsp-2.3.2.jar:2.3.2]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0]
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411) ~[javax.servlet.jsp-2.3.2.jar:2.3.2]
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473) ~[javax.servlet.jsp-2.3.2.jar:2.3.2]
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377) ~[javax.servlet.jsp-2.3.2.jar:2.3.2]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) ~[javax.servlet-api-3.1.0.jar:3.1.0]
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:696) ~[jetty-servlet-9.1.0.v20131115.jar:9.1.0.v20131115]
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:526) [jetty-servlet-9.1.0.v20131115.jar:9.1.0.v20131115]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) ~[jetty-server-9.1.0.v20131115.jar:9.1.0.v20131115]
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:586) ~[jetty-security-9.1.0.v20131115.jar:9.1.0.v20131115]
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:221) ~[jetty-server-9.1.0.v20131115.jar:9.1.0.v20131115]
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1110) ~[jetty-server-9.1.0.v20131115.jar:9.1.0.v20131115]
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:453) [jetty-servlet-9.1.0.v20131115.jar:9.1.0.v20131115]
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183) ~[jetty-server-9.1.0.v20131115.jar:9.1.0.v20131115]
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1044) ~[jetty-server-9.1.0.v20131115.jar:9.1.0.v20131115]
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) ~[jetty-server-9.1.0.v20131115.jar:9.1.0.v20131115]
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:261) ~[jetty-server-9.1.0.v20131115.jar:9.1.0.v20131115]
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:101) ~[jetty-server-9.1.0.v20131115.jar:9.1.0.v20131115]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_25]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_25]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_25]
at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_25]
at net.bull.javamelody.JspWrapper.invoke(JspWrapper.java:149) ~[javamelody-core-1.43.0.jar:1.43.0]
at net.bull.javamelody.JdbcWrapper$DelegatingInvocationHandler.invoke(JdbcWrapper.java:271) ~[javamelody-core-1.43.0.jar:1.43.0]
at com.sun.proxy.$Proxy51.forward(Unknown Source) ~[na:na]
at org.apache.tiles.servlet.context.ServletTilesRequestContext.forward(ServletTilesRequestContext.java:241) ~[tiles-servlet-2.2.2.jar:2.2.2]
... 94 common frames omitted
(문자열 쿼리) 클래스 : 스택 트레이스 여기
<%@ page language="java" pageEncoding="ISO-8859-1" %>
...
<jsp:forward page="/forwardToAServlet">
<jsp:param name="param1" value="an+example+with+an+umlaut+gr%F6%DFere" />
</jsp:forward>
그리고 다음은
은은 JSP의 예이다 .eclipse.jetty.server.Request 다음UrlEncoded.decodeTo(query,parameters, StandardCharsets.UTF_8,-1); //have to assume UTF-8 because we can't know otherwise
을 따라서 URLEncoded.decodeTo() UTF-8을 사용하는 방법 System.setProperty ("org.eclipse.jetty.util.UrlEncoding.charset", "ISO-8859-1") 인코딩 세트가 아닙니다.
어떻게 든이 문제를 해결할 수 있습니까? 어떤 아이디어? :-)
문제의 예를 게시 할 수 있습니까? JSP/앞으로? –
전체 스택 추적도 포함합니다. –
주 :'org.eclipse.jetty.util.UrlEncoding.charset' 시스템 속성의 사용은'System.setProperty()'호출을 통해 내장되지 않고 명령 행에서만 작동합니다. –