JavaWeb之过滤器实现统一编码案例
来源:互联网 发布:vb中四舍五入取整函数 编辑:程序博客网 时间:2024/06/07 19:46
01-编写EncodingFilter
import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.Map;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.HttpServletRequestWrapper;import javax.servlet.http.HttpServletResponse;/** * 统一编码 * @author Administrator * */public class EncodingFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// TODO Auto-generated method stub}@Overridepublic void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {//1.强转HttpServletRequest request=(HttpServletRequest) req;HttpServletResponse response=(HttpServletResponse) resp;//2.放行chain.doFilter(new MyRequest(request), response);}@Overridepublic void destroy() {// TODO Auto-generated method stub}}class MyRequest extends HttpServletRequestWrapper{private HttpServletRequest request;private boolean flag=true;public MyRequest(HttpServletRequest request) {super(request);this.request=request;}@Overridepublic String getParameter(String name) { if(name==null || name.trim().length()==0){return null;}String[] values = getParameterValues(name);if(values==null || values.length==0){return null;}return values[0];}@Override/** * hobby=[eat,drink] */public String[] getParameterValues(String name) {if(name==null || name.trim().length()==0){return null;}Map<String, String[]> map = getParameterMap();if(map==null || map.size()==0){return null;}return map.get(name);}@Override/** * map{ username=[tom],password=[123],hobby=[eat,drink]} */public Map<String,String[]> getParameterMap() { /** * 首先判断请求方式 * 若为post request.setchar...(utf-8) * 若为get 将map中的值遍历编码就可以了 */String method = request.getMethod();if("post".equalsIgnoreCase(method)){try {request.setCharacterEncoding("utf-8");return request.getParameterMap();} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}}else if("get".equalsIgnoreCase(method)){Map<String,String[]> map = request.getParameterMap();if(flag){for (String key:map.keySet()) {String[] arr = map.get(key);//继续遍历数组for(int i=0;i<arr.length;i++){//编码try {arr[i]=new String(arr[i].getBytes("iso8859-1"),"utf-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}}}flag=false;}//需要遍历map 修改value的每一个数据的编码return map;}return super.getParameterMap();}}
02-注册过滤器
<filter> <filter-name>EncodingFilter</filter-name><filter-class>com.hngy.web.filter.encode.EncodingFilter</filter-class></filter><filter-mapping><filter-name>EncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
阅读全文
1 0
- JavaWeb之过滤器实现统一编码案例
- JavaWeb之过滤器实现自动登录案例
- JavaWeb编码过滤器
- javaWEB字符编码过滤器
- 【JavaWeb-12】Listener监听3个方面、Filter过滤器、全局编码过滤器案例
- JSP页面统一编码过滤器
- 过滤器_编码统一处理
- javaweb全站编码过滤器
- javaweb之过滤器
- JavaWeb之Java过滤器
- javaweb之过滤器
- javaWeb之过滤器Filter
- 【JavaWeb】之过滤器Filter
- javaweb之压缩过滤器
- javaWeb之过滤器
- javaweb之过滤器监听器
- 过滤器Filter--编码转换案例
- Filter过滤器,统一网站字符编码
- React小白入门---环境安装
- IT行业风投
- iptables详解
- 删除数组最后一项,不在原数组操作
- 访问者模式
- JavaWeb之过滤器实现统一编码案例
- 刷新购物车的操作以及创建订单
- 初窥ajax(二) ——封装jsonp
- 跟着鱼C学HTML学习记录0
- MappingJackson2HttpMessageConverter(undone)
- luoguP2596 [ZJOI2006]书架(splay)
- 蓝桥杯 ADV_193 算法提高 新建Microsoft Word文档 (java)
- 数据结构实验之排序二:交换排序
- 服务器主动向客户端发送信息机制