Java Servlet中能否在web.xml定义POST请求必填参数及正则匹配?
问题解答
不行,web.xml本身没办法直接定义POST请求参数的正则匹配规则。web.xml里的<init-param>是用来给Servlet或者Filter设置初始化配置的,不是专门用来处理请求参数校验的。
不过有几个替代方案可以实现你的需求:
- 在Servlet里通过init-param复用正则规则:你可以把参数的正则表达式放在Servlet的
<init-param>里,比如:
然后在Servlet的<servlet> <servlet-name>YourApiServlet</servlet-name> <servlet-class>com.yourapp.YourApiServlet</servlet-class> <init-param> <param-name>nameRegex</param-name> <param-value>^[A-Za-z0-9]{3,10}$</param-value> </init-param> </servlet>init()方法里读取这个配置并存为类变量,之后处理POST请求时,用这个正则去校验request.getParameter("name")的值,同时判断是否为null。 - 用Filter做统一参数校验:写一个通用的参数校验Filter,把需要校验的参数名和对应的正则放在Filter的
<init-param>里,让所有需要校验的请求都经过这个Filter。这样不用每个Servlet都写重复的校验代码,维护起来更方便。 - 换用更适合的框架:如果项目允许的话,换成JAX-RS(比如Jersey)或者Spring MVC这类REST框架,它们自带
@Pattern这类参数校验注解,直接加在参数上就能实现正则匹配,比原生Servlet的写法简洁很多。
内容的提问来源于stack exchange,提问作者VIKAAS A
相关产品推荐
相关产品推荐

