springboot中filter的配置和顺序执行
项目结构
springboot版本
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
Filter代码
AFilter
package com.wang.sb.filter;
import javax.servlet.*;
import java.io.IOException; /**
* @Author wly
* @Date 2018/6/14 10:54
*/
public class AFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException { } @Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("I'm AFilter");
filterChain.doFilter(servletRequest,servletResponse);
} @Override
public void destroy() { }
}
BFilter
package com.wang.sb.filter; import javax.servlet.*;
import java.io.IOException; /**
* @Author wly
* @Date 2018/6/14 10:54
*/
public class BFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException { } @Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("I'm BFilter");
filterChain.doFilter(servletRequest, servletResponse);
} @Override
public void destroy() { }
}
CFilter
package com.wang.sb.filter; import javax.servlet.*;
import java.io.IOException; /**
* @Author wly
* @Date 2018/6/14 10:54
*/
public class CFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException { } @Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("I'm CFilter");
filterChain.doFilter(servletRequest, servletResponse);
} @Override
public void destroy() { }
}
DFilter
package com.wang.sb.filter; import javax.servlet.*;
import java.io.IOException; /**
* @Author wly
* @Date 2018/6/14 10:54
*/
public class DFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException { } @Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("I'm DFilter");
filterChain.doFilter(servletRequest, servletResponse);
} @Override
public void destroy() { }
}
EFilter
package com.wang.sb.filter; import javax.servlet.*;
import java.io.IOException; /**
* @Author wly
* @Date 2018/6/14 10:54
*/
public class EFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException { } @Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("I'm EFilter");
filterChain.doFilter(servletRequest,servletResponse);
} @Override
public void destroy() { }
}
Filter配置:名称、拦截位置、执行顺序等
package com.wang.sb.config; import com.wang.sb.filter.*;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import java.util.ArrayList;
import java.util.List; /**
* @Description
* @Author wly
* @Date 2018/6/14 14:20
*/
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean buildAFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setOrder(6);
filterRegistrationBean.setFilter(new AFilter());
filterRegistrationBean.setName("filter1");
filterRegistrationBean.addUrlPatterns("/*");
return filterRegistrationBean;
} @Bean
public FilterRegistrationBean buildBFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setOrder(2);
filterRegistrationBean.setFilter(new BFilter());
filterRegistrationBean.setName("filter2");
filterRegistrationBean.addUrlPatterns("/*");
return filterRegistrationBean;
} @Bean
public FilterRegistrationBean buildCFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setOrder(3);
filterRegistrationBean.setFilter(new CFilter());
filterRegistrationBean.setName("filter3");
filterRegistrationBean.addUrlPatterns("/*");
return filterRegistrationBean;
} @Bean
public FilterRegistrationBean buildDFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setOrder(4);
filterRegistrationBean.setFilter(new DFilter());
filterRegistrationBean.setName("filter4");
filterRegistrationBean.addUrlPatterns("/*");
return filterRegistrationBean;
} @Bean
public FilterRegistrationBean buildEFilter() {
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();
filterRegistrationBean.setOrder(5);
filterRegistrationBean.setFilter(new EFilter());
filterRegistrationBean.setName("filter5");
filterRegistrationBean.addUrlPatterns("/*");
return filterRegistrationBean;
} }
控制台日志(启动服务加载了filter)
"D:\dev tools\jdk\jdk8\bin\java" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:59538,suspend=y,server=n -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=59537 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -Dfile.encoding=UTF-8 -classpath "D:\dev tools\jdk\jdk8\jre\lib\charsets.jar;D:\dev tools\jdk\jdk8\jre\lib\deploy.jar;D:\dev tools\jdk\jdk8\jre\lib\ext\access-bridge-64.jar;D:\dev tools\jdk\jdk8\jre\lib\ext\cldrdata.jar;D:\dev tools\jdk\jdk8\jre\lib\ext\dnsns.jar;D:\dev tools\jdk\jdk8\jre\lib\ext\jaccess.jar;D:\dev tools\jdk\jdk8\jre\lib\ext\jfxrt.jar;D:\dev tools\jdk\jdk8\jre\lib\ext\localedata.jar;D:\dev tools\jdk\jdk8\jre\lib\ext\nashorn.jar;D:\dev tools\jdk\jdk8\jre\lib\ext\sunec.jar;D:\dev tools\jdk\jdk8\jre\lib\ext\sunjce_provider.jar;D:\dev tools\jdk\jdk8\jre\lib\ext\sunmscapi.jar;D:\dev tools\jdk\jdk8\jre\lib\ext\sunpkcs11.jar;D:\dev tools\jdk\jdk8\jre\lib\ext\zipfs.jar;D:\dev tools\jdk\jdk8\jre\lib\javaws.jar;D:\dev tools\jdk\jdk8\jre\lib\jce.jar;D:\dev tools\jdk\jdk8\jre\lib\jfr.jar;D:\dev tools\jdk\jdk8\jre\lib\jfxswt.jar;D:\dev tools\jdk\jdk8\jre\lib\jsse.jar;D:\dev tools\jdk\jdk8\jre\lib\management-agent.jar;D:\dev tools\jdk\jdk8\jre\lib\plugin.jar;D:\dev tools\jdk\jdk8\jre\lib\resources.jar;D:\dev tools\jdk\jdk8\jre\lib\rt.jar;E:\work\sb\target\classes;E:\work\localRepository\org\springframework\boot\spring-boot-starter-web\1.5.8.RELEASE\spring-boot-starter-web-1.5.8.RELEASE.jar;E:\work\localRepository\org\springframework\boot\spring-boot-starter\1.5.8.RELEASE\spring-boot-starter-1.5.8.RELEASE.jar;E:\work\localRepository\org\springframework\boot\spring-boot\1.5.8.RELEASE\spring-boot-1.5.8.RELEASE.jar;E:\work\localRepository\org\springframework\boot\spring-boot-starter-logging\1.5.8.RELEASE\spring-boot-starter-logging-1.5.8.RELEASE.jar;E:\work\localRepository\org\slf4j\jul-to-slf4j\1.7.25\jul-to-slf4j-1.7.25.jar;E:\work\localRepository\org\slf4j\log4j-over-slf4j\1.7.25\log4j-over-slf4j-1.7.25.jar;E:\work\localRepository\org\yaml\snakeyaml\1.17\snakeyaml-1.17.jar;E:\work\localRepository\org\springframework\boot\spring-boot-starter-tomcat\1.5.8.RELEASE\spring-boot-starter-tomcat-1.5.8.RELEASE.jar;E:\work\localRepository\org\apache\tomcat\embed\tomcat-embed-core\8.5.23\tomcat-embed-core-8.5.23.jar;E:\work\localRepository\org\apache\tomcat\tomcat-annotations-api\8.5.23\tomcat-annotations-api-8.5.23.jar;E:\work\localRepository\org\apache\tomcat\embed\tomcat-embed-el\8.5.23\tomcat-embed-el-8.5.23.jar;E:\work\localRepository\org\apache\tomcat\embed\tomcat-embed-websocket\8.5.23\tomcat-embed-websocket-8.5.23.jar;E:\work\localRepository\org\hibernate\hibernate-validator\5.3.5.Final\hibernate-validator-5.3.5.Final.jar;E:\work\localRepository\javax\validation\validation-api\1.1.0.Final\validation-api-1.1.0.Final.jar;E:\work\localRepository\org\jboss\logging\jboss-logging\3.3.1.Final\jboss-logging-3.3.1.Final.jar;E:\work\localRepository\com\fasterxml\classmate\1.3.4\classmate-1.3.4.jar;E:\work\localRepository\com\fasterxml\jackson\core\jackson-databind\2.8.10\jackson-databind-2.8.10.jar;E:\work\localRepository\com\fasterxml\jackson\core\jackson-annotations\2.8.0\jackson-annotations-2.8.0.jar;E:\work\localRepository\com\fasterxml\jackson\core\jackson-core\2.8.10\jackson-core-2.8.10.jar;E:\work\localRepository\org\springframework\spring-web\4.3.12.RELEASE\spring-web-4.3.12.RELEASE.jar;E:\work\localRepository\org\springframework\spring-aop\4.3.12.RELEASE\spring-aop-4.3.12.RELEASE.jar;E:\work\localRepository\org\springframework\spring-beans\4.3.12.RELEASE\spring-beans-4.3.12.RELEASE.jar;E:\work\localRepository\org\springframework\spring-webmvc\4.3.12.RELEASE\spring-webmvc-4.3.12.RELEASE.jar;E:\work\localRepository\org\springframework\spring-expression\4.3.12.RELEASE\spring-expression-4.3.12.RELEASE.jar;E:\work\localRepository\com\github\tobato\fastdfs-client\1.25.2-RELEASE\fastdfs-client-1.25.2-RELEASE.jar;E:\work\localRepository\org\slf4j\slf4j-api\1.7.25\slf4j-api-1.7.25.jar;E:\work\localRepository\org\slf4j\jcl-over-slf4j\1.7.25\jcl-over-slf4j-1.7.25.jar;E:\work\localRepository\ch\qos\logback\logback-classic\1.1.11\logback-classic-1.1.11.jar;E:\work\localRepository\ch\qos\logback\logback-core\1.1.11\logback-core-1.1.11.jar;E:\work\localRepository\org\apache\commons\commons-lang3\3.3.2\commons-lang3-3.3.2.jar;E:\work\localRepository\commons-beanutils\commons-beanutils\1.9.3\commons-beanutils-1.9.3.jar;E:\work\localRepository\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;E:\work\localRepository\commons-io\commons-io\2.4\commons-io-2.4.jar;E:\work\localRepository\org\apache\commons\commons-pool2\2.4.2\commons-pool2-2.4.2.jar;E:\work\localRepository\org\springframework\spring-core\4.3.12.RELEASE\spring-core-4.3.12.RELEASE.jar;E:\work\localRepository\org\springframework\boot\spring-boot-autoconfigure\1.5.8.RELEASE\spring-boot-autoconfigure-1.5.8.RELEASE.jar;E:\work\localRepository\org\mockito\mockito-all\1.9.5\mockito-all-1.9.5.jar;E:\work\localRepository\org\springframework\spring-context\4.3.12.RELEASE\spring-context-4.3.12.RELEASE.jar;E:\work\localRepository\net\coobird\thumbnailator\0.4.8\thumbnailator-0.4.8.jar;D:\dev tools\ide\ideaIU-2017.2.5.win\lib\idea_rt.jar" com.wang.sb.SbApplication
Connected to the target VM, address: '127.0.0.1:59538', transport: 'socket' . ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.5.8.RELEASE) 2018-06-14 15:03:26.872 INFO 14760 --- [ main] com.wang.sb.SbApplication : Starting SbApplication on CFJSWLY with PID 14760 (E:\work\sb\target\classes started by admin in E:\work\sb)
2018-06-14 15:03:26.892 INFO 14760 --- [ main] com.wang.sb.SbApplication : The following profiles are active: dev
2018-06-14 15:03:27.040 INFO 14760 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@3697186: startup date [Thu Jun 14 15:03:27 CST 2018]; root of context hierarchy
2018-06-14 15:03:28.755 INFO 14760 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2018-06-14 15:03:28.769 INFO 14760 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2018-06-14 15:03:28.770 INFO 14760 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.23
2018-06-14 15:03:28.935 INFO 14760 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2018-06-14 15:03:28.935 INFO 14760 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1901 ms
2018-06-14 15:03:29.185 INFO 14760 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2018-06-14 15:03:29.186 INFO 14760 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2018-06-14 15:03:29.186 INFO 14760 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2018-06-14 15:03:29.186 INFO 14760 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]
2018-06-14 15:03:29.186 INFO 14760 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'filter2' to: [/*]
2018-06-14 15:03:29.186 INFO 14760 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'filter3' to: [/*]
2018-06-14 15:03:29.186 INFO 14760 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'filter4' to: [/*]
2018-06-14 15:03:29.186 INFO 14760 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'filter5' to: [/*]
2018-06-14 15:03:29.186 INFO 14760 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'filter1' to: [/*]
2018-06-14 15:03:29.186 INFO 14760 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2018-06-14 15:03:29.401 WARN 14760 --- [ main] figurationPropertiesBindingPostProcessor : The @ConfigurationProperties bean class com.github.tobato.fastdfs.conn.TrackerConnectionManager contains validation constraints but had not been annotated with @Validated.
2018-06-14 15:03:29.401 WARN 14760 --- [ main] figurationPropertiesBindingPostProcessor : The @ConfigurationProperties bean class com.github.tobato.fastdfs.conn.TrackerConnectionManager contains validation constraints but had not been annotated with @Validated.
2018-06-14 15:03:29.402 WARN 14760 --- [ main] figurationPropertiesBindingPostProcessor : The @ConfigurationProperties bean class com.github.tobato.fastdfs.conn.TrackerConnectionManager contains validation constraints but had not been annotated with @Validated.
2018-06-14 15:03:29.852 INFO 14760 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@3697186: startup date [Thu Jun 14 15:03:27 CST 2018]; root of context hierarchy
2018-06-14 15:03:29.928 INFO 14760 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/hello/a]}" onto public java.lang.String com.wang.sb.web.HelloController.hello()
2018-06-14 15:03:29.930 INFO 14760 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/hello/download]}" onto public void com.wang.sb.web.HelloController.downloadFile(java.lang.String,javax.servlet.http.HttpServletResponse) throws java.io.IOException
2018-06-14 15:03:29.931 INFO 14760 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/hello/upload]}" onto public java.lang.String com.wang.sb.web.HelloController.uploadFile(org.springframework.web.multipart.MultipartFile) throws java.io.IOException
2018-06-14 15:03:29.933 INFO 14760 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2018-06-14 15:03:29.934 INFO 14760 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2018-06-14 15:03:29.970 INFO 14760 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-06-14 15:03:29.970 INFO 14760 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-06-14 15:03:30.030 INFO 14760 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2018-06-14 15:03:30.287 INFO 14760 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2018-06-14 15:03:30.288 INFO 14760 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Bean with name 'fdfsConnectionPool' has been autodetected for JMX exposure
2018-06-14 15:03:30.294 INFO 14760 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Located MBean 'fdfsConnectionPool': registering with JMX server as MBean [com.github.tobato.fastdfs.conn:name=fdfsConnectionPool,type=FdfsConnectionPool]
2018-06-14 15:03:30.360 INFO 14760 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2018-06-14 15:03:30.368 INFO 14760 --- [ main] com.wang.sb.SbApplication : Started SbApplication in 4.506 seconds (JVM running for 7.32)
请求URL(测试filter效果)
{{env}}/hello/a
控制台日志
I'm BFilter
I'm CFilter
I'm DFilter
I'm EFilter
I'm AFilter
亲测有效!
springboot中filter的配置和顺序执行的更多相关文章
- 如果你还不知道如何控制springboot中bean的加载顺序,那你一定要看此篇
1.为什么需要控制加载顺序 springboot遵从约定大于配置的原则,极大程度的解决了配置繁琐的问题.在此基础上,又提供了spi机制,用spring.factories可以完成一个小组件的自动装配功 ...
- 详解Springboot中自定义SpringMVC配置
详解Springboot中自定义SpringMVC配置 WebMvcConfigurer接口 这个接口可以自定义拦截器,例如跨域设置.类型转化器等等.可以说此接口为开发者提前想到了很多拦截层面的需 ...
- springBoot中实现自定义属性配置、实现异步调用、多环境配置
springBoot中其他相关: 1:springBoot中自定义参数: 1-1.自定义属性配置: 在application.properties中除了可以修改默认配置,我们还可以在这配置自定义的属性 ...
- Android中让多个线程顺序执行探究
线程调度是指按照特定机制为多个线程分配CPU的使用权. 有两种调度模型:分时调度模型和抢占式调度模型. 分时调度模型:是指让所有的线程轮流获得cpu的使用权,并且平均分配每个线程占用的CPU的时间片. ...
- js中一个标签在按顺序执行没有被读取到时可以用window.onload
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%> <!DOCTYPE html PUBLIC " ...
- 面试官:Java中线程是按什么顺序执行的?
摘要:Java中多线程并发的执行顺序历来是面试中的重点,掌握Java中线程的执行顺序不仅能够在面试中让你脱颖而出,更能够让你在平时的工作中,迅速定位由于多线程并发问题导致的"诡异" ...
- Asp.Net WebAPI中Filter过滤器的使用以及执行顺序
转发自:http://www.cnblogs.com/UliiAn/p/5402146.html 在WEB Api中,引入了面向切面编程(AOP)的思想,在某些特定的位置可以插入特定的Filter进行 ...
- SpringBoot中的bean加载顺序
https://www.dazhuanlan.com/2019/10/22/5daebc5d16429/ 最近在做传统Spring项目到SpringBoot项目迁移过程中,遇到了一些bean加载顺序的 ...
- springboot中的日志配置
日志方式:每天日志存放在一个文件中,info和warn日志存放一个文件,error存放一个文件 创建文件 logback-spring.xml <?xml version="1.0&q ...
随机推荐
- docker私有仓库搭建及认证
什么是docker? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机 ...
- C 标准库 - ctype.h
C 标准库 - ctype.h This header declares a set of functions to classify and transform individual charact ...
- 12 Callable & Future & FutureTask
创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口. 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果. 如果需要获取执行结果,就必须通过共享变量或者使用 ...
- C#基础笔记(第十二天)
1.复习里氏转换:1).子类可以赋值给父类(如果有一个方法需要一个父类作为参数,我们可以传第一个子类对象)2).如果父类中装的是子类对象,则可以将这个父类强转为子类对象 is和as判断转换成功失败 P ...
- unity TileMap 简述
主要工具 说明 更多说明 Sprite 精灵,纹理的容器. 大型纹理图集可以转为精灵图集(Sprite Sheet). Tile 瓦片,包含一个精灵,以及两个属性,颜色和碰撞体类型. Tilema ...
- MYSQL DATE_FORMAT() 函数时间大小比较
DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据. DATE_FORMAT(date,format) 可以使用的格式有: 格式 描述 %a 缩写星期名 %b 缩写月名 %c 月,数值 ...
- API ,批量添加
添加引用:cors using system.web.http.cors API添加这句话: [EnableCors("*", "*", &qu ...
- 三分钟理解Java中字符串(String)的存储和赋值原理
可能很多Java的初学者对String的存储和赋值有迷惑,以下是一个很简单的测试用例,你只需要花几分钟时间便可理解. 1.在看例子之前,确保你理解以下几个术语: 栈:由JVM分配区域,用于保存线程执行 ...
- Java新人拿到一台新的电脑需要装配什么
适用对象:新手 装备:win10 一.IDEA 插件等 说明 其他 TranslationPlugin 翻译插件 GitHub地址 MyBatis-Generator 自动生成Mybatis文件 Al ...
- input 输入框限制
只能输入数字和一个小数点 转自: https://www.jianshu.com/p/c26bfb0dfd8d <label> <input id="tranlimit_b ...