最近上实训课,老师要求用原生的Web技术来开发后端数据接口。讲真啊,自从用了框架,就好久没有用这些基础的技术了,虽然原理都是相同,只是用法不同而已。
怎么说呢?我觉得基础还是很重要的,框架是高度封装的,用的时候确实爽,但是一旦报错,不知道原理的话,更难定位和解决,所以我个人认为复习基础不但有助于理解框架的原理的,DEBUG的时候也能更加得心应手。
场景:现在有一个数据接口,查询出学生的分页列表,但是显示浏览器上会有乱码,接下来我们给出几种解决方式。
1、解决方法 1.1、方法1
在控制层的每个Servlet类的doPost或者doGet方法中加入以下两行代码即可。
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Type", "textml;charset=utf-8");
1.2、方法2
使用过滤器解决。
EncodingFilter.java代码如下:
package edu.zhku.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class EncodingFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain filterChain) throws IOException, ServletException {
// 将父接口转为子接口
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
// 获取请求方法
String method = request.getMethod();
// 解决post请求中文数据乱码问题
if (method.equalsIgnoreCase("post")) {
request.setCharacterEncoding("utf-8");
}
// 处理响应乱码
response.setContentType("text/html;charset=utf-8");
// 放行请求
filterChain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
}
web.xml代码如下:
UserLoginServlet edu.zhku.servlet.UserLoginServlet FindUserListByPage edu.zhku.servlet.FindUserListByPage UserLoginServlet /userLoginServlet FindUserListByPage /findUserListByPage EncodingFilter edu.zhku.filter.EncodingFilter EncodingFilter @WebFilter(" @Override public void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException { // 将父接口转为子接口 HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; // 获取请求方法 String method = request.getMethod(); // 解决post请求中文数据乱码问题 if (method.equalsIgnoreCase("post")) { request.setCharacterEncoding("utf-8"); } // 处理响应乱码 response.setContentType("text/html;charset=utf-8"); // 放行请求 filterChain.doFilter(request, response); } @Override public void init(FilterConfig filterConfig) throws ServletException { } }



