方法一:
第一步:修改配置文件
进入tomcat对应版本文件夹-->conf-->serve.xml,右击用记事本打开
将<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
maxThreads="100"
redirectPort="8443" />
改为:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
maxThreads="100"
URIEncoding="utf-8"
compression="on"
compressionMinSize="2048"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
redirectPort="8443" />
保存修改。
第二步:
如果采用的是doGet()方法,
则在方法体内部 PrintWriter pw = response.getWriter();语句之前加上如下两行代码:response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
如果采用的是doPost()方法,
则在PrintWriter pw = response.getWriter();之前加上如下三行代码:
在PrintWriter pw = response.getWriter();之前加上如下三行代码:
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
方法二:(推荐第二种办法)
使用过滤器,新建一个过滤器的类,在该类中设置编码格式,接着在web.xml配置过滤器的类,这样其他servlet文件就算不写编码格式的相关代码,也不会出现乱码了。
第一步:新建一个过滤器的类:
import javax.servlet.*; import java.io.IOException; public class characterFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { servletRequest.setCharacterEncoding("utf-8"); servletResponse.setCharacterEncoding("utf-8"); filterChain.doFilter(servletRequest,servletResponse); } @Override public void destroy() { } }
第二步:在web.xml中配置过滤器
<filter> <filter-name>characterFilter</filter-name> <filter-class>characterFilter</filter-class> </filter> <filter-mapping> <filter-name>characterFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping><url-pattern>/*</url-pattern>代表所有要运行的文件运行时先要进行该过滤器方法的过滤,把所有代码格改为utf-8。
保存修改 在打开服务器的情况下刷新页面,获取的就不是乱码了。
声明:原创文章,请勿转载。