解决jsp传递给struts action中文乱码问题

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Hello World</title>
</head>
<body>
	<h1>Hello World From Struts2</h1>
	<form action="hello">
		<label for="name">Please enter your name</label><br /> 
			<input type="text" name="name" /> 
			<input type="submit" value="Say Hello" />
	</form>
</body>
</html>

这里名为hello的action类代码以下html

public class HelloWorldAction {
	   private String name;

	   public String execute() throws Exception {
	      return "success";
	   }
	   
	   public String getName() {
	      return name;
	   }

	   public void setName(String name) {
			this.name = name;
	   }
}

jsp把表单<input type="text" name="name" /> 的内容经过setName传递给HelloWorldAction的name属性,这个过程使用的默认编码是iso-8859-1,这就产生了乱码,由于struts的编码是UTF-8。java

解决办法就是在setName里编码转换。修改后的HelloWorldAction代码jsp

import java.io.UnsupportedEncodingException;

public class HelloWorldAction {
	   private String name;

	   public String execute() throws Exception {
	      return "success";
	   }
	   
	   public String getName() {
	      return name;
	   }

	   public void setName(String name) {
	      try {
			this.name = new String(name.getBytes("iso-8859-1"),"utf-8");
		} catch (UnsupportedEncodingException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
	   }
相关文章
相关标签/搜索