Day64

Day64

 

ResponseBody

处理ajax

 

SprinMVC文件下载(不建议用)

步骤:1、找到要下载的文件的流

找到要下载的真实路径

new byte[] ,读取文件流,

 

2、要下载的文件流返回

new httpHeaders()

htppHeaders.set()

 

HttpMessageConverter< T >接口

里面的方法:

Boolean canRead:是否能读

Boolean canWrite:是否能写

 

List<Media Type> getSupportMedia Types() --->转换器支持的媒体类型

如果能读能写,就调用下面两个方法。

T read -->>把信息流读出来,然后封装成我们需要的对象

void write ---->>把读出来的数据,写出去。

 

拦截器(接口)

拦截器是过滤器的升级版

跟Filter差不多,一个是javaWeb 一个是SpringMVC。

 

HandleInterceptor比较强大一点。有三个方法

preHandle:在目标方法之前调用,返回boolean;return True 放行;return false不放行。

postHandle:在目标方法运行之后调用,目标方法调用之后。可以给ModeAndView添加对象

afterCompletion:在请求整个完成之后,来到目标页面之后。资源响应之后。

正常情况

1)拦截器是一个接口

2)实现HandleInterceptor接口。

3)配置拦截器

4)了解拦截器的运行流程。

拦截器的preHandle---->>目标方法--->>拦截器postHandle---->>页面 ----->>.拦截器的afterCompletion

 

其他情况

1、只要preHandle不放行,后面都不运行。

2、只要放行了,不管怎么样。afterCompletion都会执行;

 

多个拦截器的情况下 :

运行流程跟filter有点像

先进后出。

preA运行--->preB运行 ----->目标方法----->postB运行----->postA运行---->页面--->afterB运行---->afterA运行。

 

不放行的情况下:都不运行;

第二个拦截器不放行,但是前面已经放行的拦截器的afterCompletion总会运行。‘

 

preHandle执行成功后,会记录索引位置。

第一次:ConversionServiceExposingIntercepter -->> interceptorIndex=0;

第二次:firstInterceptor -->> interceptorIndex=1;

第三次:secondInterceptor 执行afterCompletion()

已经放行的拦截器的afterCompletion一定会执行

 

 

SpringMVC的国际化

1.写好国际化资源文件

2.让Spring的ResourceBoudleMessageSouce管理国际化资源文件。

3.直接去页面取值。

2021.6.7每天继续。

 

 

 

小知识

Day64


线程和进程的知识:

1、一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程(通常说的主线程)。 2、资源分配给进程,同一进程的所有线程共享该进程的所有资源。 3、线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。 4、处理机分给线程,即真正在处理机上运行的是线程。 5、线程是指进程内的一个执行单元,也是进程内的可调度实体。

 


SSH的知识

SSH(Struts,Spring,Hibernate) Struts进行 流程控制,Spring进行业务流转,Hibernate进行数据库操作的封装。


Day64


  • return i++ 比较特殊,先是return i;然后i++。

  • return i=i+ 1 则不同,它是先让i=i+1,再return。


包装类是针对 *基本数据类型* 的。


数值型变量在默认情况下为Int型,byte和short型在计算时会自动转换为int型计算,结果也是int 型。所以a1*a2的结果是int 型的。

上一篇:Exception in thread "main" java.io.FileNotFoundException: d:\aaaa\a.txt (系统找不到指定的路径。)


下一篇:touchweb网站常见问题,手机网站注意问题