Java面试问题3

Forward和Redirect区别,简单说明

重定向是两次请求,转发是一次请求,因此转发的速度要快于重定向
转发是服务器行为,重定向是客户端行为。重定向时浏览器上的网址改变,转发是浏览器上的
网址不变


什么是过滤器?

定义:依赖于servlet 容器;
在实现上基于函数回调,可以对几乎所有请求进行过滤;
缺点是一个过滤器实例只能在容器初始化时调用一次。
作用:
用来做一些过滤操作,获取我们想要获取的数据;
在过滤器中修改字符编码;
在过滤器中修改HTTPServletRequest的一-些参数,包括:过滤低俗文字、危险字符等。
 

什么是监听器?

定义:
实现了javax.servlet.ServletContextListener 接口的服务器端程序;
随Web应用的启动而启动;只初始化一次;
随Web应用的停止而销毁;
作用:
做一些初始化的内容添加工作、设置一些基本的内容、比如一- 些参数或者是- -些固定的对象等等。如
SpringMVC的监听器org. Springframework. Web.context.ContextLoaderListener,实现了SpringMVC容器的加载、Bean
对象创建、DispatchServlet 初始化等。
 

单例模式以及实现方法:

一种创建型设计模式,它确保一个类只有一个实例,并提供了一个全局访问点来访问该实例。

饿汉模式初始化就创建了对象,每次调用都返回同一个对象。线程安全。
懒汉模式初始化不创建对象,在使用的时候判断,如果没有才创建。这样在多线程的环境下会存在线程安全问题。解决方法就是线程加锁

#{}和${}的区别是什么?

#{}是预编译处理,${} 是字符串替换。MyBatis 在处理#{}时,会将SQL中的#{}替换为?号,调用
PreparedStatement的set 方法来赋值; MyBatis 在处理${}时,就是把$ {}替换成变量的值。使用#{}可以有效的防止SQL注入,提高系统安全性。
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值