1.地址栏的中文参数问题,搜索了所有的帖子,用尽了所有的办法也不行
你说的是用?带参数的问题吧,我遇到过,是在ns里面,ie里面好象没有这个问题,这个问题没有直接的解决办法,但是可以间接解决,就是用隐藏域,传递参数。
2:应该用response.sendRedirect("/web/end.jsp?flag=payment02");吧,我用的这个没有这个问题啊。

解决方案 »

  1.   

    1.
    传递参数之前URLEncoder.encode(),取参数值时直接用request就可以了。2.没有遇到“找不到服务器错误”。你可以清除缓存,下面两种方法:
    (1)
    使用java提供的方法设置http头信息,在jsp或者servlet中都可以 
    <% 
    response.setHeader("Pragma","No-cache"); 
    response.setHeader("Cache-Control","no-cache"); 
    response.setDateHeader("Expires", 0); 
    %> 
    (2)
    使用HTML标记,如下: 
    <HEAD> 
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
    <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"> 
    <META HTTP-EQUIV="Expires" CONTENT="0"> 
    </HEAD>  3.
    没有用过。
      

  2.   

    Tmsheng说得对,我也是传递参数之前先encode就没问题了。
      

  3.   

    1.在用中文参数前要对中文进行url编码:
    pam1=java.net.URLEncoder.encode(pam1);2.同意  Tmsheng(小唐蔡) 的方法。如果还不好用,则检查所有cache,IE中检查网页选为“自动”;如果你IE是用代理服务器上网的,则暂时将代理服务器选项去掉。3. 确认你的ResultSet对象不是用<%!%>标记定义的,要在<%%>里面定义。
      

  4.   

    wjmmml(笑着悲伤) :
    1.必须用querystring,而且是用javascript控制的,所以无法用UrlEnCode
    2.确实有这种情况呀,不过我用了iframe,也可能跟这个有关,一般只要刷新一下整个页面就好了。我用的语句是:response.sendRedirect("error.html");
    而且同一页面有多处,大体是:
    if (xxx){
        response.sendRedirect("error.html");
        return;
    }3.大家不用getRow(),那用什么取得记录总数呀?
      

  5.   

    <HEAD> 
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
    <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"> 
    <META HTTP-EQUIV="Expires" CONTENT="0"> 
    </HEAD>  
    是每页都有的
      

  6.   

    这么多高手都给你解决了,应该没什么问题了。你的tomcat配置里有没有使用GBK或者GB2312字符集?再有,RecordSet 好像不是java里的吧。。
      

  7.   

    你必须用ResultSet.last()先将游标定位到最后一条记录上,然后再getRow(),因为getRow()返回的是the current row number;另外getRow是jdbc2.0规范中的,如果你的数据库JDBC驱动很老的话,你只有靠next()遍历,累加来统计了。
      

  8.   

    javascript 也可以使用 Form 的,我原来也遇到过这样的一个问题,没有办法,最后改用 Form了
      

  9.   

    xiao_yuer(小鱼儿) :
    为什么我的数据库里有N条记录:
    我的代码是这样的:
    rs.last();
    count = rs.getRow() + 1;
    在有的机器上是N,有的机器上是N+1呢?难道没人碰到过reques.sendRedirect(""),出现的页面缓存现象?
    不过我的特殊,我有多处reques.sendRedirect(""),导致reques.sendRedirect("")执行多次,但我有return呀
    谁有立即结束jsp程序的方法?就象asp里的Response.Redirect
      

  10.   

    getRow()这个不是取记录总数的,jdbc里面没有去记录总数的。
      

  11.   

    在每次response.sendRedirect后都用return结束。应该就没有问题了。
      

  12.   

    感谢楼上的热心帮助,但还是没有解决
    实在想不通为什么一重定向就说找不到服务器或者dns错误
    而且同样的程序在不同的机器上,getRow()的结果不同
      

  13.   

    1:getrow就是这样的。
    2:你的应用服务器是什么的,webshpere下response.sendRedirect()的参数是相对路径。
    response.sendRedirect("/web/end.jsp?flag=payment02");这里的web是jsp所在的目录。
    在不行,就把你的jsp帖出来。
    另外;强烈建议,不要在jsp里面写入操作数据库的代码。否则对调式和以后的维护都很不利
      

  14.   

    因为jsp的产生,就是为了做表示层的,也是为了弥补servlet的表示功能的不足,所以你应该把对数据库的操作封装在javabean里。
      

  15.   

    补充2:
    加个变值在URL后面。解决Cache问题,就好象CSDN的URL后的temp=xxxx.
    response.sendRedirect("xxx.jsp?"+SystemcurrentTimeMillis());
      

  16.   

    1。我用的是:在jsp中直接传递中文过去,如果在bean中,则需要java.net.URLEncoder.encoder(...)进行编码
    2. 最好的方法在后面加一个自动变更的变量,如当前时间
    3.getRow()是返回当前记录的行号
      

  17.   

    学习气氛好浓呀。我这个小菜鸟真要好好跟你们学了,特别是版主wjmmml
      

  18.   

    1.
    a.jsp
    <%
    String str="中文";
    %>
    <input type="button" onclick="javascript:window.location.href='b.jsp?str=<%=java.net.URLEncoder.encode(str)%>';" value="click">
    在b.jsp中接收:
    <%
    out.println(new String(request.getParameter("str").getBytes("8859_1"), "GB2312"));
    %>
    ***********************
    2.清楚cache的方法除了使用temp随机参数之外,可以手动删除/tomcat目录下的work目录,重新启动tomcat即可
    **************************
    3.使用jdbc的话,先recordset.last();然后recordset.getRow();
      

  19.   

    代码:
    <%@ page language="java" contentType="text/html;charset=gb2312" import="java.sql.*,My.*"%>
    <%
    //-----------权限判断处理--------------
    String strProvId;strProvId = (String)session.getAttribute("prov_id");
    if (strProvId==null){
    response.setRedirect("error_p.jsp");
    return;
    }else if (!(strProvId.equals("1"))){
      response.sendRedirect("error_p.jsp");
      return;
          }else{
    //-----------权限判断处理--------------end
    %>
    <%
    //修改用户信息表
    Connection sqlCon = null; //数据库连接对象 
    java.sql.Statement sqlStmt = null; //SQL语句对象  
    ResultSet sqlRst = null; //选择结果集对象   
    ResultSet           sqlSwType = null;int RunSQLRst ;//装载JDBC驱动程序 
    //try 
    //{ 
    %>
    <%@ include file="conndatabase.jsp" %>
    <% String post = request.getParameter("post");
    if(null==post)
    {
    %>
    <HTML>
    <HEAD>
    <TITLE>添加/修改用户信息</TITLE>
    <meta http-equiv='Expires' content='-10'>
    <meta http-equiv='Pragma'  content='No-cache'>
    <meta http-equiv='Cache-Control', 'private'>
    <link rel="stylesheet" href="/css.css">
    <style>
    td
    {
    text-align:left;
    }
    </style>
    <script language="javascript">
    function check()
    {
    return true;
    } function returnback()
    {
    this.location='useradmin.jsp';
    }
    </script>
    </HEAD>
    <BODY bgcolor="#7aa9d3">

    <form name='frmForm' action='adduser.jsp' onsubmit='check();'>
    <input type='hidden' name='post' value='post'>
    <TABLE border="0" cellspacing="1" cellpadding="0" width="60%">
    <TR class="title">
    <TD colspan="2" style="font-size:10pt;text-align:center"><strong>添加省</strong></TD>
    </TR>
    </TR class="content">
        <TR class="content">
    <TD class="right">省名:</TD>
    <TD><input type="text" name="prov_name" value="" class="text"></TD>
    </TR>
        <TR class="content">
    <TD class="right">密码:</TD>
    <TD><input type="password" name="pass1" value="" class="text"></TD>
    </TR>
    <TR class="content">
    <TD class="right">验证密码:</TD>
    <TD><input type="password" name="pass2" value="" class="text"></TD>
    </TR>
    </TABLE><br>
    <input type='submit' value='保存'>&nbsp;<input type='reset' value='重填'>&nbsp;<input type="button" value="返回" Onclick="returnback()">
    </form>
    </BODY>
    </HTML>
    <%
    }
    else
    {
    String prov_name = request.getParameter("prov_name");
    prov_name =  (prov_name == null) ? "" : new String(prov_name.getBytes("ISO-8859-1"),"GB2312");
    String password = request.getParameter("pass1"); sqlStmt = sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_UPDATABLE);  
    RunSQLRst = sqlStmt.executeUpdate("insert into prov(provname,password)  values('"+prov_name+"','"+password+"')"); sqlStmt.close();
    sqlCon.close();
    response.sendRedirect("useradmin.jsp");
    }
    sqlCon.close();
    //}
    //catch(SQLException e)
    //{
    // out.print("调用数据库的SQL出错");
    //}
    }
    %>问题找到了,是session丢失的问题,由于我在操作完数据库以后用了response.sendRedirect("useradmin.jsp");所以下次访问的时候出现了session丢失,所以第一次可以访问,第2次就提示没有权限
      

  20.   

    现在问题解决了,我用了
    out.println("<meta http-equiv='refresh'  content='0;url=error_p.jsp'>");
    这样session就不会丢失了但用rs.last();rs.getRow();的结果在两台机器上还是不同
      

  21.   

    连接数据库的代码还是用bean来做好些
      

  22.   

    现在问题解决了,我用了
    out.println("<meta http-equiv='refresh'  content='0;url=error_p.jsp'>");
    这样session就不会丢失了但用rs.last();rs.getRow();的结果在两台机器上还是不同
      

  23.   

    找到原因了
    具以为大虾说,jdk1.4的ResultSet.getRow()方法有漏洞哎,可怜呀,怎么大家没碰到的问题都让我碰到了
      

  24.   

    rs.getRow();jdk确实提供了这个方法,但是在Oracle数据库里面,这个方法并不可用,其他数据库我没用过,不过,我估计这个方法并不可用。所以我们一般是这样:
    select RowNum rn, m.* from mem m where ID > 0;int RowCount = rs.getInt("rn");
      

  25.   

    建议最好尽量不用session,因为很难保证他什么时候会不出差错!
    建议最好写代码时工整一点,养成好的习惯会有帮助的!
    建议不要在jsp页面上写任何一些sql语句!
    其它建议暂不发表!