服务器:虚拟专用网,分配有公网地址。tomcat5.5。
        jsp页面上代码举例
                          var url = "/test/abc.do?a="+"测试";
                       document.location.href = url;
在这个服务器上使用ie访问本项目时没有问题。但是,在公网上从远程访问本web项目时,上述代码的url中?后面的参数是字母就没有问题,
如果?后面的参数是中文,远程ie访问就会出错,设置断点跟踪发现,java程序的入口Dispather都没进去,
后来用escape(escape())进行包装也不行。ie提示错误:此错误(HTTP 500 内部服务器错误)意味着您正在访问的网站出现了服务器问题,此问题阻止了该网页的显示。
            有关 HTTP 错误的详细信息,请参阅帮助。由于某些原因,此处必须要以?方式传递参数。
奇怪的就在于,为什么在服务器本地访问是没有问题的。请大家帮忙解决啊!

解决方案 »

  1.   

    var url = "/test/abc.do?a=<%=URLEncoder.encode("测试","UTF-8") %>";
    试试
      

  2.   

    TOMCAT默认的地址栏上的编码格式为ISO-8859-1要传中文,取出来后要转码。
      

  3.   

    那就用UrlEncoder先编码,在action里获取参数a的时候去解码就行了
      

  4.   

    感谢大家的关注.我想改变一下思路来看这个问题.从jsp向java类里传值都有哪些方式:?传参
    form提交还有其他的方式么?
      

  5.   

    只有GET/POST这2种方式,使用GET方法传递中文的时候最好先转码成UTF-8,在后台重新转码一下,否则容易出错
      

  6.   


    在url里面传中文使用encoder转换一下,直接传很容易出现问题。jsp提交方式有个八九种。不过都是使用get/post 因为有些对于不同的服务器支持不好(或者实现不好)。
      

  7.   

    解决方法1:解决方法2:
    使用 post
      

  8.   

    不可能吧,字符可以传递,escape转换后不可以???
      

  9.   

    var url = "/test/abc.do?a="+escape("测试");
    location.href = url;
    这样确定不能进入Dispatcher?
      

  10.   

    如果使用struts框架的话建议把数据封装在ActionForm对象中,然后由ActionForm来去所需要的数据比较好,这种方式最好用post方式吧.使用get方式传不了多少数据而且不安全
      

  11.   

    http://www.0451h.com
    你可以在tomcat/conf/server.xml中配置以下就可以了,配置如下:
    <Connector port="8080" maxHttpHeaderSize="8192"
                   maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
                   useBodyEncodingForURI="true"
                   enableLookups="false" redirectPort="8443" acceptCount="100"
                   connectionTimeout="20000" disableUploadTimeout="true" />就是加上 useBodyEncodingForURI="true"这句就可以了,祝你成功
      

  12.   

    顶:编码问题.
    可以用form。也可以尝试下:request.setAttribute
    request.getSession.setAttribute
    放参数放在request或者session中传过去!
      

  13.   

    编码的错误,jsp传值的时候尽量不要用中文,因为默认编码一般都是ISO-8859-1,转码的时候容易出现问题
      

  14.   

     传递参数乱码问题
      
      1 一般的页面传中文则要url编码  2 jsp中设置<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
           接收参数的servelt 应该设置编码
           request.setCharacterEncoding("utf-8") ;  3 可以用监听器filter 不过要配置package filter ;
    import javax.servlet.*;public class CharsetFilter implements Filter{
    public void destroy() {
    }
    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain chain) throws IOException, ServletException {     
      request.setCharacterEncoding("utf-8") ;
      response.setCharacterEncoding("utf-8") ;
      chain.doFilter(request, response) ;
    }
    public void init(FilterConfig config) throws ServletException {
    }
    }
    在web.xml中配置
      <filter>
        <filter-name>Charset</filter-name>
        <filter-class>filter.CharsetFilter</filter-class>
      </filter>
      <filter-mapping>
          <filter-name>Charset</filter-name>
          <url-pattern>/*</url-pattern>
      </filter-mapping>
      

  15.   

    jsp向java文件传值
       可以用javabean标签啊
      

  16.   

    1、参数应该encode;
    2、编码应该统一,建议统一为utf-8格式(包括tomcat的get方式);
      

  17.   

    用 POST  方法 提交!!有的时候用GET方法有问题!!水平有限说不出为什么!但是在做具体项目的时候碰到过这样的情况!!
      

  18.   

    换中思路也许是好的。
    有好多方式可以得到参数。
    如:
    1.隐藏表单
    2.URL重写(不可用,因为你要传的值是中文)
    3.会话跟踪(session,cookie等)
    在ASP.Net 中有专门解析中文编码的不知道在Java中是否有这样的类,
    可以转换编码,并且可以在解析编码。。
      

  19.   

    编码问题是肯定了。不过这个问题比较奇怪,在服务器的ie能访问,从远程的ie就不能访问。建议先查一下两个ie或两个机器的编码有什么差别,说不定能找出原因。
      

  20.   

    修改Tomcat下的server.xml配置应该就可以了<connection>.
    详见:http://blog.csdn.net/davidfaith/archive/2009/02/26/3939147.aspx
      

  21.   

    由于地址栏里输入的中文,在从aciton/servlet中接收时,要进行转码:
    试试
    参数 A = new String(参数A.getBytes("iso-8859-1"),"gbk");
    再继续用参数A
      

  22.   

    GET方式传递遇见过这种,从新编码也没用,传参中文字数太多就会出现问题。
      

  23.   


     var url = "/test/abc.do?a="+encodeURIComponent("测试");祝愿你成功
      

  24.   

    URL是不能直接传中文的,转下吗吧
      

  25.   

    将jsp的Encoding="ISO-8859-1"该成Encoding="UTF-8"
    从jsp向java类里传值使用form的get或者post方法
      

  26.   

    用form里的隐藏域,也就是post提交,form 的method="POST"
    <form action ="url" method="POST">
    <input type="hidden" name="a" id="a" value="测试"/>
    </form>
      

  27.   

    还有一种:
    <Connector port="8080" maxHttpHeaderSize="8192" 
                  maxThreads="150" minSpareThreads="25" maxSpareThreads="75" 
                  enableLookups="false" redirectPort="8443" acceptCount="100" 
                  connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/> 
    在时面URIEncoding="UTF-8"也这个,也应该可以。
      

  28.   

    非常非常感谢大家的热心关注!!!这个问题现在还是没有直接地解决,实在搞不清楚
    为什么服务器端本地访问没有问题,而远程公网访问就有问题,
    也许和网关设置有关系吧。现在绕了弯子把问题避过去了。把本来在?后面跟着的中文参数用escape(escape())进行编码,
    将编码后的结果放在form的隐藏域中,然后在java类里面进行unescape解码。问题算是勉强解决掉了。再次感谢大家!马上结贴!
      

  29.   

    因为你是链接传值,而且传的是中文,,,这样编码肯定是有问题的..我也遇到过这样的问题...
    这样也可以解决
      <a href="#" onclik="send("你好")">Hello</a>
    <form name="frm" action="url" method="get">
       <input type="text" name="n">
    </form>
    <script>
       function send(obj){
            frm.n.value=obj;
            frm.submit();
        }
    </script>
    这样可以解决链接中传中文的问题,祝你成功
      

  30.   

    var url = "/test/abc.do?a="+encodeURIComponent("测试"); 
    肯定行
      

  31.   

    var url = "/test/abc.do?a= <%=URLEncoder.encode("测试","ISO-8859-1") %>";   这样应该可以的了
      

  32.   

    var url = "/test/abc.do?a= <%=URLEncoder.encode("测试","ISO-8859-1") %>";   这样应该可以的了
      

  33.   

    sname=String(sname.getBytes("ISO-8859-1"));
      

  34.   

    TOMCAT默认的地址栏上的编码格式为ISO-8859-1要传中文,取出来后要转码。
      

  35.   

    你这是get提交方式。。
    a="测试"是乱码的你换下,用英文表示传的值
      

  36.   

    是汉字时进行字符设定 如下:
    String a=request.getParameter("a");
    a=new String(a.getBytes("ISO-8859"));
      

  37.   

    修改Tomcat service.xml 文件,添加UrlEncode = GB2312