You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Bill Faulk <bi...@cis.com> on 2004/02/16 18:57:34 UTC
request.getParameter Error when "%" contained in parameter value
I am using Tomcat 4.1.29 on Windows 2000 Server with Java SDK 1.4.2.
On the user query forms in my application "%" is a valid wildcard for
"all" as it is in the actual database query. I don't want to use blank
for all because I don't want users to accidentally search for all
records; i.e. they have to actually enter % to search for all records in
a value. Blank parameters are ignored.
Passing % as a parameter via GET or POST causes the error
http://website/findnaics.jsp?code=4%
I am using POST methods for the forms as in...
<form method="POST" name="findform" action="findnaics.jsp">
The request.getParameter line is actually generating the error if the
parameter contains a %.
String code = request.getParameter("code");
I've seen this error when searching in regards to forwarding pages
(http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3986) but it was
considered "invalid" because forward expects an encoded url. However, I
am simply passing a parameter and submitting a form. Doing something
like 'action = <%= response.encodeURL("findnaics.jsp") %>' doesn't do
anything for me. Using quotes/backslash, etc. doesn't make any
difference. These query parameters can be passed by both GET and POST so
encoding the URL isn't an option even if it did work.
When "%" is passed as a parameter I get the following error for the
getParameter statement.
java.io.CharConversionException: EOF
at
org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:177)
at
org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:144)
at
org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java
:514)
at
org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java
:541)
at
org.apache.tomcat.util.http.Parameters.handleQueryParameters(Parameters.
java:318)
at
org.apache.coyote.tomcat4.CoyoteRequest.parseRequestParameters(CoyoteReq
uest.java:1927)
at
org.apache.coyote.tomcat4.CoyoteRequest.getParameter(CoyoteRequest.java:
905)
at
org.apache.coyote.tomcat4.CoyoteRequestFacade.getParameter(CoyoteRequest
Facade.java:174)
at
org.apache.jsp.findnaics_jsp._jspService(findnaics_jsp.java:55)
at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.ja
va:210)
at
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:247)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.java:256)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.java:191)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:643)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authenticator
Base.java:553)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:641)
at
org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.ja
va:246)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:641)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:241
7)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:180)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:643)
at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherVa
lve.java:171)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:641)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:172)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:641)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:174)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.i
nvokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:4
80)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:193)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:78
1)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
onnection(Http11Protocol.java:549)
at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:58
9)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool
.java:666)
at java.lang.Thread.run(Thread.java:534)
---
Bill Faulk
bill.faulk@cis.com
801-302-8930
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
Re: request.getParameter Error when "%" contained in parameter value
Posted by Tim Funk <fu...@joedog.org>.
Why don't you use: http://website/findnaics.jsp?code=%25
-Tim
Bill Faulk wrote:
> I am using Tomcat 4.1.29 on Windows 2000 Server with Java SDK 1.4.2.
>
> On the user query forms in my application "%" is a valid wildcard for
> "all" as it is in the actual database query. I don't want to use blank
> for all because I don't want users to accidentally search for all
> records; i.e. they have to actually enter % to search for all records in
> a value. Blank parameters are ignored.
>
> Passing % as a parameter via GET or POST causes the error
>
> http://website/findnaics.jsp?code=4%
>
> I am using POST methods for the forms as in...
>
> <form method="POST" name="findform" action="findnaics.jsp">
>
> The request.getParameter line is actually generating the error if the
> parameter contains a %.
>
> String code = request.getParameter("code");
>
> I've seen this error when searching in regards to forwarding pages
> (http://nagoya.apache.org/bugzilla/show_bug.cgi?id=3986) but it was
> considered "invalid" because forward expects an encoded url. However, I
> am simply passing a parameter and submitting a form. Doing something
> like 'action = <%= response.encodeURL("findnaics.jsp") %>' doesn't do
> anything for me. Using quotes/backslash, etc. doesn't make any
> difference. These query parameters can be passed by both GET and POST so
> encoding the URL isn't an option even if it did work.
>
> When "%" is passed as a parameter I get the following error for the
> getParameter statement.
>
> java.io.CharConversionException: EOF
> at
> org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:177)
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org