Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在J2EE web应用程序中从用户输入中删除预定义字符?_Java_Web Applications_Servlet Filters - Fatal编程技术网

Java 如何在J2EE web应用程序中从用户输入中删除预定义字符?

Java 如何在J2EE web应用程序中从用户输入中删除预定义字符?,java,web-applications,servlet-filters,Java,Web Applications,Servlet Filters,我们有一个使用SpringMVC的J2EEWeb应用程序。我们对web应用程序有一个新的要求,即必须从用户输入中删除某些预定义字符。例如,假设应用程序应该删除“如果您愿意,您可以执行客户端过滤,但是您绝对不应该依赖它。客户端可以关闭Javascript。归根结底,他们也可以发布自己喜欢的内容。客户端验证非常方便。它不能替代服务器端验证 至于使用servlet过滤器,我不确定我是不是一个超级粉丝。看起来(我可能错了)你是在试图保护自己不受懒惰、健忘或完全无能的开发人员的影响 此外,如果您在任何时候

我们有一个使用SpringMVC的J2EEWeb应用程序。我们对web应用程序有一个新的要求,即必须从用户输入中删除某些预定义字符。例如,假设应用程序应该删除“如果您愿意,您可以执行客户端过滤,但是您绝对不应该依赖它。客户端可以关闭Javascript。归根结底,他们也可以发布自己喜欢的内容。客户端验证非常方便。它不能替代服务器端验证

至于使用servlet过滤器,我不确定我是不是一个超级粉丝。看起来(我可能错了)你是在试图保护自己不受懒惰、健忘或完全无能的开发人员的影响

此外,如果您在任何时候都允许使用HTML(就像本网站所做的那样),那么您就不能将此类内容作为通用规则。这类事情应该在进行所有其他验证的地方处理。如果你真的担心的话,把单元测试放在周围

Servlet过滤器看起来很复杂,可能会有问题

您正在使用SpringMVC。您是否在Spring的验证器后面使用任何特定的验证框架?不管是什么情况,IMHO这是处理此类问题的正确场所,并且易于进行单元测试[sic]

我认为这是这类事情的正确观点


综上所述,如果您真的非常倾向于使用servlet过滤器中的setParameter,那么我看不出有任何技术上的原因导致您无法使用该方法。我当然会在servlet请求上覆盖setParameter。你能做到吗?即使你能,我也不会。

我建议你为此使用正则表达式

至于放在哪里,听起来像是业务逻辑,所以servlet过滤器或jsp级别听起来不是一个好主意


是的,这会影响性能,但不会引起注意或产生影响。

我会把问题转到面子上。是因为用户在字段中键入了<之类的字符,还是因为您在网页上再次打印时没有转义这些字符?

我刚刚阅读了另一篇StackOverflow文章,这篇文章可能会对使用Servlet过滤器有所帮助:


如果您可以使servlet过滤器足够通用,以便根据您的需要清理数据,那么使用servlet过滤器似乎是合理的。

我们使用的是Spring MVC框架。我也把它添加到了问题中。谢谢。出于好奇,你是从安全的角度这么做的吗?用户可以输入字符。客户端不想将它们存储在数据库中。他们也不希望显示任何警告或消息,通知用户不要键入此类字符。