Java Web——过滤器
<h3 class="study-hd">《<a href="http://www.imooc.com/learn/213" target="_blank">Java Web开发技术应用——过滤器》 <p class="best-text mb-10">①以常规的方式调用资源(即,调用servlet或JSP页面)。 <p class="best-text mb-10">②利用修改过的请求信息调用资源。 <p class="best-text mb-10">③调用资源,但在发送响应到客户机前对其进行修改。 <p class="best-text mb-10">④阻止该资源调用,代之以转到其他的资源,返回一个特定的状态代码或生成替换输出。 <p class="best-text mb-10">? <p class="best-text mb-10">用户请求——>过滤器——>WEB资源——>过滤器——>用户 过滤器的生命周期 1.实例化 web.xml ?在web容器启动时依据web.xml实例化 2.初始化 init() 3.过滤 doFilter() 4.销毁 destroy() 配置: 可以通过Design界面快速配置 过滤器需要实现接口javax.servlet.Filter,开始以为是类……找了好久…… 需要实现三个方法 ? destroy() {}? ? doFilter(ServletRequest arg0,ServletResponse arg1,FilterChain arg2) IOException,ServletException {}? ? init(FilterConfig arg0) ServletException {}? 在doFilter中实现逻辑 如果多个过滤器对应一个路径 那么按照在web.xml的中定义的顺序执行过滤器 请求——>过滤器1——>过滤器2——>Servlet——>过滤器2——>过滤器1——>用户 过滤器的分类:(默认是request ASYNC:Servlet中异步执行过滤器和业务逻辑内容。 ERROR:处理error-page FORWARD:通过request.getRequestDispatcher("url").forward(request,response);或者 INCLUDE:通过request.getRequestDispatcher("url").include(request,response);或者 REQUEST:通过链接直接访问,或者通过response.sendRedirect("url"); 在web.xml里面配置error-page
404
/error.jsp
在类上面通过注解配置过滤器 @WebFilter(filterName="...",value={"/....jsp"},dispatcherTypes={DispatcherType.REQUEST,DispatcherType.ASYNC}) public class FilterName implements Filter {...} 案例:登录校验,如果没有登录,不能直接通过url访问登录后才能访问的页面 (突然发现右键有Servlet的选项,内心是崩溃的……窝每次都是新建java类…… <span style="color: #0000ff;"><! <span style="color: #ff00ff;">DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"<span style="color: #0000ff;">><span style="color: #0000ff;"><<span style="color: #800000;">html<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">head<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">base <span style="color: #ff0000;">href<span style="color: #0000ff;">="<%=basePath%>"<span style="color: #0000ff;">>
<span style="color: #0000ff;"></ <span style="color: #800000;">head<span style="color: #0000ff;">><span style="background-color: #ffff00; color: #000000;"><% <span style="background-color: #f5f5f5; color: #000000;">request.setCharacterEncoding(<span style="background-color: #f5f5f5; color: #800000;">"<span style="background-color: #f5f5f5; color: #800000;">utf-8<span style="background-color: #f5f5f5; color: #800000;">"<span style="background-color: #f5f5f5; color: #000000;">); <span style="background-color: #ffff00; color: #000000;">%> <span style="color: #0000ff;">< <span style="color: #800000;">body<span style="color: #0000ff;">><span style="color: #0000ff;"><<span style="color: #800000;">form <span style="color: #ff0000;">action<span style="color: #0000ff;">="<%=request.getContextPath() %>/servlet/LoginServlet"<span style="color: #ff0000;"> method<span style="color: #0000ff;">="post"<span style="color: #0000ff;">><span style="color: #000000;"> 用户名:<span style="color: #0000ff;"><<span style="color: #800000;">input <span style="color: #ff0000;">type<span style="color: #0000ff;">="text"<span style="color: #ff0000;"> name<span style="color: #0000ff;">="username"<span style="color: #0000ff;">><span style="color: #000000;"> 密码:<span style="color: #0000ff;"><<span style="color: #800000;">input <span style="color: #ff0000;">type<span style="color: #0000ff;">="password"<span style="color: #ff0000;"> name<span style="color: #0000ff;">="password"<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">input <span style="color: #ff0000;">type<span style="color: #0000ff;">="submit"<span style="color: #ff0000;"> value<span style="color: #0000ff;">="提交"<span style="color: #0000ff;">> <span style="color: #0000ff;"></<span style="color: #800000;">form<span style="color: #0000ff;">> <span style="color: #0000ff;"></<span style="color: #800000;">body<span style="color: #0000ff;">> <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.IOException;
<span style="color: #0000ff;">import<span style="color: #000000;"> java.io.PrintWriter; <span style="color: #0000ff;">import<span style="color: #000000;"> javax.servlet.ServletConfig; <span style="color: #0000ff;">public <span style="color: #0000ff;">class LoginServlet <span style="color: #0000ff;">extends<span style="color: #000000;"> HttpServlet {
} <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.IOException;
<span style="color: #0000ff;">import<span style="color: #000000;"> javax.servlet.Filter; <span style="color: #0000ff;">public <span style="color: #0000ff;">class LoginFilter <span style="color: #0000ff;">implements<span style="color: #000000;"> Filter {
<span style="color: #000000;">
}
LoginFilter
This is the description of my J2EE component
This is the display name of my J2EE component
LoginServlet
com.imooc.servlet.LoginServlet
<span style="color: #0000ff;">< <span style="color: #800000;">servlet-mapping<span style="color: #0000ff;">><span style="color: #0000ff;"><<span style="color: #800000;">servlet-name<span style="color: #0000ff;">>LoginServlet<span style="color: #0000ff;"></<span style="color: #800000;">servlet-name<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">url-pattern<span style="color: #0000ff;">>/servlet/LoginServlet<span style="color: #0000ff;"></<span style="color: #800000;">url-pattern<span style="color: #0000ff;">> <span style="color: #0000ff;"></<span style="color: #800000;">servlet-mapping<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">welcome-file-list<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">welcome-file<span style="color: #0000ff;">>index.html<span style="color: #0000ff;"></<span style="color: #800000;">welcome-file<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">welcome-file<span style="color: #0000ff;">>index.htm<span style="color: #0000ff;"></<span style="color: #800000;">welcome-file<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">welcome-file<span style="color: #0000ff;">>index.jsp<span style="color: #0000ff;"></<span style="color: #800000;">welcome-file<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">welcome-file<span style="color: #0000ff;">>default.html<span style="color: #0000ff;"></<span style="color: #800000;">welcome-file<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">welcome-file<span style="color: #0000ff;">>default.htm<span style="color: #0000ff;"></<span style="color: #800000;">welcome-file<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">welcome-file<span style="color: #0000ff;">>default.jsp<span style="color: #0000ff;"></<span style="color: #800000;">welcome-file<span style="color: #0000ff;">> <span style="color: #0000ff;"></<span style="color: #800000;">welcome-file-list<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">filter<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">filter-name<span style="color: #0000ff;">>LoginFilter<span style="color: #0000ff;"></<span style="color: #800000;">filter-name<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">filter-class<span style="color: #0000ff;">>com.imooc.filter.LoginFilter<span style="color: #0000ff;"></<span style="color: #800000;">filter-class<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">init-param<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">param-name<span style="color: #0000ff;">>noLoginPaths<span style="color: #0000ff;"></<span style="color: #800000;">param-name<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">param-value<span style="color: #0000ff;">>login.jsp;fail.jsp;LoginServlet<span style="color: #0000ff;"></<span style="color: #800000;">param-value<span style="color: #0000ff;">> <span style="color: #0000ff;"></<span style="color: #800000;">init-param<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">init-param<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">param-name<span style="color: #0000ff;">>charaset<span style="color: #0000ff;"></<span style="color: #800000;">param-name<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">param-value<span style="color: #0000ff;">>GBK<span style="color: #0000ff;"></<span style="color: #800000;">param-value<span style="color: #0000ff;">> <span style="color: #0000ff;"></<span style="color: #800000;">init-param<span style="color: #0000ff;">> <span style="color: #0000ff;"></<span style="color: #800000;">filter<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">filter-mapping<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">filter-name<span style="color: #0000ff;">>LoginFilter<span style="color: #0000ff;"></<span style="color: #800000;">filter-name<span style="color: #0000ff;">> <span style="color: #0000ff;"><<span style="color: #800000;">url-pattern<span style="color: #0000ff;">>/*<span style="color: #0000ff;"></<span style="color: #800000;">url-pattern<span style="color: #0000ff;">> <span style="color: #0000ff;"></<span style="color: #800000;">filter-mapping<span style="color: #0000ff;">> <span style="color: #0000ff;"></<span style="color: #800000;">web-app<span style="color: #0000ff;">> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |