jsp往action中传中文参数,参数显示为乱码情况的解决办法

最近在公司开发项目的时候,遇到了一个问题,就是jsp往action里面传参数的时候,在action中为乱码的情况。于是回来做了个小demo,把问题以及解决方法展示如下。新建一个项目,具体过程不做展示,后面会附上源码。编写一个bean

package bean;
/**
*@author weilz
*/
public class User {
private String name;
private String password;
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getPassword() {
    return password;
}
public void setPassword(String password) {
    this.password = password;
}

}

设置xml文件



<struts>
<package name="helloworld" extends="struts-default">
    <action name="hello" class="action.HelloAction">
        <result name="success">hello.jspresult>
    action>
package>
struts> 

然后编写action,里面一共两个方法

package action;

import com.opensymphony.xwork2.ActionSupport;

import bean.User;

public class HelloAction extends ActionSupport{
private User people;


@Override
public String execute() throws Exception {
    // TODO Auto-generated method stub
    System.out.println("name is: "+people.getName()+" password is: "+people.getPassword());
    return "success";
}
public String second(){
    System.out.println("name is: "+people.getName()+" password is: "+people.getPassword()+" writen by second");
    return "success";
}

public User getPeople() {
    return people;
}


public void setPeople(User people) {
    this.people = people;
}


}

起始jsp页面

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
<script type="text/javascript" src="js/jquery.js">script>
<script type="text/javascript">
function eq(){
    var name=$("#iaccount").val();
    var password=$("#ipassword").val();
    var url="http://localhost:8080/HelloWorld1/hello!second.action?people.name="+encodeURIComponent(name,"utf-8")+"&people.password="+password;
    window.open(url);
}
script>
head>
<body>
 <form action="hello.action">
账号:<input id="iaccount" type="text" value="张三" name="people.name"/><br>
密码:<input id="ipassword" type="password" value="123" name="people.password" />
<input type="submit" value="演示1" />
form>
<input type="button" value="演示2" onclick="eq()" />
body>
html>

效果如下图所示
jsp往action中传中文参数,参数显示为乱码情况的解决办法_第1张图片
然后当我们点击演示1的时候,会在后台打出一个语句,来显示我们jsp传送进去的。
结果显示什么呢
这里写图片描述
这里写图片描述
显示的是乱码,那当我们点击演示2的时候,使用我们开发中用的特别多的一种形式,一定要给要传的参数做这种处理,encodeURIComponent(name,”utf-8”),否则会出错。效果如下:
这里写图片描述
这里写图片描述
遇到这种情况,在server.xml中,在我们使用的端口

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" />

比如我的是8080,后面添加上URIEncoding=”UTF-8”,变成如下形式

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

即可。jsp往action中传中文参数,参数显示为乱码情况的解决办法_第2张图片
这时候,我们在点击两个按钮的时候,传到后台的参数就正常了,效果如下所示这里写图片描述
最后附上源码地址:
https://download.csdn.net/download/qq_25611765/10568872

你可能感兴趣的:(java)