JavaWeb后端学员管理系统请求参数乱码的解决方案

造成参数乱码的原因

1.两端的编码格式不一致
2. login.jsp 发起请求 -> Tomcat容器 -> login_after
utf-8 iso-8859-1 utf-8

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Titletitle>
head>
<body>

  <%--  只要发生页面跳转,就是一次请求!!! --%>
  <%--  这个请求中,携带了2个参数:name和password --%>

<%--  <a href="login_after.jsp?name=zhangsan&password=000000">点我跳转到login_after.jspa>--%>

<%--    <button id="btn">点我跳转到login_after.jspbutton>--%>

<%--    <script>--%>
<%--        document.getElementById("btn").onclick = function (){--%>
<%--            locations.href = "login_after.jsp?name=zhangsan&password=000000";--%>
<%--        };--%>
<%--    script>--%>


        <%--   form表单是用于将数据打包提交到某一个地址     --%>
        <%--    action:表单数据的提交资源地址    --%>
        <form action="login_after.jsp" method="post">
            <%--      有多少个表单元素name,就会传多少个参数过去      --%>
            账号:<input type="text" name="name" />  <br />
            密码:<input type="password" name="password" /><br />
            <input type="text" name="age" /><br />
                <input type="text" />


            <button type="submit">登录button>
        form>

body>
html>

login_after.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Titletitle>
head>
<body>

    <%
        String name = request.getParameter("name");
        String password = request.getParameter("password");
    %>


    <h1>账号:<%=name %>h1>
    <h1>密码:<%=password %>h1>


body>
html>

JavaWeb后端学员管理系统请求参数乱码的解决方案_第1张图片
JavaWeb后端学员管理系统请求参数乱码的解决方案_第2张图片

这时候就解决方法就有两种了:

  1. 第一种情况

在使用POST方法请求时,如果不保持与请求界面的编码格式一致,则乱码,解决方式如下

request.setCharacterEncoding("utf-8")

  1. 第二种情况
    使用字符串的构造方法进行转码(临时处理)
`String name = new String(request.getParameter("name").getBytes("iso-8859-1"),"utf-8")`
  1. 第三种情况
    修改tomcat的配置

URLEncoding=“utf-8” useBodyEncodingForURI=“true”

在login_after.jsp中修改

		String name = request.getParameter("name");
        String nameNew = new String(name.getBytes("iso-8859-1"),"utf-8");

        String password = request.getParameter("password");


    	<h1>账号:<%=nameNew %></h1>
    	<h1>密码:<%=password %></h1>

你可能感兴趣的:(个人经验集总结,tomcat,java)