1、<form action="user!add" method="post"> 必表单提交方法必须为post,如果是get就出错
Action1.java
package com.ncepu.struts2;
public class Action1 {
private String name;
private String password; //传递参数的时候 用的是方法 而不是赋给属性,
//所以说将password改成userpassword下面方法setPassword不变也可以。
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;
}
public String add() {
System.out.println("添加的name="+name+"添加的password="+password);
return ("success");
}
}
struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<action name="user" class="com.ncepu.struts2.Action1">
<result name="success">
/add.jsp
</result>
</action>
</package>
</struts>
index.jsp
<body>
<!--必须为post-->
<form action="user!add" method="get">
姓名2
<input type="text" name="name">
密码1
<input type="text" name="password">
<input type="submit" value="submit" />
</form>
</body>
后台输出为:添加的name=°?????·?添加的password= °?·??÷
解决方法:
1、必须将<form action="user!add" method="post"> 必表单提交方法必须为post才正确。
2、对请求参数重新编码(参照http://blog.csdn.net/ncepustrong/article/details/7927027)
String name = new String(request.getParameter("name").getBytes("ISO8859-1"));
String password= new String(request.getParameter("password").getBytes("ISO8859-1"));
在此使用到了request,必须得到。
package com.ncepu.struts2;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class Action1 extends ActionSupport {
private static final long serialVersionUID = 1L;
HttpServletRequest request;
private String name;
private String password; // 传递参数的时候 用的是方法 而不是赋给属性,
// 所以说将password改成userpassword下面方法setPassword不变也可以。
public String getName() {
return name;
}
public Action1() {
request = ServletActionContext.getRequest();
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String add() throws UnsupportedEncodingException {
name = new String(request.getParameter("name").getBytes("ISO8859-1"));
password = new String(request.getParameter("password").getBytes("ISO8859-1"));
System.out.println("添加的name=" + name + "添加的password=" + password);
return ("success");
}
}