• 重定向带中文参数跳页面显示中文示例代码


    最近发现一个问题,访问servlet,在其中使用重定向带中文参数跳转页面,发现地址栏取不到参数为中文的情况,纠结一小会,下面讲讲乱码原因:对于URL地址栏里面的内容一般都是ISO-8859-1编码的,所以呢,我们如果使用重定向,那么就是重新修改地址栏里面的内容(URL),那么这是如果我们要在URl中加入中文参数,必须将中文以ISO-8859-1的编码,然后才可以显示在地址栏上,不然就会实现中文找不到的情况或者地址栏中文乱码,不罗嗦看代码,大家就会明白。

    下面贴我的代码了,不明白可以交流:

    在WebRoot下面新建两个jsp文件:

    (1)index.jsp

    (2)success.jsp

    在src下面新建一个servlet文件夹,里面创建一个servlet,名字为:UserSerlvet.java

    下面继续贴代码咯:

    (1)index.jsp代码:

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    </head>
    <body>
      <a href="servlet/UserSerlvet?name=张三的零食">访问</a>
    </body>
    </html>

    (2)success.jsp代码:

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <body>
       <%=new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8") %>
      </body>
    </html>

    (3)web.xml代码:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <display-name></display-name>
      <servlet>
        <servlet-name>UserSerlvet</servlet-name>
        <servlet-class>servlet.UserSerlvet</servlet-class>
      </servlet>
      <servlet-mapping>
        <servlet-name>UserSerlvet</servlet-name>
        <url-pattern>/servlet/UserSerlvet</url-pattern>
      </servlet-mapping>
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    </web-app>

    (4)src/servlet中的UserSerlvet.java代码:

    package servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class UserSerlvet extends HttpServlet {
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            doPost(request, response);
        }
    
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            /**
             * 注意,浏览器Get请求中的url只能是ISO-8859-1编码,如果
             * 要在url后面带参,必须将数据转为ISO-8859-1编码才可以实现URL后面带
             * 中文参数。到页面一定要记得将ISO-8859-1转为UTF-8显示中文。
             */
            //方式一:在程序中,默认编码为utf8或者GBK,一般为utf8,这时的中文要作为参数实现重定向传递,一定要转ISO-8859-1才可以传成功!
            
            //String name = new String("张三的零食".getBytes("utf-8"),"iso-8859-1");
            //方式二:从页面获得ISO-8859-1编码,不需要转码,直接重定向到页面即可,到页面在以UTF-8解码
            String name = request.getParameter("name");
            System.out.println(name);//控制台是乱码,此时它是ISO-8859-1,所以显示必然乱码
            response.sendRedirect("../success.jsp?name="+name);
            
        }
    
    }

    以上就是全部代码了,可以直接复制,进行测试,有问题一起交流。

    此文小编自测通过,放心测试吧!!

  • 相关阅读:
    实现在Android本地视频播放器开发
    敏捷开发的4个中心思想
    PHP如何大幅度提升运行效率? 把它编译成机器码!
    卸载Oracle数据库(有图有真相)
    宁波理工邀请赛 c zoj3185解题报告
    FRG图像文件格式的压缩质量
    另类的文件夹加密(批处理实现)
    代码详查中的自尊心
    [C# 网络编程系列]专题十:实现简单的邮件收发器
    php中获得客户端,服务器ip
  • 原文地址:https://www.cnblogs.com/IT-Monkey/p/4060997.html
Copyright © 2020-2023  润新知