JSP中用filter 过滤某个包中的所有servlet
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP中用filter 过滤某个包中的所有servlet相关的知识,希望对你有一定的参考价值。
请问我应该如何配置XML才可以让CommentFilter过滤web包下的所有servlet呢?
web.xml中这样配置:
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>com.zq.servlet.Login</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/servlet/Login</url-pattern>
</servlet-mapping>
或者不配置web.xml在servlet中写注解:
@WebServlet("/servlet/Login")
配置fliter可以在web.xml中这样写:
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>com.zy.filter.UserLoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
或者不配置web.xml在filter中写注解:
@WebFilter(filterName="/MyFilter",urlPatterns="/servlet/*")
即在所有想过滤的servlet名字前加上“/setvlet”在过滤的时候过滤路径就可以写成“/servlet/*”这样就能过滤所有的Servlet。
参考技术B 1、在Jsp页面将文本框输入域放在html表单form之中提交2、后台定义一个过滤器继承Filter.java
3、在过滤器中的doFilter方法中,将参数ServletRequest转化为HttpServletRequest
4、利用HttpServletRequest.getParameter();方法即可获取对应输入域的value值。
示例:
在Jsp页面:
<form>
<input type="text" name="username" value="zhangsan"/>
</form>
后台过滤器:
public class TestFilter implements Filter
@Override
public void destroy()
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filter) throws IOException, ServletException
HttpServletRequest res = (HttpServletRequest) request;
//获取页面的username输入框的值
String username = request.getParameter("username");
return;
@Override
public void init(FilterConfig arg0) throws ServletException
参考技术C 这个是没有办法的,项目发布,路径中是没有包的概念的
可以将servlet的路径统一加一个前缀/f/*servlet
然后过滤f下所有文件即可,否则只能将所有servlet路径一个一个配置进去 参考技术D 可以通过URL来进行过滤,首先你先要将所有的servlet的名称规范一下,比如 xxxServlet;
然后在web.xml中将CommentFilter的过滤范围配置成 /* ,过滤所有的请求,
最后在过滤器中获得请求的URL,在将含有Servlet的字符的URL处理处理掉,这样就达到过滤的效果了
以上是关于JSP中用filter 过滤某个包中的所有servlet的主要内容,如果未能解决你的问题,请参考以下文章
如何按 Django-filter 包中的日期字段进行过滤?