Forward和Redirect区别,简单说明
重定向是两次请求,转发是一次请求,因此转发的速度要快于重定向
转发是服务器行为,重定向是客户端行为。重定向时浏览器上的网址改变,转发是浏览器上的
网址不变
什么是过滤器?
定义:依赖于servlet 容器;
在实现上基于函数回调,可以对几乎所有请求进行过滤;
缺点是一个过滤器实例只能在容器初始化时调用一次。
作用:
用来做一些过滤操作,获取我们想要获取的数据;
在过滤器中修改字符编码;
在过滤器中修改HTTPServletRequest的一-些参数,包括:过滤低俗文字、危险字符等。
什么是监听器?
定义:
实现了javax.servlet.ServletContextListener 接口的服务器端程序;
随Web应用的启动而启动;只初始化一次;
随Web应用的停止而销毁;
作用:
做一些初始化的内容添加工作、设置一些基本的内容、比如一- 些参数或者是- -些固定的对象等等。如
SpringMVC的监听器org. Springframework. Web.context.ContextLoaderListener,实现了SpringMVC容器的加载、Bean
对象创建、DispatchServlet 初始化等。
单例模式以及实现方法:
一种创建型设计模式,它确保一个类只有一个实例,并提供了一个全局访问点来访问该实例。
饿汉模式初始化就创建了对象,每次调用都返回同一个对象。线程安全。
懒汉模式初始化不创建对象,在使用的时候判断,如果没有才创建。这样在多线程的环境下会存在线程安全问题。解决方法就是线程加锁
#{}和${}的区别是什么?
#{}是预编译处理,${} 是字符串替换。MyBatis 在处理#{}时,会将SQL中的#{}替换为?号,调用
PreparedStatement的set 方法来赋值; MyBatis 在处理${}时,就是把$ {}替换成变量的值。使用#{}可以有效的防止SQL注入,提高系统安全性。