方法一
<% request.setCharacterEncoding("utf-8");%>
<!--设置request的编码方式-->
<jsp:useBean id="user" class="model.User"></jsp:useBean>
<jsp:setProperty name="user" property="*"></jsp:setProperty>
方法二
对于以post方式提交的表单编码格式默认为ISO-8859-1的编码格式,而这种编码格式是不能编码中文的,所以就会出现乱码的现象了。对于这种情况,我们可以对表单中的数据进行处理,在取得表单参数的时候设置编码方式。<jsp:useBean id="user" class="model.User"></jsp:useBean>
<jsp:setProperty name="user" property="*"></jsp:setProperty>
<%
user.setUsername(new String(user.getUsername().getBytes("ISO-8859-1"),"utf-8"));
%>
方法三
使用过滤器设置编码。
新建EncodingFilter,代码如下:
@WebFilter(filterName = "EncodingFilter")
public class EncodingFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest)req;
request.setCharacterEncoding("utf-8");
chain.doFilter(request, resp);
}
public void init(FilterConfig config) throws ServletException {
}
}
在web.xml中配置过滤器
<!--编码过滤器-->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>filter.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
如果表单是get方式提交的,还需要修改Tomcat安装目录下"conf/server.xml"配置文件,指定URLEncoding(默认为ISO-8859-1),否则依然会乱码。修改如下
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>