Filter 简单应用实例求详解

2019-03-25 13:43|来源: 网路

web.xml


<filter>
<filter-name>AdminFilter</filter-name>
<filter-class>szy.shopping.filter.AdminFilter</filter-class>
<init-param>
<param-name>url</param-name>
<param-value>/admin/login.jsp</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>AdminFilter</filter-name>
<url-pattern>/admin/index.jsp</url-pattern>
</filter-mapping>






AdminFilter.java

public class AdminFilter implements Filter{
String url = "/";
@Override
public void destroy() {

}

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession();
if (session.getAttribute("admin") == null) {
res.sendRedirect(req.getContextPath() + url);
return ;
}
chain.doFilter(request, response);
}

@Override
public void init(FilterConfig config) throws ServletException {
url = config.getInitParameter("url");
}


}



能不能详细说明以上两段代码的具体解释?大致的流程是怎么样的?

问题补充:
lianj_lee所说的这个权限判断是我写程序调用,还是它自动根据XML来调用验证是否登录?


还有

<filter>
<filter-name>AdminFilter</filter-name>
<filter-class>szy.shopping.filter.AdminFilter</filter-class>
<init-param>
<param-name>url</param-name>
<param-value>/admin/login.jsp</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>AdminFilter</filter-name>
<url-pattern>/admin/index.jsp</url-pattern>
</filter-mapping>

可否在详细说明?谢谢~

相关问答

更多
  • Python实现以及使用 代码实现网上有很多,有时间可以研究一下 使用:我下载了github上的模块,使用mmap速度更快。 通俗点儿来讲: 1、该句引入模块 from pybloomfilter import BloomFilter 2、Reference如下 常用的函数有: class pybloomfilter.BloomFilter(capacity : int, error_rate : float, filename : string) static BloomFilter.open(filen ...
  • http://unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm 看看这个,有不会的通过消息问我。
  • 你去下载一本大话设计模式之小菜编程成长记,里面有详细的讲说,而且看着也不枯燥 网址: http://download.csdn.net/source/356266
  • PHP 5.3.3过滤器代码中使用的正则表达式基于Michael Rushton关于电子邮件地址验证的博客。 它似乎适用于你提到的情况。 您还可以查看比较电子邮件地址验证正则表达式中的一些选项(PHP中当前使用的正则表达式是其中一种测试)。 然后,您可以选择一个更好的正则表达式,并在调用preg_match()使用它。 否则,您可以采用正则表达式并替换文件PHP / ext / filter / logical_filter.c,函数php_filter_validate_email() ,然后重新php_ ...
  • 我认为你应该在你的SQL中使用OR: SELECT * FROM TABLE WHERE User = 'warheat1990' AND (Status <> 'REV' OR SecretId IS NULL) 这是数学知识:你想匹配条件“不(A和B)”,那么你可以使用等效表达式((不是A)或(不是B)),所以你应该使用OR而不是AND。 I think you should use OR in your SQL: SELECT * FROM TABLE WHERE User = 'warheat19 ...
  • 如果您使用的是vuejs2,则已删除 vuejs2大写过滤器。 你必须使用toUpperCase() ,如下所示: {{message.toUpperCase()}} 看看演示 。 同样, orderBy过滤器也已被删除,vuejs2建议在计算属性中使用lodash的orderBy (或可能是sortBy ): HTML

    {{ item.name }}

    VUE computed: { orderedLis ...
  • 看起来您需要的是第一个符合条件的条目的关键部分。 这样的事情(单线故意)应该有所帮助: val currentIndexName = indexToAliasMappings.filterValues { it["aliases"]?.containsKey(alias) ?: false }.keys.firstOrNull() ?: "" Looks like what you need is the key part of the first entry that matches your crit ...
  • 你必须删除其中一个| {{400 | ordinal}} 你不会得到任何反馈,因为400不匹配任何'其他'如果'并且你没有在那种情况下返回任何东西。 You have to remove one of the | {{400 | ordinal}} You won't get anything back anyways becouse the 400 doesn´t match any 'else if' and you are not returning anything in that scenar ...
  • 似乎有一些补丁 。 There seem to be some patch for that.