tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bill Faulk" <bill.fa...@cis.com>
Subject request.getParameter Error when "%" contained in parameter value
Date Mon, 16 Feb 2004 17:57:34 GMT
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


Mime
View raw message