Javaweb
1、说一说Servlet的生命周期、
1、客户端发送请求
2、Servlet容器接收请求,并且进行解析,创建Servlet实列
3、Servlet容器调用Servlet初始化
4、Servlet容器调用Servlet的service方法 如dopost/doget 方法
5、Servlet容器将Servlet的响应结果返回给客户端
6、结束服务,Servlet容器调用serlvet的destroy方法进行销毁
2、Servlet API中forward()与redirect()的区别?
1、效率来说 forward》redirect
2、地址栏显示
forword地址栏是不变的,因为 forward是服务器的内部重定向,服务端接收客户端的请求,会调用服务端内部的一个方法请求处理转发,资源发送给客户端,所以地址栏是原来的地址拦
而redirect的地址栏是变化的,因为客户端向服务端发起请求,服务端会发送状态码和新的地址给客户端,客户端会根据状态码自动发送一个http请求到新的地址,同时客户端会返回相应的内容
3、数据共享
forward 可以共享数据
redirect不可以共享数据
3、request.getAttribute()和 request.getParameter()有何区别?
1、返回的东西不同
getAttribute 返回的是对象 而Parameter放回的字符串
2、getParameter是用于获取get、post请求中的数据
而getAttribute只是在web容器中流转,是请求处理阶段。
4、MVC的各个部分都有哪些技术来实现?如何实现?
MVC是Model--View—Controller
Model代表应用的业务逻辑(通过JavaBean实现)
View是应用的视图(主要是JSP页面)
Controller是提供应用的处理过程控制(一般是一个Serlevt)
5、jsp 和 servlet 有什么区别?
1、JSP编译后就变成了Servlet
2、JSP擅长于页面表示,Servlet擅长于逻辑控制
3、Serlvet没有内置对象,而JSP有内置对象,必须通过HttpServletRequest、HttpSerlvetresponse、HttpSerlvet对象得到。
6、tomcat容器是如何创建servlet类实例?用到了什么原理?
容器启动时,会读取所有web应用中xml文件,然后对xml文件进行解析,读取注册的Serlvet信息,并且对其进行加载,通过反射的方式进行实列化。
7、什么是Sql注入?如何避免 sql 注入?
以Sql语句作为用户输入,达到增删改查数据的目的
-
使用正则表达式过滤传入的参数
-
字符串过滤
-
JSP页面判断代码
8、Xss/CSS攻击是什么,如何避免
就是向网站注入HTML,当用户访问的时候HTML自动执行,会获取用户的一些信息
防范:对输入和URL参数的进行过滤
9、什么是 CSRF 攻击,如何避免?
跨站请求伪造,就是伪造用户的浏览器去请求访问一个用户曾经访问过的网站。
防范:使用验证码、使用token进行过滤
10、JDBC访问数据库的基本步骤是什么?
1、加载驱动
2、通过DriverManager获取connection
3、通过连接对象获取会话
4、通过会话进行数据的增删改查
5、关闭资源
11、说说事务的概念,在JDBC编程中处理事物的步骤
事务就是单个逻辑工作单元执行的一系列操作 就比如银行转账的话一个账户需要减去金额,而另一个账户要增加相应的金额
事务的属性:原子性、一致性、隔离性、持久性
事务处理的步骤
提交事务、出现异常时rollback回滚
12、数据库连接池的原理,为什么要使用连接池?
1、因为数据库连接是一个费时间的操作,而使用连接池可以使得多个操作共享一个连接
2、同时使用连接池可以提高对数据库连接资源的管理
13、JDBC的脏读是什么?哪种数据库隔离级别能防止脏读?
JDBC的脏读是指:有一行数据刚更新 ,与此同时另一个查询读到了这个刚更新的值
哪种隔离级别可防止脏读:可重复读 、串行化、readcommitted
14、JDBC的DriverManager是用来做什么的?
是用来创建数据库连接的 connection方法
15、execute,executeQuery,executeUpdate的区别是什么?
execute是用来执行任意的sql查询,如果结果ResultSet 返回true
executeQuery是执行select查询,并且返回Resultset
executeUpdate是用来执行insert或者update/delete语句
16、JDBC的ResultSet是什么?
查询数据库之后会返回一个ResultSet,就是一个结果集合。我们可以让游标从头到尾遍历结果集。
17、什么是JDBC?
JDBC的全称是Java DataBase Connection
就是java数据库连接,可以用来操作关系型数据库。
18、什么是过滤器
1、依赖于Servlet容器,在客户端的请求访问后端资源之前,拦截这些请求,在服务器的响应发送客户端之前,处理这些响应
作用:主要用于 权限验证,拦截敏感词汇,对编码统一的设置
19、什么是监听器?
实现ServletContextListener接口服务器端程序,基于函数回调,跟着web应用启动,初始化一次,web应用停止则就销毁
主要是用于 做一些初始化内容添加工作等,就比如SpringMVC中的监听器实现了SpringMVC容器加载,DispathcerServlet初始化等
20、什么是拦截器
依赖于web框架,基于java反射机制,是一种面向切面编程的应用。只能对controller请求进行拦截,对直接访问静态资源的请求是没法拦截的
21、过滤器和拦截器的区别?
拦截器是基于web框架,而过滤器是基于函数回调
拦截器只能对controller进行拦截,而过滤器几乎可以对所有请求起作用。
拦截器可以多次被调用,而过滤器只在容器初始化被调用一次
22、Servlet与Filter的区别?
Filter是一种特别的Servlet,它们的作用是完全不一样的。 Servlet是用来处理请求的,而Filter是用来过滤检查请求的。
23、web.xml 的作用?
配置web应用的相关信息,就比如监听器、过滤器、Servlet、相关参数等。
24、Filter生命周期
1、服务器启动时,加载Filter实列,并且调用初始化方法
2、每次发起一个请求,就调用dofilter()方法进行处理