javaweb之request乱码解决(数据提交以post方式和get方式)

来源:互联网 发布:英雄无敌7堡垒兵种数据 编辑:程序博客网 时间:2024/05/20 14:43
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>向RequestDemo4提交中文数据,解决乱码问题</title></head><body><!--post方式提交--><form action="/day06/servlet/RequestDemo4" method="post">用户名:<input type="text" name="username" /> <input type="submit"value="提交" /></form><!--get方式提交--><form action="/day06/servlet/RequestDemo4" method="get">用户名:<input type="text" name="username" /> <input type="submit"value="提交" /></form><!-- 超链接方式提交的中文,服务器想不乱码,也只能手工处理(貌似超链接提交要经过url编码)--><a href="/day06/servlet/RequestDemo4?username=中国">单击</a></body></html>


package test.request;import java.io.IOException;import java.io.UnsupportedEncodingException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//request乱码解决,除了下面的解决方式,还可以改服务器配置,但不要用那种方式public class RequestDemo4 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {test2(request);}/* * get方式提交:由于get方式提交request.setCharacterEncoding(arg0);无效,所以乱码只能手工处理,拿到乱码的数据后 * ,按照ISO8859-1进行解码,然后按照UTF-8进行编码。 */private void test2(HttpServletRequest request)throws UnsupportedEncodingException {String username = request.getParameter("username");// get方式解决乱码,先把乱码按照原来的编码解码,返回数据的表示数字,然后按照想要的码表编码username = new String(username.getBytes("ISO8859-1"), "UTF-8");System.out.println(username);}/* * post方式提交:浏览器以当前页面的码表提交数据,当前页面的码表是程序员写程序时自己指定的。数据提交到request里面去, * 但是当request往外面取数据时用的是ISO8859 * -1码表,就会产生乱码所以要在取数据之前指定request的码表。request.setCharacterEncoding * (arg0);只对post方式起作用 */private void test1(HttpServletRequest request)throws UnsupportedEncodingException {// 设置request码表request.setCharacterEncoding("UTF-8");String username = request.getParameter("username");System.out.println(username);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}


0 0