public class EncodingFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { // 1.强制转换 HttpServletRequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) resp; // 2.操作 HttpServletRequest myrequest = new MyRequest(request); // 增强后的request,解决了编码问题 response.setContentType("text/html;charset=utf-8"); // 3.放行 chain.doFilter(myrequest, response); } public void init(FilterConfig filterConfig) throws ServletException { } } // 装饰类 class MyRequest extends HttpServletRequestWrapper { private HttpServletRequest request; public MyRequest(HttpServletRequest request) { super(request); this.request = request; } // 重写关于获取请求参数的方法. @Override public String getParameter(String name) { Map<String, String[]> map = getParameterMap(); if (name == null) { return null; } String[] st = map.get(name); if (st == null || st.length == 0) { return null; } return st[0]; } @Override public String[] getParameterValues(String name) { Map<String, String[]> map = getParameterMap(); if (name == null) { return null; } String[] st = map.get(name); return st; } private boolean flag = true; //添加这个boolen值的目的是,当我传递的参数是多个的时候,我第一次就已经设置好了 我我的编码集,所以当我再次调用的时候,也就不需要修改编码集,再次修改的时候,还是会乱码。 @Override public Map getParameterMap() { // 1.得到所有请求参数的Map集合 Map<String, String[]> map = request.getParameterMap(); // 有编码问题. // 2.解决编码问题. if (flag) { for (String key : map.keySet()) { String[] values = map.get(key); for (int i = 0; i < values.length; i++) { try { values[i] = new String(values[i].getBytes("iso8859-1"), "utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } } flag = false; } return map; } }
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println(request.getParameter("msg1")); System.out.println(request.getParameter("msg2")); }
<body> <form action="/day21_2/demo6" method="get"> msg1:<input type="text" name="msg1"><br> msg2:<input type="text" name="msg2"><br> <input type="submit" value="提交"> </form> </body>
相关推荐
Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊的功能。
自己在学习CNN时总结下来的一些卷积核的创建规则和自己的感受
LEE滤波,对sar雷达,实现LEE滤波处理
mo phong mach loc thong thap bang altium
利用fiddler抓包工具,抓取微信公众号历史文章数据。再配合脚本精灵等工具实现自动化抓取数据
使用的技术有JavaBean、fillter、数据库等,能够实现新闻的发布功能,在发布之后能够进行对每一条新闻的删除、修改、或者继续增加新的文章,最后还能够进行查询功能,其中引用了百度编辑器,能够进行图文并茂的编辑
照片图片目录管理器
其中使用的技术有JavaBean、fillter、数据库等,能够实现新闻的发布功能,在发布之后能够进行对每一条新闻的删除、修改、或者继续增加新的文章,最后还能够进行查询功能,其中引用了百度编辑器,能够进行图文并茂的...
其中使用的技术有JavaBean、fillter、数据库等,能够实现新闻的发布功能,在发布之后能够进行对每一条新闻的删除、修改、或者继续增加新的文章,最后还能够进行查询功能,其中引用了百度编辑器,能够进行图文并茂的...
其中使用的技术有JavaBean、fillter、数据库等,能够实现新闻的发布功能,在发布之后能够进行对每一条新闻的删除、修改、或者继续增加新的文章,最后还能够进行查询功能,其中引用了百度编辑器,能够进行图文并茂的...
其中使用的技术有JavaBean、fillter、数据库等,能够实现新闻的发布功能,在发布之后能够进行对每一条新闻的删除、修改、或者继续增加新的文章,最后还能够进行查询功能,其中引用了百度编辑器,能够进行图文并茂的...
简单的新闻发布系统 支持管理员登录下面就让我们来说一说基于jsp的新闻发布系统,其中使用的技术有JavaBean、fillter、数据库等,能够实现新闻的发布功能,在发布之后能够进行对每一条新闻的删除、修改、或者继续...
我使用Wiki的公式: 所以它看起来像: double Yp; public double firstOrder_lowpassFilter(double X, double beta) { double Y; Y = beta * X + (1 - beta) * Yp; Yp = Y; return Y; } 如何使用? 1.您可以...
DirectShow就是我们平时弄得directx那个的开发了。它包含了视频渲染编码解码。也可以用于网络视频开发。网上也有写好的fillter可以直接拿过来使用。 DirectShow 实务精选这本书代码注解非常详细,讲的通透。
开发人员和测试人员可以使用它来添加垃圾值。对于开发人员来说,复活节彩蛋很多,他们会逐渐发现它们 ;)主要功能:-完全不需要配置 -只需点击浏览器右上角的扩展程序图标,即可填充值 -从您的输入中学习并在表格中...
一、启用了eslint,该项目包包含:main.js导入的常用框架组件(vant、mintUI、swiper、moment、VueJsonp、fastclick、VueLazyload、axios)。...九、components下的都可以删掉,只是为了方便写项目时测试使用
flash 渐隐遮罩实现 需要用都“位图缓存” 在本实例中实现了as控制的缓存设置与遮罩控制 适合于初学
On time delay estimation using an FIR fillter
NINE包含一组名为fillter的应用程序子项目。建置状态开发掌握最新的质量工作服开发掌握 编纂开发掌握 CodeFactor 开发掌握 更好的代码中心开发掌握文献资料该存储库仍在建设中。 我们正在努力尽快提供一些文档。 敬...
//实现框选放大缩小功能 function DragZoomControl(opts_boxStyle, opts_other, opts_callbacks) { this.globals = { draggingOn: false, cornerTopDiv: null, cornerRightDiv: null, ...