乱码的解决
当提交域名称为中文,如name=张三就会乱码
Struts2中采用属性来解决
在 struts.xml 加
<constant name="struts.i18n.encodeing" value="GBK"/><!--国际化信息内码-->
1 . 通过过滤器来解决乱码,Spring MVC中提供CharacterEncodingFilter来解决(只对POST提交方法有效),在web.xml自定义Filter(在Servlet前面)
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<body>
<form action="hello.do" method="post">
name<input type="text" name="name">
<input type="submit" value="submit">
</form>
<br>
</body>
@RequestMapping("/hello")
public String hello(String name,ModelMap model){
model.addAttribute("name", name);
System.out.println(name);
return "index.jsp";//注意是没有视图解析器的时候
}
2 . GET方式(直接在URL输入)
(1)修改tomcat的Server.xml配置文件解决
将
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
改为
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
(2) 自定义乱码解决的过滤器
最后不要忘记统一编码,尤其不要忘记修改JSP的PageEncoding,以后我们的项目和页面的编码都设置为utf-8
调试记载:
1 . ctrl+shift+T打开类可以看到参数描述,如上述的characterEncodingFilter就会发现有Encoding参数,就可以通过init-param定义。
2 . 导入源码
Attach source→找到相关的sources.jar(如spring web sources.jar)
3 . ctrl+点击进入JDK查看实现细节(和ctrl+shift+T搜索一样)
4 .URI是用来标识网上的资源的
URI分为URL和URN这两大类。
URL与URN的不同之处在于前者不仅标识资源,而且还指出了访问资源的方式。比如采用何种协议(http,ftp…),而URN则没有。