zoukankan      html  css  js  c++  java
  • HttpServletRequestWrapper类的使用

    HttpServletRequestWrapper类的使用
    servlet规范中中引入的filter是非常有用的,因为它引入了一个功能强大的拦截模式。

    filter是这样的一种java对象。它可以在request到达servlet之前拦截HttpServletRequest对象,也可以在服务方法转移控制后拦截HttpServletResponse对象。

    我们可以使用filter对象完成的任务有:检查用户的输入、以及压缩web内容。

    但是,当我们在使用filter的时候却会发现至少有一半的时间我们都想改变HttpServletRequest对象的参数。如:用filter在HttpServletRequest对象到达Servlet之前将用户输入的空格去掉。但是由于java.util.Map包装的HttpServletRequest对象的参数是不可改变的,那要怎么办呢?

    幸运的是,尽管我们不能改变对象本身,但是可以通过装饰模式来改变其状态。

    比如在上文中编写的内部类Request就是HttpServletRequest类的装饰类。

    该类继承的HttpServletRequestWrapper类是HttpServletRequest类的装饰类。

    这在jsp/servlet 中是非常有用的,web程序通过调用httpServletRequest对象的getParameter方法来处理表单,因此通过重写装饰类中的此方法就可以改变HttpServletRequest对象的状态。所以在上题的内部类Request中就重写了getParameter方法和getParameterValues方法。

    因此,想要改变在httpServletRequest中的参数,可以通过httpServletRequest的装饰类HttpServletRequestWrapper来实现,只需要在装饰类中按照需要重写其getParameter(getParameterValues)方法即可。

  • 相关阅读:
    ubuntu配置jdk和tomcat+部署java项目[最佳实践]
    jQuery TreeGrid
    关于json的一些误解
    jQuery2.0.3源码分析-1(持续更新中......)
    webstrom一些常用快捷键
    js插件-Map插件
    webstorm-删除项目
    随笔-20131209
    软件开发模式对比(瀑布、迭代、螺旋、敏捷)
    javascript学习(10)——[知识储备]链式调用
  • 原文地址:https://www.cnblogs.com/xuhewei/p/11474389.html
Copyright © 2011-2022 走看看