精华内容
下载资源
问答
  • 把传统的web项目迁移到SpringBoot中,少不了web.xml中的context-param、Servlet、Filter和Listener等定义的迁移。    对于Servlet、Filter和Listener相关定义转换相对来说比较明确: Servlet定义的迁移 一般...

    把传统的web项目迁移到SpringBoot中,少不了web.xml中的context-param、Servlet、Filter和Listener等定义的迁移。
        
     对于Servlet、Filter和Listener相关定义转换相对来说比较明确:

    Servlet定义的迁移

    一般servlet的迁移

    示例如下:

    @WebServlet("/jsonIndexSearchServlet")
    public class JsonIndexSearchServlet extends HttpServlet {
    ...
    }

    FacesServlet的迁移

     

    @Bean
        public ServletRegistrationBean servletRegistrationBean() {
            FacesServlet servlet = new FacesServlet();
            //, "*.jsf"
            ServletRegistrationBean bean = new ServletRegistrationBean(servlet);
            bean.setOrder(40);
            bean.setName("FacesServlet");
            List<String> urlPattern = new ArrayList<>();
            urlPattern.add("*.jsf");
            bean.setUrlMappings(urlPattern);
            return bean;
        }

    不过,对于jsf项目来说,这样还不够,仍然需要web.xml的定义,具体原因暂时不明,后续有空再研究。(Bean注入和web.xml定义,两边都不能少,否则均报异常,具体我在后续的博客中会详细提及。)

    web.xml定义:

    <servlet>
    		<servlet-name>FacesServlet</servlet-name>
    		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>FacesServlet</servlet-name>
    		<url-pattern>*.jsf</url-pattern>
    	</servlet-mapping>

    Filter定义的迁移

    示例如下:

        @Bean
        public FilterRegistrationBean rewriteFilter() {
            FilterRegistrationBean rwFilter = new FilterRegistrationBean(new RewriteFilter());
            rwFilter.setDispatcherTypes(EnumSet.of(DispatcherType.FORWARD, DispatcherType.REQUEST,
                    DispatcherType.ASYNC, DispatcherType.ERROR));
            rwFilter.addUrlPatterns("/*");
            rwFilter.setOrder(30);
            return rwFilter;
        }

     

    Listener定义的迁移

    示例如下:

        @Bean
        public ServletListenerRegistrationBean<ServletContextListener> setStartupServletContextListener(){
        	ServletListenerRegistrationBean<ServletContextListener> result = new ServletListenerRegistrationBean<>();
        	result.setListener(new StartupServletContextListener());
        	result.setOrder(20);
        	return result;
        }

     

    context-param定义的迁移

        对于content-param定义的转换,网上的例子就很少了。
        有人建议使用以下方法来实现,但我尝试失败了:

        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        	return builder.sources(Application.class);
        }
        
        @Override
        public void onStartup(ServletContext servletContext) throws ServletException {
        	//web.xml context-param
        	servletContext.setInitParameter("org.apache.myfaces.AUTO_SCROLL", "true");
        	super.onStartup(servletContext);
        }

     我在debug时发现,这两个方法的断点根本就没进来,也就是说这两个方法未被调用。
        
      后来还是在万能的stackoverflow网站上找到方法——使用InitParameterConfiguringServletContextInitializer。

    示例如下:

        @Bean
        public InitParameterConfiguringServletContextInitializer initParamsInitializer() {
            Map<String, String> contextParams = new HashMap<>();
            contextParams.put("org.apache.myfaces.AUTO_SCROLL", "true");
            return new InitParameterConfiguringServletContextInitializer(contextParams);
        }

    文章结束。

    展开全文
  • vue中定义过滤器filter

    千次阅读 2019-02-28 15:46:56
    1、在普通项目中进行定义使用 定义: (1)在Vue实例的filters方法上定义: let vue=new Vue({ el:'#box', data:{ inputData:'' }, filters:{ ...(2)使用Vue的filter方法进行定义(注...

    1、在普通项目中进行定义使用

    定义:

    (1)在Vue实例的filters方法上定义:

    let vue=new Vue({
    		el:'#box',
    		data:{
    			inputData:''
    		},
    		filters:{
    			filterData(data){
    				return Math.abs(data)
    			}
    		}
    	})
    

    (2)使用Vue的filter方法进行定义(注意必须定义在vue实例化之前,否则使用时会产生报错)

    Vue.filter('addOne',(num)=>{
    		return parseFloat(num)+1
    	})
    let vue=new Vue({
    		el:'#box',
    		data:{
    			inputData:''
    		},
    		filters:{
    			filterData(data){
    				return Math.abs(data)
    			}
    		}
    })
    

    使用

    (1)在属性上进行使用,使用$options.filter.addOne()的方式

    <span v-html="$options.filters.addOne(inputData)"></span>
    

    (2)直接使用

    <span>{{inputData|addOne}}</span>
     <!--针对标签的属性-->
    <div v-bind:id="inputData|addOne"></div>
    

    2、在vue-cli项目中定义使用

    定义

    (1)局部定义

    export default {
        name: "recom-list",
        data(){
          return {
            recomList:[]
          }
        },
        components: {
          blockTitle,
          goodList
        },
        filters:{
          addOne(data){
            return parseFloat(data)+1
          }
        }
    }
    

    (2)全局定义

    Vue.filter('addOne', (data) => {
      const _data = data.filter((item, index) => {
        return parseFloat(data)+1
    });
    

    如果定义的全局filter较多,可以创建一个filters.js文件,存放所有的全局filter
    在这里插入图片描述

    const filters = {
      getEvenList(data) {
        const _data = data.filter((item, index) => {
          if (index % 2) {
            return item
          }
        });
        return _data
      }
    };
    export default filters
    

    然后在main.js中将filter遍历调用Vue的filter方法添加到全局:

    import filters from './filters'
    
    for(let i in filters){
      Vue.filter(i,filters[i]);
    }
    

    使用

    使用方式与普通项目的使用方式一致

    3、总结

    filter被设计出来的目的,主要是用来处理文本格式化等操作,因此在vue的一些指令上使用filter就显得有些臃肿,需要调用**$options.filters.**进行调用,在这里可以定义一个方法来替代filter;
    在这里插入图片描述

    展开全文
  • Web应用中Filter定义和使用

    千次阅读 2013-05-09 17:32:41
    web开发中,客户端发来请求时,可以对请求和回应信息...定义过滤器类 必须实现 java.servlet.Filter接口  实现三个方法: 1、init(FilterConfigfilterConfig) 初始化过滤器,在Servlet容器启动时(一般为tomcat启

    web开发中,客户端发来请求时,可以对请求和回应信息进行过滤,或者说对RequestResponse进行拦截。比如对数据编码,加解密,验证用户合法性,过滤垃圾数据等。

     

    定义过滤器类

    必须实现 java.servlet.Filter接口  

    实现三个方法:

    1、init(FilterConfigfilterConfig) 初始化过滤器,在Servlet容器启动时(一般为tomcat启动时)创建Filter实例的时候就会调用该方法,所以如果修改了其中的内容,需要重启tomcat才行。多用于读取web.xml文件中Servlet过滤器的初始化参数。

                                                                            

    2、doFilter(ServletRequest request,ServletResponseresponse,FilterChain chain)  进行过滤处理,所有过滤处理都在这个方法中实现

    处理完毕,需要调用chain.doFilter(request,response)方法,把请求继续向后传递,可以是对下一个过滤器doFilter方法的调用,或者相应的web组件。所以Filter采用了职责链设计模式。

    然后继续在这等着其他请求,类似于Servletservice()

     

    3、destroy() 过滤器销毁  Servlet容器在销毁过滤器实例之前该方法得到调用,以释放占用的资源。

     

    设置字符集

    response

    页面中文显示:

    <%@ page language="java"contentType="text/html; charset=GB18030"

     

    使用PrintWriter输出中文

    response.setContentType("text/xml;charset=utf-8");

     

    request

    否则,每个Servlet或者JSP都需要设置request字符集,例如

    // 设置request字符集(文件头设置response字符集)

             request.setCharacterEncoding("GB18030");

     

    原理图


     

    CharsetEncodingFilter.java

    public class CharsetEncodingFilter implements Filter {
     
     //设置默认的字符集,避免忘了配置Filter文件设置字符集导致出现乱码
    private String encoding = "UTF-8";
     
    @Override
    public void doFilter(ServletRequest request, ServletResponseresponse,
    FilterChain chain) throws IOException, ServletException {
     
    // 设置字符集
    //                request.setCharacterEncoding("GBK");
    request.setCharacterEncoding(encoding);
     
    // 继续执行
    chain.doFilter(request, response);
    }
     
    @Override
    public void init(FilterConfig filterConfig) throwsServletException {
    //从配置文件中CharsetEncodingFilter的init-param中取值,如果没有的话就使用默认的
    encoding = filterConfig.getInitParameter("encoding");
    }
     
    @Override
    public void destroy() {
     
    }
    }

     

    web.xml

    <filter>
    <filter-name>CharsetEncodingFilter</filter-name>
    <filter-class>com.java.drp.util.filter.CharsetEncodingFilter</filter-class>
    <init-param>
    <param-name>encoding</param-name>
    <param-value>GBK</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>CharsetEncodingFilter</filter-name>
    <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>CharsetEncodingFilter</filter-name>
    <url-pattern>/servlet/*</url-pattern>
    </filter-mapping>

     


    防止url跳转,判断用户是否已登录

    AuthFilter.java

     

    		public class AuthFilter implements Filter {
    		
    			@Override
    			public void destroy() {
    			}
    		
    			@Override
    			public void doFilter(ServletRequest request, ServletResponse response,
    					FilterChain chain) throws IOException, ServletException {
    				
    				HttpServletRequest req = (HttpServletRequest)request;
    				HttpServletResponse resp = (HttpServletResponse)response;
    				
    				// /DRP6.3/login.jsp
    				String reqURI = req.getRequestURI();
    				// 截取字符串,得到/login.jsp
    				String subReqURI = reqURI.substring(reqURI.indexOf("/", 1), reqURI.length());
    				
    				// 如果是登陆页或者验证码的servlet,继续执行;否则进行验证
    				if (!"/login.jsp".equals(subReqURI) && !"/servlet/util/AuthImageServlet".equals(subReqURI)) {
    					// 如果用户没有登录,则跳到登陆页
    					HttpSession session = req.getSession(false);
    					if (session == null || session.getAttribute("user_info") == null) {
    						resp.sendRedirect(req.getContextPath() + "/login.jsp");
    						return;
    					}
    				}
    				// 继续执行
    				chain.doFilter(request, response);
    			}
    		
    			@Override
    			public void init(FilterConfig arg0) throws ServletException {
    				
    			}
    		
    		}


    web.xml

     

    		<filter>
    			<filter-name>AuthFilter</filter-name>
    			<filter-class>com.java.drp.util.filter.AuthFilter</filter-class>
    		</filter>
    		<filter-mapping>
    			<filter-name>AuthFilter</filter-name>
    			<url-pattern>*.jsp</url-pattern>
    		</filter-mapping>
    		<filter-mapping>
    			<filter-name>AuthFilter</filter-name>
    			<url-pattern>/servlet/*</url-pattern>
    		</filter-mapping>
    


    //改善登陆页:当session过期,子页面跳出框架,变成登陆页

    if(window.self != window.top){

    //用当前窗口位置引用覆盖顶层窗口位置引用,使得没有父亲引用

    window.top.location = window.self.location;

    }

     

    Web Cache

    对于在一定时间内不变的图片或者js文件等,无需每次请求都重新加载,而是放在缓存中。

    还可以使用第三方产品 OSCache

     

    WebCacheFilter.java

    publicclass WebCacheFilter implements Filter {
     
    @Override
    publicvoid destroy() {
     
    }
     
    @Override
    publicvoid doFilter(ServletRequest req, ServletResponse resp,
    FilterChainchain) throws IOException, ServletException {
     
    HttpServletRequestrequest = (HttpServletRequest)req;
    HttpServletResponseresponse = (HttpServletResponse)resp;
     
    //设置Cache-control
    response.setHeader("Cache-control","max-age=5000");
    //继续执行
    chain.doFilter(request,response);
    }
     
    @Override
    publicvoid init(FilterConfig arg0) throws ServletException {
     
    }
    }


    web.xml

    <filter>
    <filter-name>WebCacheFilter</filter-name>
    <filter-class>com.java.drp.util.filter.WebCacheFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>WebCacheFilter</filter-name>
    <url-pattern>*.gif</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>WebCacheFilter</filter-name>
    <url-pattern>*.jpg</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>WebCacheFilter</filter-name>
    <url-pattern>*.png</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>WebCacheFilter</filter-name>
    <url-pattern>*.js</url-pattern>
    </filter-mapping>
    <filter-mapping>
    <filter-name>WebCacheFilter</filter-name>
    <url-pattern>*.css</url-pattern>
    </filter-mapping>


    分析特点

    • 只对post请求起作用,而页面默认是get请求,所以想通过filter需要显示声明method
    • 责任链,多个filter,后进先出
    • 生命周期类似servlet,只实例化一次,然后等待。
    • AOPAspect-Oriented Programming)面向切面编程,是一种横切性的技术
    • 提供一种声明式服务,具有可插拔能力。

     

    展开全文
  • Servlet3.0-使用注解定义过滤器(Filter)

    千次阅读 2016-11-17 20:28:42
    本人正在学javaweb,遇到了在eclipse中,servlet3.0过滤器需不需要配置web.xml文件?通过实践得出结论,不用配置,只需要@WebFilter...Servlet3.0提供@WebFilter将一个实现了javax.servlet.Filter接口的类定义为过滤

    本人正在学javaweb,遇到了在eclipse中,servlet3.0过滤器需不需要配置web.xml文件?通过实践得出结论,不用配置,只需要@WebFilter(filterName="过滤器名称",urlPatterns="/*")这句话就行了。答案是从一下文章中找到的。

    Servlet3.0提供@WebFilter将一个实现了javax.servlet.Filter接口的类定义为过滤器组件。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    package  com.cndatacom.filter;
     
    import  java.io.IOException;
     
    import  javax.servlet.Filter;
    import  javax.servlet.FilterChain;
    import  javax.servlet.FilterConfig;
    import  javax.servlet.ServletException;
    import  javax.servlet.ServletRequest;
    import  javax.servlet.ServletResponse;
    import  javax.servlet.annotation.WebFilter;
     
     
    /**
      * 使用注解定义编码过滤器
      * @author Luxh
      */
     
     
    /**
      * @WebFilter将一个实现了javax.servlet.Filte接口的类定义为过滤器组件
      * 属性filterName声明过滤器的名称,可选
      * 属性urlPatterns指定要过滤 的URL模式,也可使用属性value来声明.(指定要过滤的URL模式是必选属性)
      */
    @WebFilter (filterName= "encodingFilter" ,urlPatterns= "/*" )
    public  class  EncodingFilter implements  Filter {
         
         @Override
         public  void  init(FilterConfig arg0) throws  ServletException {
     
         }
     
         @Override
         public  void  doFilter(ServletRequest request, ServletResponse response,
                 FilterChain filterChain) throws  IOException, ServletException {
             request.setCharacterEncoding( "UTF-8" );
             response.setCharacterEncoding( "UTF-8" );
             filterChain.doFilter(request, response);
         }
     
         @Override
         public  void  destroy() {
             
         }
     
    }

      @WebFilter(filterName="encodingFilter",urlPatterns="/*")

      @WebFilter将一个实现了javax.servlet.Filte接口的类定义为过滤器组件

      属性urlPatterns指定要过滤的URL模式,也可以用属性value来指定。

      可以指定多种过滤模式@WebFilter(filterName="encodingFilter",urlPatterns={"/UserManagerServlet","/index.jsp"})

      web.xml依然是无需任何配置的。

    [html]  view plain  copy
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <web-app version="3.0"   
    3.     xmlns="http://java.sun.com/xml/ns/javaee"   
    4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
    6.     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">  
    7.     
    8. </web-app>  

      Servlet3.0规范为开发人员实现了:

      简单性

      减轻开发工作量

      遵循web 2.0原则

    转自:http://www.cnblogs.com/luxh/archive/2012/06/06/2538903.html

    展开全文
  • vue-cli中定义全局filter方法

    千次阅读 2019-04-17 13:54:00
    2、filters.js 中定义全局过滤方法: export default {  /** 时间戳转换 */  showTime (time) {  let date = null  if ((time + '').length === 10) {  date = new Date(time * 10...
  • CSS filter属性详解

    千次阅读 2020-05-06 10:26:02
    MDN filter介绍 filter CSS属性将模糊或颜色偏移等图形效果应用于元素。滤镜通常用于调整图像,背景和边框的渲染。...filter定义的10种效果分别是:blur、opacity、grayscale、sepia、saturate、hue-...
  • 16.5 过滤器默认情况下,Spring将扫描所有@Component、@Controller、@Service和@Repository标注的类,以及这几个...Spring提供了两个filter定义可以让我们对需要扫描的类进行进一步的过滤,一个是,一个是。这两个filt
  • OpenLayers filter 过滤器实现查询

    千次阅读 2014-03-17 17:07:36
    首页介绍下 OpenLayers 的 Filter Filter是一种基于XML的并且符合OGC规范的语言。SLD用它来实现复杂的Rule选择。WFS在所有需要定位操作对象的地方都会使用Filter。...而过滤的方法就是Filter定义的操作符。Fi
  • 早上有老师问到这个问题,... 实现拦截器功能的类必须要实现Filter接口,同时使用WebFilter注解。 @WebFilter(filterName="filter1", urlPatterns="/*") public class CustomFilter1 implements Filter { @Over
  • FFmpeg filter

    千次阅读 2018-06-10 17:08:44
    一、FFmpeg filter简介FFmpeg中的libavfilter提供了一整套的基于filter的机制...ffplay.exe sample.rmvb -vf hflipFFmpeg定义的libavcodec接口已经成为在编解码领域的事实上的行业标准。但音视频filter并没有类似的...
  • Filter的用途 Filter可以用于以下方面: 记录request和response的log进行认证和授权进行压缩和加压,非HTTPS的加密和解密错误处理。对于tomcat,出现错误通常会给出一个500的页面,还有错误诊断信息,对于一个公众...
  • 拦截器(Interceptor)和过滤器(Filter)的执行顺序和区别
  • encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true
  • Zuul Filter

    万次阅读 2018-10-30 17:51:43
    文章目录简介Filter 类型Zuul 原生 Filter 简介   Zuul 的核心逻辑是由一系列紧密配合工作的 Filter 来实现的,它们能够在进行 HTTP 请求或者响应的时候执行相关操作。可以说,没有 Filter 责任链,就没有如今的 ...
  • encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true
  • Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊...
  • Spring Boot filter

    万次阅读 2020-02-17 10:07:08
    定义Filter很简单,我们只需要实现Filter接口即可,同时我们可指定@Order来确定其执行顺序,我们定义两个filter如下: @Slf4j @Component @Order(1) public class TransactionFilter implement...
  • Spring Security(09)——Filter介绍

    万次阅读 2017-06-07 14:20:02
    每个Filter都有其自身的功能,而且各个Filter在功能上还有关联关系,本文主要描述Spring Security是如何通过一系列的Filter来实现它的核心功能的,Spring Security中已经定义了哪些内置的Filter,作用是什么,以及...
  • Makefile的filterfilter-out

    千次阅读 2019-10-30 16:43:20
    $(filter PATTERN…,TEXT) 函数名称:过滤函数—filter。 函数功能:过滤掉字串“TEXT”中所有不符合模式“PATTERN”的单词,保留所 有符合此模式的单词。可以使用多个模式。模式中一般需要包含模式字 符“%”。...
  • filter基本用法

    千次阅读 2018-02-16 23:18:10
    一个例子说明filter的基本用法: let ar = ["1", "2"]; let obj = {"key": "value"}; function config(currentValue, index, arr) { console.log("currentValue ...
  • 前言 最近在学习dubbo的filter时候,根据dubbo的开发手册,自定义了一个filter,然后配置,结果控制台报 No such extension xxxFilter for ...首先定义filter,需要实现com.alibaba.dubbo.rpc.Filter接口 /** ...
  • 一、FFmpeg filter的原理 1. 引言及示例 FFmpeg中的libavfilter提供了一整套的基于filter的机制。 filter本身是一个插件的形式,可以快速的组装需要的效果。...1.1 FFmpeg为什么重新定义filter API? FFm...
  • Bilateral Filter、Cross/Joint Bilateral Filter

    千次阅读 2017-04-05 16:43:20
    今天被问到cross bilateral Filter,虽然自己知道这肯定是一种滤波算法,但是究竟它和bilateral Filter有什么关系?觉得,作为一个图像处理研究者,一定要基础扎实,所以赶紧去看看! NerdLand在Tech Stuff中描述...
  • CORS Filter

    万次阅读 2016-04-26 14:52:58
    原文来自:CORS Filter CORS Filter是适用于支持Java web应用跨源资源共享(CORS)的首个统一解决方案。而跨源资源共享(CORS)是W3C近期一直致力于引入的保障从web浏览器到处理请求的服务器之间跨域请求的标准化...
  • SpringBoot下,利用@WebFilter配置使用与注意Filter

    万次阅读 热门讨论 2018-09-11 18:08:04
    Filter简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如JSP,Servlet,静态图片文件或静态HTML文件进行拦截,从而实现一些特殊功能。...
  • Filter的使用实例

    千次阅读 2017-02-05 20:40:05
    创建Filter类必须实现javax.servlet.Filter接口,在该接口中定义了三个方法: (1)void init(FilterConfig config):用于完成Filter的初始化 (2)void destroy():用于Filter销毁前,完成某些资源的回收 ...
  • PHP filter_var() 函数 Filter 函数

    千次阅读 2009-12-22 11:22:00
    定义和用法filter_var() 函数通过指定的过滤器过滤变量。如果成功,则返回已过滤的数据,如果失败,则返回 false。语法filter_var(variable, filter, options)参数描述variable必需。规定要过滤的变量。filter可选。...
  • Vue之在methods中使用filter的方法

    万次阅读 2019-09-04 17:13:33
    Vue之在methods中使用filter的方法全局定义filter在html使用filter在methods使用filter 相关资料: 过滤器(Vue官方使用说明) 全局定义filter 在main.js或者其他定义全局filter Vue.filter('capitalize', function ...
  • Spring Security Filter详解

    万次阅读 2017-12-06 17:36:09
    经过基于注解的Spring Security原理解析分析,Spring Security本身所做的事情就是在Spring容器中注册了一系列的Filter,这些Filters在检测到满足条件的URL请求时,会执行其定义的处理过程; Security本身默认提供了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 458,381
精华内容 183,352
关键字:

filter的定义