当前位置: 代码迷 >> Java相关 >> j2ee 下servlet与jsp之间参数传递时的乱码问题,一直解决不了,烦啊!大哥帮 ...
  详细解决方案

j2ee 下servlet与jsp之间参数传递时的乱码问题,一直解决不了,烦啊!大哥帮 ...

热度:560   发布时间:2013-06-28 23:27:41.0
j2ee 下servlet与jsp之间参数传递时的乱码问题,一直解决不了,烦啊!大哥帮忙!
写了一个很简单的例子,从index.jsp页面打开,点击链接到一个servlet类,在该类中分别进行转发与重定向;只是在url上带有中文的参数;在重定向与转发的目标jsp页面上怎么才能得到正确中文,注:servlet不能改,现在只能在转发与重定向的目标jsp页面中想办法,但是我怎么也不能行啊

下面是我的源码,我用myeclipse写的,用tomcat6,希望高手多多关注啊


搜索更多相关的解决方案: 中文  大哥  定向  

----------------解决方案--------------------------------------------------------
用javascript 的encodeURI编译下链接

----------------解决方案--------------------------------------------------------
回复 2楼 hhwz
javascript ? js只学了一些啊,还不是杂揉啊,这个java中怎么写js啊?能否简单示例一下啊,谢谢大哥了~
----------------解决方案--------------------------------------------------------
在提交时后台获取时是乱码吗?
----------------解决方案--------------------------------------------------------
程序代码:
----------------index.jsp------
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<script type="text/javascript">

function getCheck(text){
location.href="/test/Check?flag="+text;
}
</script>
<body>
<a href="javascript:getCheck('dispatcher转向')">通过   '/testJSP/Check?flag=dispatcher转向 ' 转至  Check.java</a>
<br/>
<a href="javascript:getCheck('redirect重定向')">通过   '/testJSP/Check?flag=dispatcher重定向'  重定向  Check.java</a>
<br/>
<a href="javascript:getCheck('redirect外网')">通过   '/testJSP/Check?flag=redirect外网'  连接  Check.java</a>
</body>
</html>
--------------check-----
public void  doGet(HttpServletRequest come,HttpServletResponse go)
    throws ServletException,IOException{
        String flag=come.getParameter("flag");
        come.setAttribute("names","野马abc");
        flag=URLDecoder.decode(flag, "utf-8");
        if("dispatcher转向".equals(flag)) {  //转发

                 RequestDispatcher rd=come.getRequestDispatcher("/0628/forward1.jsp?redirect="+URLEncoder.encode(flag,"utf-8"));//此处用带中文参数的url地址
                 System.out.println(flag);
                 rd.forward(come,go);
        }else if("redirect重定向".equals(flag)){

            go.sendRedirect("/test/0628/forward2.jsp?redirect="+flag);//此处用带中文参数的url地址

        }else if("redirect外网".equals(flag)){

            go.sendRedirect("http://www.baidu.com");
        }
        else {
            System.out.println("都不匹配");
        }
    }

----- forward1----
<%@page import="java.io.UnsupportedEncodingException"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%!
    public String transferCharacter(String s){//这个方法用来转变,对于表单get提交的中文这个方法是管用的,但在这里就不行
    try{
        return new String(s.getBytes("ISO-8859-1"),"utf-8");
    }catch(UnsupportedEncodingException e){
        throw new RuntimeException("不支持的字符集");
    }
    }
%>
<%
    out.println("这是一个转发的例子==");
%>
    <br/>
<%
    String names=(String)request.getAttribute("names");
    String para=transferCharacter(request.getParameter("redirect"));
    out.println("属性name的值:"+names);
%>

    <br/>
<%
    out.println("参数para的值:"+para);//此处para的值一直取不到,一直是乱码
%>

----------------解决方案--------------------------------------------------------
http://fengzhiyin.iteye.com/blog/375632/,看下这个就行了!
----------------解决方案--------------------------------------------------------
  相关解决方案