问一个让我很头痛的问题,我用http://127.0.0.1:8080/ass?name='zhangsan%' servlet为什么就name值为null,而不用%的话,http://127.0.0.1:8080/ass?name='zhangsan'就正常?

解决方案 »

  1.   

    我用的是SQL SERVER数据库,用JDBC处理时,URL路径定义的参数值带%字符时就没有返回数据
    警告: Parameters: Character decoding failed. Parameter skipped.
    java.io.CharConversionException: isHexDigit
            at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:88)
            at org.apache.tomcat.util.buf.UDecoder.convert(UDecoder.java:49)
            at org.apache.tomcat.util.http.Parameters.urlDecode(Parameters.java:412)
            at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:394)
            at org.apache.tomcat.util.http.Parameters.processParameters(Parameters.java:510)
            at org.apache.tomcat.util.http.Parameters.handleQueryParameters(Parameters.java:267)
            at org.apache.catalina.connector.Request.parseParameters(Request.java:2441)
            at org.apache.catalina.connector.Request.getParameter(Request.java:1040)
            at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:355)
            at Apppack.Ass.Web.Data_Query.doGet(Data_Query.java:41)
            at Apppack.Ass.Web.Data_Query.doPost(Data_Query.java:114)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
            at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
            at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
            at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
            at java.lang.Thread.run(Thread.java:619)
      

  2.   

    %对于url来说是特殊字符,需要转义。
    最简单就是用get或post提交form。
    否则就用代码去转码
      

  3.   

    你是不是在写JDBC 或者在传值的页面上在双影号中有空格 或者有特殊字符
    仔细检查一下
      

  4.   

    最后提醒:
                #  对URL也是特殊字符,以后注意噢
      

  5.   

    %对于url来说是特殊字符,需要转义。怎么实现啊?
      

  6.   

    八进制转义序列:\ + 1到3位5数字;范围'\000'~'\377'       \0:空字符 2.Unicode转义字符:\u + 四个十六进制数字;0~65535      \u0000:空字符 3.特殊字符:就3个       \":双引号      \':单引号      \\:反斜线 4.控制字符:5个   \' 单引号字符 \\ 反斜杠字符 \r ...