最近写一个程序,url中需要传递中文参数,弄了很久找不到原因。后来到网上查了下前辈们的做法,试着做了下终于成功了。现在总结如下:
1、配置tomcat。在server.xml的 <Connector port="9007" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />中加入URIEncoding="UTF-8"。这步很关键,我之所以没找到原因就是这个没配好。
2、利用sturts2给我们的过滤器在web.xml中编写一个配置文件。
<filter> <filter-name>struts-cleanup</filter-name> <filter-class> org.apache.struts2.dispatcher.ActionContextCleanUp </filter-class> </filter> <filter-mapping> <filter-name>struts-cleanup</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3、在struts.xml中加入以下语句
<struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <constant name="struts.i18n.encoding" value="UTF-8" /> ... </struts>
4、在jsp里
<%@page contentType="text/html;charset=UTF-8" %>
...
<table>
<tr>
<td>序号</td><td>课程编号</td><td>课程名字</td><td>查询题型</td></tr>
<%int i = 0; %>
<s:iterator value="courseList">
<tr>
<td><%=++i %></td>
<td><s:property value="courseId"/></td>
<td><s:property value="courseName"/></td>
<td><a href="<s:url value='findCourseByName.action'>
<s:param name='courseName' value='courseName'/>
</s:url>">进入</a>
</td>
</tr>
</s:iterator>
</table>
5、action中测试
public String findCourseByName() throws Exception{
System.out.println("println: " + courseName );
return SUCCESS;
}
6、运行显示结果为
println: 测试