为什么覆盖HttpServletRequestWrapper中的方法时,编译给我警告。

我编写的一个过滤器程序,功能是对客户端提交的请求中的某些字符进行转换,具体代码如下:
package michael;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;

public final class MyRequestWrapper extends HttpServletRequestWrapper
{
public MyRequestWrapper(HttpServletRequest request)
{
super(request);
}

     //重点看这个地方,我的这个类是从HttpServletRequestWrapper继承而来,父类中也有个getParameter().
public java.lang.String getParameter(java.lang.String name)
{
    String value=super.getParameter(name);
    if(null!=value)
        return toHtml(value.trim());
    else
        return null;
}

private String toHtml(String str)
{
    if(str==null)
        return null;
    StringBuffer sb=new StringBuffer();
    int len=str.length();
    for(int i=0; i<len; i++)
    {
        char c=str.charAt(i);
        switch(c)
        {
            case ' ':
                sb.append("&nbsp");
                break;
            case '\n':
                sb.append("<br>");
                break;
            case '\r':
                break;
            case '\'':
                sb.append("&#39;");
                break;
            case '<':
                sb.append("&lt;");
                break;
            case '>':
                sb.append("&gt;");
                break;
            case '&':
                sb.append("&amp");
                break;
            case '"':
                sb.append("&#34");
                break;
            case '\\':
                sb.append("&#92");
                break;
            default:
                sb.append(c);
        }
    }
    return sb.toString();
}

}

重点看上面注释的地方,我不过是覆盖了父类的一个方法,而且该方法在父类中是public的,按道理应该不可能出错的,可是编译的时候就给我报这个错,如下图所示,我用的是jdk1.5,tomcat6.0.16。大家帮忙给我看下,谢谢了!

0
扫码支付0.1元 ×
其他相关推荐
记录_HttpServletRequestWrapper(前台请求过滤的用法)
Servlet规范中所引入的filter令人心动不已,因为它引入了一个功能强大的拦截模式。Filter是这样一种Java对象,它能在request到达servlet的服务方法之前拦截HttpServletRequest对象,而在服务方法转移控制后又能拦截HttpServletResponse对象。你可以使用filter来实现特定的任务,比如验证用户输入,以及压缩web内容。但你拟富有成效地使用过滤
编译中出现的警告要管吗?
【提问】请问编译程序时,出现警告,但又不影响程序运行,要管吗?【回答】当然要管。凡是出现的警告都是有道理的,搞清楚它。当确认它不会造成对运行结果有影响时,才可以去忽略。有时,警告是因为写得不规范,改一种写法,对自己也是锻炼。警告往往是因为会对内存调度等有潜在的威胁,大多数情况下不会出错,而一旦出错,就是灾难性的。平时我们电脑蓝屏,手机卡死,大多数就是这样来的。所以遇到警告,搞明白它,这是长功夫的最好
【Qt】全局忽略编译警告
msvc编译器从2010 sp1开始就已经开始支持UTF-8的源码文件了(未考证,因为我自己用的是msvc2013,反正是可以支持UTF-8的) 但是在编译时仍然会出现4819的警告 网上搜了下答案,都说用“#pragma warning(disable:4819)”来解决,但是我测试根本就不好用,仍然会出现警告 而且这个方法对编译文件顺序是敏感的,你得把这句放在第一
keil 编译时出现错误和警告总结
1、ERROR L104: MULTIPLE PUBLIC DEFINITIONS重复定义         c/c++语言中有很多地方要用到extern,但是如果没有真正的了解它的意义,会给编程带来很大的麻烦,为了使大家少走弯路,特祥细的说明一下。       对于比较小的程序,一般只有一个c文件和一个头文件,全局变量我们通常会直接定义在c文件中,在程序之前加int i定义。如果要在头
第三篇:VS2012中,调用opencv库,在程序中定义了变量,编译没有问题,运行时会报错“变量使用没有定义”
我在函数的初始化初始化了,但是开始可以运行,但是一段时间后会报错,使用的变量没有定义,错误截图 最后发现:程序在调用函数的时候,会使用该变量,我用该变量存了一个数,下一次调用的时候会使用,所以会报错,原因是,函数内部的变量在函数调用完毕后将变量释放,存储的数就不存在了,下一次调用的时候,存储的数不存在了。所以会报这个错,导致实际上我们定义了,报错说没有定义。正确的方法是将该变量定义为全局
keil常见警告
keil中常见的几种警告,固然,相对于错误的,警告的程度不及错误的严重性,有时候忽略,会出现意想不到的错误。先看看常见的几种错误,分析出来现的原因。 1. Warning 280:’i’:unreferenced local variable 说明 局部变量 i 在函数中未作任何的存取操作 解决方法 消除函数中 i变量的宣告 2 Warning 206:’Music3’:m
Java编译时类型与运行时类型以及重载和覆盖方法选择
首先来看看Java中的编译时类型与运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,会出现所谓的多态。因为子类其实是一种特殊的父类,因此java允许把一个子类对象直接赋值给一个父类引用变量,无须任何类型转换,或者被称为向上转型,由系统自动完成。     引用变量在编译阶段只能调用其编译时类型所具有的方法,但运行时则执行它运
HttpServletRequestWrapper应用(二):包装文件上传请求
应用一:HttpServletRequestWrapper结合过滤器处理中文乱码   应用二:包装文件上传请求 目的:通过HttpServletRequestWrapper包装文件上传请求,模块化文件上传处理,提高代码复用率,简化开发。   文件上传采用的是commons-fileupload文件上传组件1.2.1版(同时需要commons-io-1.4.jar)。 考虑到将来有可...
【Servlet】利用 HttpServletRequestWrapper 实现对request body的二次读取,可用于记录日志
        最近项目上有一个需求,在api上收到的请求,需要在springmvc转化成实体参数之前把request body读取出来记录日志。         在通常的响应流程上,使用了request.getInputStream()之后,流就会失效,即这个request body的流只能读取一次,这也是流本身的特性所致(当然,还有一种特殊的流——推回输入流PushbackInputStre...
idea 使用maven编译项目时出现源码版本警告的处理方式
在IntelliJ IDEA 15中使用Maven时,IDEA将默认的编译版本、源码版本设置为jdk5。编译项目的时候出现警告:”Warning:java: 源值1.5已过时, 将在未来所有发行版中删除”,并且无法编译jdk1.5以上的代码。 出现这样的原因应该是Maven插件的默认配置有问题。解决方法是在”pom.xml”里加入如下代码: properties> maven.co
MDK4编译过程中出现的错误以及警告解释
在做数据处理的时候,出现warning: #223-D: function &quot;abs&quot; declared implicitly添加:float abs(float __x);//防止abs warning, 原因不明确, 可能是math.h与stdlib.h中都有abs()吧,用stdlib.h替换math.h也可解决问题1.warning: #550-D: variable &quot;d&quot; was se...
使用RequestWrapper代理类后同时获取form和json数据
问题:使用RequestWrapper类后,造成了部分post请求,controller无法获取到入参而导致项目部分功能不可用 原因:InputStream只可读取一次。  由于​RequestWrapper里读取了InputStream,导致request的流已空,所以controller里面getParameter无法获取到内容 解决方案:根据ContentType类型做不同处理 im...
用DEV-C++,code::blocks时编译是总是有警告
32:2 C:\Dev-Cpp\include\c++\3.4.2\backward\backward_warning.h #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.
重写request的getSession方法实现集群session共享
我们在用redis实现session共享的时候,会遇到这样的问题:当一个用户登陆后,可能集群环境下给你分配到另一台服务器,这时候你用request.getSession()获取的session是现在服务器上的session,里面没有你想要的用户信息,然后你又要重新登录,这样是你会同意吗,肯定不行的,所以我们不需要系统自动创建session了,我们来自己写一个实现共享;首先实现重写的第一步就是使用过...
Keil uVision5软件编译时出现的警告和错误的解决方法总结
一、警告(Warning)的解决方法汇总 1、*** WARNING L16: UNCALLEDSEGMENT, IGNORED FOR OVERLAY PROCESS*** 意思:在代码中存在没有被调用过的变量或函数。 举例:IIC.c文件中的I2CReadACK()这个函数在本项目中没有被使用,就会产生这个警告,在实际应用终于到这种类型的警告时,可以忽略不管,不会对程序的功能实现产生任何不良的...
【使用HttpServletRequestWrapper重写Request请求参数的一点思考】
前言    我觉得这篇文章 百度仅此一份!!!    做javaweb项目时,相信大家都遇到或者解决过防止xss攻击的问题,核心思想就是HttpServletRequestWrapper这个类.   https://www.cnblogs.com/cach/p/8052108.html 这篇文章进行了简单了配置说明。但是本篇博客目的不在于此。   在filter里如何修改提交的参数呢?  ...
使用HttpServletRequestWrapper来修改post请求中的json数据
文章目录过滤的效果:具体的实现代码: 公司里最近在做一个新的项目,项目中所有的请求都是这样的一个格式。 因为version版本号在业务里并没有用到,只是一个验证依据,所以就想把它过滤掉。 过滤的效果: 过滤前 { &amp;amp;quot;version&amp;amp;quot; : &amp;amp;quot;11111111&amp;amp;quot;, &amp;amp;quot;data&amp;amp;quot;: { &amp;amp;quot;heartbeat_
Android Studio 生成Release版,报Warning的解决办法
Android Studio在调试的时候可以选择debug版或者release版。 release版顾名思义就是发行版,所以对比debug版对代码的准确度更加严格。 但是我们在开发的过程中往往会导入第三方的库,从而方便开发。而库中没有用到的方法在生成release版的时候就会报Warning 比如: 解决办法: 在 build.gradle
使用HttpServletRequestWrapper在filter修改request参数
NULL 博文链接:https://rensanning.iteye.com/blog/1706208
解决sublime在编译出错或警告时额外显示系统path的问题
解决sublime在编译出错或警告时额外显示系统path的问题最近在配置sublime text3的C语言环境,但是发现每次运行程序时一旦程序出错或者出现警告。折腾了半天,解决方案如下: 找到sublime text3安装目录,在目录下找到Packages里的Default.sublime-package, 比如Sublime Text 3\Packages\Default.sublime-pack
【Effective Java笔记】第9条:覆盖equals时总要覆盖hashCode
该篇博客阐述覆盖equals时总要覆盖hashcode,之前隐隐约约写过几次hashcode,但也没搞清楚为什么要去覆盖hashcode,而且也听别人说覆盖hashcode很简单,只需要随意返回一个整型数就好了,反反复复看了这个条目,终于弄明白为什么要hashcode了,而应当遵循一些约定 该篇博客主要阐述 1、覆盖equals必须覆盖hashCode,why? 2、覆盖eq...
为什么覆盖equals时也要覆盖hashCode方法
参考自《effective java》第九条。现在假设我们有一个矩形类Rectangle public class Rectangle { private int length; private int width; public Rectangle(int length, int width) { this.length = length; ...
继承HttpServletRequestWrapper 实现request中流的重复获取
业务场景:需要打印所有的api请求的信息到log中,在Filter中拦截了所有的api请求,但是打印的信息中需要包含api请求的body,如果在Filter中使用request.getInputStream()来获取流来得到body中的信息,可以达到预期效果,但是流的获取只能获取一次,之后再获取就获取不到了,导致controller无法拿到参数。 解决办法:HttpServletRequestW
VS 2008忽略警告的方法
VS 2008忽略警告的方法。
编译时警告处理(一)
directory not found for option 'xxx' 看警告你的是找不到哪个路径,然后在building settings,搜索frame 出现的下图中最下面一行。删除相应的路径就行。
覆盖equals方法时总是要覆盖hashCode
覆盖equals方法 忽略equals的约定,程序很有可能会运行不正常,直至崩溃。因为没有一个类是孤立的,类之间是相互传递调用的。例如集合类,依赖于传递给它的对象是否遵循equals约定。 覆盖equals方法,必须遵守的通用约定 自反性。对于任何非null的引用值x,x.equals(x)必须返回true 对称性。对于任何非null的引用值x和y,当前仅当y.equals(x)返...
第十一条:谨慎地覆盖clone方法
这一条告诉我们,clone接口在定义时就没有指明一个类在实现时应该承担哪些责任,所以我想这个接口如果不是当初设计不良,就是后来的实现与当初设计偏离的。 clone方法设想提供一种不需要构造器就可以创建对象的方法。它方法要求x.clone()!=x, 且x.clone().getClass()==x.getClass(),且通x.clone().equals(x), 这些规定很弱。比如x.cl
xcode如何去掉编译过期警告
有时候使用第三方的代码,编译的时候总是提醒方法过期 可以在过期的代码中加入注释去掉警告 #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" value = [tlsSettings objectForKey:(NSString *)kCFStreamSSLAllo
为什么在覆盖equals的同时一般也要 覆盖hashcode
举例来说:        Java中的集合(Collection)有两类,一类是List,再有一类是Set。前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。要想保证元素不重复,可两个元素是否重复应该依据什么来判断呢? 这就是Object.equals方法了。但是,如果每增加一个元素就检查一次,那么当元素很多时,后添加到集合中的元素比较的次数就非常多了。 也就是说,如果集合中现...
解决vs2013+wdk7 编译nt系统wdm驱动 error C2220: 警告被视为错误 - 没有生成“object”文件
error C2220: 警告被视为错误 - 没有生成“object”文件
java泛型学习-泛型的产生原因,使用方法以及具体的警告
如果缺乏能力,自由反而是一种负担   --使用Ubuntu有感 看魔乐的李兴华JAVA视频,视频倒是几年前百度云就存好了,也放在电脑上好久了.最近在重新补习JAVA,正好翻到了这些视频, 从接受的角度而言,视频讲解比看书要容易得多,只是自己一直有一种强迫症似的感觉,喜欢看书学习. 殊不知这是效率最低的方法,今天学的知识点其实时一个小时就能搞懂的知识点,但是因为知识缺陷的原因此前看到别的代
java,属性覆盖,方法覆盖
class Rootb { int x = 1; public Rootb(int i) { } public int getI() { return x; } public void setI(int x) { this.x = x; } } class Stemb extends Rootb { private int x =
HttpServletRequestWrapper采用装饰模式重新封装request,并打印request请求相关参数。
说明: 本篇文章采用过滤器的方式,通过HttpServletRequestWrapper重新封装request,以用来实现打印请求相关日志的操作。其中,该日志过滤器主要针对 POST中传值在BODY中的方式,来实现相关日志打印的操作。 具体的说明以及代码如下: 1。 RequestLoggingFilter过滤器,以及相关的工具类等。 package com.ffcs.ic
makefile 警告:覆盖关于目标“xxxx”的命令
出现这个原因是因为在Makefile中有两个xxxx命令
Java覆盖中应该注意的地方
关于Override有几点要注意的地方: 1.被覆盖方法的访问控制级别可以不一样。 例如上例父类的showMess方法的访问级别为protected的,而子类覆盖的showMess方法访问级别则为public的。 但子类的访问级别必须要高于父类被覆盖方法的访问级别,如果父类是public的而子类是protected的则是错误的。 2.方法被定义为private
Android studio使用过程中提示过时操作怎么办?
某一天导入一个项目以后,出现一堆的过时警告,如下 出现这个问题该怎么办呢? 首先,检查一下这个过时提醒会不会影响兼容性等问题,在gradle中添加如下代码: lintOptions { checkReleaseBuilds false abortOnError false } 添加后记得清理一下项目 然后对于一些不可兼容的自己写的代码
HttpServletRequestWrapper 实现xss注入 跨站点脚本编制
主要用到commons-lang3-3.1.jar这个包的org.apache.commons.lang3.StringEscapeUtils.escapeHtml4()这个方法 web.xml配置filter &amp;lt;filter&amp;gt; &amp;lt;filter-name&amp;gt;XssEscape&amp;lt;/filter-name&amp;gt; ...
java代码中黄色警告是否会对程序编译和运行有性能上的影响
java代码中黄色警告是否会对程序编译和运行有性能上的影响?如对泛型没有处理,会出现黄色警告,会不会影响编译和运行的效率? 其实这是个很垃圾的问题,不过还是要请各位IT门给予解答或是板砖。其实是为那些对这种无聊问题斤斤计较的人的看的。
iOS Categroy触类旁通-category和方法覆盖
我们已经知道category其实并不是完全替换掉原来类的同名方法,只是category在方法列表的前面而已,所以我们只要顺着方法列表找到最后一个对应名字的方法,就可以调用原来类的方法: Class currentClass = [MyClass class]; MyClass *my = [[MyClass alloc] init]; if (currentClass) {     u
Android Studio编译提示警告xxx已过时
例如:警告: [deprecation] android.hardware中的Camera已过时 一般是警告,不是错误,也可以打包成功,但编译有时会失败。 屏蔽警告方法: app的目录下build.gradle添加: lintOptions { checkReleaseBuilds false abortOnError false } 根目录下build.gradle添加...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 为什么学python 为什么学习产品经理