什么是过滤器?怎么创建一个过滤器

过滤器:在请求发送之后,处理之前,对请求的一次拦截,可以更改请求状态或者参数值等。

创建过滤器:实现filter接口,重写doFilter方法,最后在web.xml中配置过滤器

讲一下Session的工作原理

服务端的session id会自动写入客户端的cookie中,每次请求客户端会自动把cookie带入后台,后台自动根据cookie中的sessionid就能找到session

Session和cookie有什么区别

session和cookie都是为了弥补http协议的无状态特性,解决会话问题

Cookie:数据保存在浏览器,数据不太安全,操作中文太麻烦了,而且数据大小有限制,并且保存的数据只能是字符串,使用cookie减轻服务器的压力,但有被用户篡改风险因此安全性较低

Session:将数据保存在服务器端,数据相对安全,而且数据类型和大小没有限制,但是如果服务器端保存的数据太多,会影响服务器的性能是以ConcurrentHashMap结构存储在服务器端,同时生成一个sessionid返回客户端并存放到cookie中

说说preparedStatement和Statement的区别

statement的sql语句使用字符串拼接,很容易出错,而preparedStatement使用?作为占位符,不容易出错易于维护

statement不对sql语句作处理,直接交给数据库,而preparedStatement支持预编译,事先将编译好的sql语句放到数据库端,相当于缓存,因此效率更高

statement有sql注入风险,preparedStatement没有sql注入风险

请求转发和重定向的区别

转发是一次请求,可以共享同一组request和response,重定向是多次请求,不能共享同一组request和response

转发地址栏不会发生变化,重定向地址栏会发生变化

转发不能到外部应用,重定向可以到尾部应用

如果我们需要数据共享,使用转发,如果需要访问内部资源(WEB-INF),使用转发,如果需要跨域到外部资源,必须使用重定向

get和post请求的区别

突破口:请求参数在哪儿
get请求 - 1.请求参数在地址栏url - 2.不安全 - 3.大小有限制,大约2kb左右-4.get只能发送ASCII字符
post - 1.数据保存在实体内容request body中 - 2.相对安全 - 3.大小没有限制-4.post可以发送更多的数据类型
在restful中,get一般用户查询搜索数据,post一般用户添加或者修改数据