当前位置: 首页 > news >正文

滑县住房城乡建设厅门户网站网站活动专题页面

滑县住房城乡建设厅门户网站,网站活动专题页面,wordpress 采集 公众号,wordpress php版本1.Filter 1.过滤器概述 过滤器——Filter#xff0c;它是JavaWeb三大组件之一。另外两个是Servlet和Listener 它可以对web应用中的所有资源进行拦截#xff0c;并且在拦截之后进行一些特殊的操作 在程序中访问服务器资源时#xff0c;当一个请求到来#xff0c;服务器首…1.Filter 1.过滤器概述 过滤器——Filter它是JavaWeb三大组件之一。另外两个是Servlet和Listener 它可以对web应用中的所有资源进行拦截并且在拦截之后进行一些特殊的操作 在程序中访问服务器资源时当一个请求到来服务器首先判断是否有过滤器与请求资源相关联如果有过滤器可以将请求拦截下来完成一些特定的功能再由过滤器决定是否交给请求资源。如果没有则像之前那样直接请求资源了。响应也是类似的 过滤器一般用于完成通用的操作例如登录验证、统一编码处理、敏感字符过滤等 2.Filter概述 Filter 是一个接口如果想实现过滤器的功能必须实现该接口 核心方法 返回值方法名作用voidinit(FilterConfig config)初始化方法voiddoFilter(ServletRequest req,ServletResponse resp,FilterChain chain)对请求资源和响应资源过滤voiddestory()销毁方法 配置方式 注解方式 配置文件  3.FilterChain FilterChain 是一个接口代表过滤器链对象。由 Servlet 容器提供实现类对象直接使用即可。 过滤器可以定义多个就会组成过滤 核心方法 返回值方法名作用voiddoFilter(ServletRequest req,ServletResponse resp)放行方法 如果有多个过滤器在第一个过滤器中调用下个过滤器依次类推。直到到达最终访问资源 如果只有一个过滤器放行时就会直接到达最终访问资源 4.过滤器的使用  需求说明 通过Filter过滤器解决多个资源写出中文乱码的问题 实现步骤 1.创建一个web项目 2.创建两个Servlet功能类都向客户端写出中文数据 3.创建一个Filter过滤器实现类重写doFilter核心方法 4.在方法内部解决中文乱码并放行 5.部署并启动项目 6.通过浏览器测试 package filter;import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException; /*过滤器基本使用 */ WebFilter(/*) public class FilterDemo01 implements Filter {Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println(filterDemo01执行了...);//处理乱码servletResponse.setContentType(text/html;charsetUTF-8);//放行filterChain.doFilter(servletRequest,servletResponse);} }5.过滤器的使用细节 配置方式 注解方式 WebFilter(拦截路径) 配置文件 filterfilter-namefilterDemo01/filter-namefilter-classfilter.FilterDemo01/filter-class /filter filter-mappingfilter-namefilterDemo01/filter-nameurl-pattern/*/url-pattern /filter-mapping多个过滤器使用顺序 如果有多个过滤器取决于过滤器映射的顺序 也就是filter-mapping配置的先后顺序 6.过滤器的生命周期 创建出生 当应用加载时实例化对象并执行 init 初始化方法 服务活着 对象提供服务的过程执行 doFilter 方法 ​​​​​ 只要应用一直提供服务对象就一直存在 销毁死亡 当应用卸载时或服务器停止时对象销毁。执行 destroy Filter的实例对象在内存中也只有一份。所以也是单例的 package filter;import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException;WebFilter(/*) public class FilterDemo03 implements Filter {//初始化方法Overridepublic void init(FilterConfig filterConfig) {System.out.println(对象初始化成功了...);}//提供服务方法Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println(filterDemo03执行了...);//处理乱码servletResponse.setContentType(text/html;charsetUTF-8);//放行filterChain.doFilter(servletRequest,servletResponse);}//对象销毁Overridepublic void destroy() {System.out.println(对象销毁了...);} } web.xml filterfilter-namefilterDemo03/filter-namefilter-classfilter.FilterDemo03/filter-class/filterfilter-mappingfilter-namefilterDemo03/filter-nameurl-pattern/*/url-pattern/filter-mapping 7.FilterConfig过滤器配置对象 FilterConfig 是一个接口。代表过滤器的配置对象可以加载一些初始化参数。与ServletConfig类似 核心方法 返回值方法名作用StringgetFilterName()获取过滤器对象名称StringgetInitParameter(String key)根据key过去valueEnumerationgetInitParameterNames()获所有参数的keyServletContextgetServletContext()获取应用上下文对象 package filter;import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException;WebFilter(/*) public class FilterDemo04 implements Filter {//初始化方法Overridepublic void init(FilterConfig filterConfig) {System.out.println(对象初始化成功了...);//获取过滤器名称String filterName filterConfig.getFilterName();System.out.println(filterName);//根据name获取valueString username filterConfig.getInitParameter(username);System.out.println(username);}//提供服务方法Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println(filterDemo04执行了...);//处理乱码servletResponse.setContentType(text/html;charsetUTF-8);//放行filterChain.doFilter(servletRequest,servletResponse);}//对象销毁Overridepublic void destroy() {System.out.println(对象销毁了...);} } web.xml filterfilter-namefilterDemo04/filter-namefilter-classfilter.FilterDemo04/filter-classinit-paramparam-nameusername/param-nameparam-valuezhangsan/param-value/init-param/filterfilter-mappingfilter-namefilterDemo04/filter-nameurl-pattern/*/url-pattern/filter-mapping 8.过滤器五种拦截行为  Filter 过滤器默认拦截的是请求但是在实际开发中我们还有请求转发和请求包含以及由服务器触发调用的全局错误页面。默认情况下过滤器是不参与过滤的要想使用就需要我们配置 filterfilter-namefilterDemo05/filter-namefilter-classFilter.FilterDemo5/filter-class!--配置开启异步支持当dispatcher配置ASYNC时需要配置此行--async-supportedtrue/async-supported /filter filter-mappingfilter-namefilterDemo05/filter-nameurl-pattern/index.jsp/url-pattern!--过滤请求默认值。--dispatcherREQUEST/dispatcher!--过滤全局错误页面当由服务器调用全局错误页面时过滤器工作--dispatcherERROR/dispatcher!--过滤请求转发当请求转发时过滤器工作。--dispatcherFORWARD/dispatcher!--过滤请求包含当请求包含时过滤器工作。它只能过滤动态包含jsp的include指令是静态包含过滤器不会起作用--dispatcherINCLUDE/dispatcher!--过滤异步类型它要求我们在filter标签中配置开启异步支持--dispatcherASYNC/dispatcher /filter-mapping2.Listener  1.监听器概述 观察者设计模式所有的监听器都是基于观察者设计模式的 三个组成部分 事件源触发事件的对象。 事件触发的动作里面封装了事件源。 监听器当事件源触发事件时要做的事情。一般是一个接口由使用者来实现。 监听器 在程序当中我们可以对对象的创建销毁、域对象中属性的变化、会话相关内容进行监听 Servlet 规范中共计 8 个监听器监听器都是以接口形式提供具体功能需要我们自己来完成 2.监听对象的监听器 1.ServletContextListener用于监听 ServletContext 对象的创建和销毁 核心方法 返回值方法名作用voidcontextInitialized(ServletContextEvent sce)对象创建时执行该方法voidcontextDestroyed(ServletContextEvent sce)对象销毁时执行该方法 参数ServletContextEvent 代表事件对象 事件对象中封装了事件源也就是 ServletContext 真正的事件指的是创建或销毁 ServletContext 对象的操作 2.HttpSessionListener用于监听 HttpSession 对象的创建和销毁 核心方法 返回值方法名作用voidsessionCreated(HttpSessionEvent se)对象创建时执行该方法voidsessionDestroyed(HttpSessionEvent se)对象销毁时执行该方法 参数HttpSessionEvent 代表事件对象 事件对象中封装了事件源也就是 HttpSession 真正的事件指的是创建或销毁 HttpSession 对象的操作 3.ServletRequestListener用于监听 ServletRequest 对象的创建和销毁 核心方法 返回值方法名作用voidrequestInitialized(ServletRequestEvent sre)对象创建时执行该方法voidrequestDestroyed(ServletRequestEvent sre)对象销毁时执行该方法 参数ServletRequestEvent 代表事件对象 事件对象中封装了事件源也就是 ServletRequest 真正的事件指的是创建或销毁 ServletRequest 对象的操作 3.监听域对象属性变化的监听器 1.ServletContextAttributeListener用于监听 ServletContext 应用域中属性的变化 核心方法 返回值方法名作用voidattributeAdded(ServletContextAttributeEvent scae)域中添加属性时执行该方法voidattributeRemoved(ServletContextAttributeEvent scae)域中移除属性时执行该方法voidattributeReplaced(ServletContextAttributeEvent scae)域中替换属性时执行该方法 参数ServletContextAttributeEvent 代表事件对象 事件对象中封装了事件源也就是 ServletContext 真正的事件指的是添加、移除、替换应用域中属性的操作 2.HttpSessionAttributeListener用于监听 HttpSession 会话域中属性的变化 核心方法 返回值方法名作用voidattributeAdded(ServletSessionBindingEvent se)域中添加属性时执行该方法voidattributeRemoved(ServletSessionBindingEvent se)域中移除属性时执行该方法voidattributeReplaced(ServletSessionBindingEvent se)域中替换属性时执行该方法 参数HttpSessionBindingEvent 代表事件对象 事件对象中封装了事件源也就是 HttpSession 真正的事件指的是添加、移除、替换会话域中属性的操作 3.ServletRequestAttributeListener用于监听 ServletRequest 请求域中属性的变化 核心方法 返回值方法名作用voidattributeAdded(ServletRequestAttributeEvent srae)域中添加属性时执行该方法voidattributeRemoved(ServletRequestAttributeEvent srae)域中移除属性时执行该方法voidattributeReplaced(ServletRequestAttributeEvent srae)域中替换属性时执行该方法 参数ServletRequestAttributeEvent 代表事件对象 事件对象中封装了事件源也就是 ServletRequest 真正的事件指的是添加、移除、替换请求域中属性的操作 4.监听会话相关的感知性监听器 1.HttpSessionBindingListener用于感知对象和会话域绑定的监听器 核心方法 返回值方法名作用voidvalueBound(HttpSessionBindingEvent event)数据添加到会话域中(绑定时)执行该方法voidvalueUnbound(HttpSessionBindingEvent event)数据从会话域中移除(解绑时)执行该方法 参数HttpSessionBindingEvent 代表事件对象 事件对象中封装了事件源也就是 HttpSession 真正的事件指的是添加、移除会话域中数据的操作 2.HttpSessionActivationListener用于感知会话域中对象钝化和活化的监听器 核心方法 返回值方法名作用voidsessionWillPassivate(HttpSessionEvent se)会话域中数据钝化时执行该方法voidsessionDidActivate(HttpSessionEvent se)会话域中数据活化时执行该方法 参数HttpSessionEvent 代表事件对象 事件对象中封装了事件源也就是 HttpSession 真正的事件指的是会话域中数据钝化、活化的操作 5.监听器的使用 在实际开发中我们可以根据具体情况来从这8个监听器中选择使用 感知型监听器由于无需配置只需要根据实际需求编写代码 ServletContextListener package listener;import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener;/*ServletContext对象的创建和销毁的监听器//配置监听器WebListener*/ WebListener public class ServletContextListenerDemo implements ServletContextListener {/*ServletContext对象创建的时候执行此方法*/Overridepublic void contextInitialized(ServletContextEvent sce) {System.out.println(监听到了对象的创建...);//获取对象ServletContext servletContext sce.getServletContext();System.out.println(servletContext);}/*ServletContext对象销毁的时候执行此方法*/Overridepublic void contextDestroyed(ServletContextEvent sce) {System.out.println(监听到了对象的销毁...);} }ServletContextAttributeListener package listener;import javax.servlet.ServletContext; import javax.servlet.ServletContextAttributeEvent; import javax.servlet.ServletContextAttributeListener; import javax.servlet.annotation.WebListener;/*应用域对象中的属性变化的监听器*/ WebListener public class ServletContextAttributeListenerDemo implements ServletContextAttributeListener {/*向应用域对象中添加属性时执行此方法*/Overridepublic void attributeAdded(ServletContextAttributeEvent scae) {System.out.println(监听到了属性的添加...);//获取应用域对象ServletContext servletContext scae.getServletContext();//获取属性Object value servletContext.getAttribute(username);System.out.println(value);}/*向应用域对象中替换属性时执行此方法*/Overridepublic void attributeReplaced(ServletContextAttributeEvent scae) {System.out.println(监听到了属性的替换...);//获取应用域对象ServletContext servletContext scae.getServletContext();//获取属性Object value servletContext.getAttribute(username);System.out.println(value);}/*向应用域对象中移除属性时执行此方法*/Overridepublic void attributeRemoved(ServletContextAttributeEvent scae) {System.out.println(监听到了属性的移除...);//获取应用域对象ServletContext servletContext scae.getServletContext();//获取属性Object value servletContext.getAttribute(username);System.out.println(value);} } 修改ServletContextListenerDemo在contextInitialized中增加 //添加属性 servletContext.setAttribute(username,zhangsan);//替换属性 servletContext.setAttribute(username,lisi);//移除属性 servletContext.removeAttribute(username);用配置文件方式第一种为注解方式 ?xml version1.0 encodingUTF-8? web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0!--配置监听器--listenerlistener-classlistener.ServletContextListenerDemo/listener-class/listenerlistenerlistener-classlistener.ServletContextAttributeListenerDemo/listener-class/listener /web-app
http://www.pierceye.com/news/2916/

相关文章:

  • 租凭境外服务器做违规网站医院风格 wordpress
  • 三里河网站建设公司两颗米网站建设
  • 英文旅游网站建设唯品会 只做特卖的网站
  • 门户网站是指提供什么的网站上海突发新闻
  • 企业做网站域名需要自己申请吗小程序代理需要
  • 网站 app微信三合一撤销网站备案
  • 网站主页尺寸华为怎么设置安全网站
  • 山东省建设节能协会网站宠物网站开发文档
  • 四川住房和建设厅网站有用的网站地址
  • 如何查到网站建设路由 拦截 网站开发
  • 建设常规的网站报价是多少钱个人网站备案与企业备案
  • 湖北响应式网站制作营销型网站北京
  • 哪个网站做相片书好电子商务的网站开发
  • 昆明网站seo诊断包头索易网站建设
  • seo蒙牛伊利企业网站专业性诊断南京百度推广优化排名
  • 邯郸哪儿能做网站遵义网站制作和推广
  • 单页网站设计欣赏教育网站建设策划书
  • 百度站点做自媒体的网站有哪些
  • 做计算机网站网站三大要素是什么意思
  • 一加官方网站进入mvc5做博客网站
  • 那些网站被k恢复是怎么做的wordpress 主题 最简单
  • 爱网站关键词查询费用网站建设
  • 做网站抬头wordpress wiki主题
  • 成都手机网站建设哪家公司好网页设计素材网站花
  • 大学国际化网站建设app是怎么制作的
  • 做推广网站dw学校网站制作教程
  • 做早餐的网站怎样建立网站的快捷方式
  • 郑州网站外包邢台网站建设服务周到
  • 在线建设房屋设计网站无锡响应式网站设计
  • 做外贸都用什么网站高校网站群建设的公司有哪些