2020-servlet面试

1 servlet的生命周期

​ 初始化:web容器加载servlet,调用init();方法

​ 处理请求:当请求到达时,运行service方法 service自动派遣运行与请求相对应的doget或dopost方法

​ 销毁:服务结束,web容器会调用servlet的distory()方法销毁servlet

2 get提交和post提交的区别

​ 1 get一般用于从服务器获取数据,post一般用于向服务器传送数据

​ 2 请求的时候参数的位置有区别,get的参数拼接在url后 用户可以在浏览器地址栏看到,post则是在http包内

​ 3 提交的数据区别 get方式提交的数据只能是文本 、不能超过1024KB,而post不仅可以提交文本还可以提交二进制文件。

3 doget和dopost方法的两个参数是什么?

HttpServletRequest:封装了与请求相关的信息

HttpServletResponse:封装了与相应相关的信息

4 request.getAttribute()和request.getParameter()

1 getParameter获取的只能是字符串,不可以是对象 而getAttribute()获取的值是Object类型

2 通过form表单或者url来向另一个页面或者servlet传递参数的时候需要用getParameter()获取值,getAttribute()只能获取setAttribute()的值

3 setAttribute()是应用服务器把这个对象放到该页面所对应的一块内存中,当进行重定向时,应用服务器会把这块内存cv到另一个页面对应的内存库中,通过getAttribute()获取存下的值,也可以用这种方式传递对象

5 转发和重定向的区别

1 请求次数 :重定向时浏览器向服务器发送一个请求并收到响应后再次向一个新的地址发出请求,转发是服务器收到请求后为了完成响应跳到一个新的地址;重定向至少请求两次,转发只请求一次

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

3 是否共享数据:重定向两次请求不共享数据,转发一次请求共享数据

4 跳转限制:重定向可以跳到任意url,转发只能跳转本站点资源

5 发生行为不同:重定向是客户端行为,转发是服务器端行为

6 jsp和servlet有什么区别

​ 1 jsp经过编译后就变成了Servlet(jsp的本质就是servlet,jvm只能识别java的类,不能识别jsp的代码,web容器将jsp的代码编译成jvm能够识别的java类)

​ 2 jsp更擅长表现于页面显示,servlet更擅长于页面控制

​ 3 servlet中没有内置对象,jsp中的内置对象都是必须通过HttpServletRequset对象,HttpServletResponse对象以及HttpServlet对象得到

​ 4 jsp是Servlet的一种简化,使用jsp只需要玩成程序员需要输入到客户端的内容,jsp中的java脚本如何镶嵌到一个类中,由jsp容器完成。而Servlet则是一个完整的java类,这个类的Service方法用于生成对客户端的影响。

7 jsp有哪些内置对象?作用分别是什么?

​ jsp有九个内置对象

​ 1 request:封装客户端的请求,其中包含来自get或post请求的参数

​ 2 response:封装服务器对客户端的响应

​ 3 pageContext:通过该对象获取其它对象

​ 4 session:封装用户会话的对象

​ 5 application:封装服务器运行环境的对象

​ 6 out:输出服务器响应的输出流对象

​ 7 config:Web应用的配置对象

​ 8 page:jsp页面本身

​ 9 exception:封装页面抛出异常的对象

8 jsp的四种作用域

​ 1 page代表与一个页面相关的对象和属性

​ 2 request代表与web客户机发出的一个请求的相关的对象和属性(一个请求可能跨越多个页面、涉及多喝web组件;需要在页面显示临时数据可以置于此作用域)

​ 3 session 代表某个用户与服务器建立的一次会话的相关对象和属性

​ 4 application代表与真个web应用程序相关的对象和属性 ,其实质跨越整个web应用程序

9 session和cookie有什么区别

​ 1 存储位置不同 cookie的数据信息存储在客户端浏览器上;session的数据信息存储在服务器中

​ 2 存储方式不同 cookie中只能保存ASCII字符串,并且需要通过编码方式存储为Unicode字符或者二进制数据

​ session则可以存储任何类型的数据

​ 3 存储容量不同 单个cookie 保存的数据小于等于4KB,一个站点最多保存20个cookie而session并没有上限

​ 4 隐私策略不同 cookie对客户端是可见的 而session存储在服务器中 风险很小

​ 5 有效期限不同 开发可以通过这支cookie的属性,达到使cookie长期有效的效果

​ session依赖于JSESSIONID 的cookie,JSESSIONID的默认时间为-1,只需关闭窗口该session就会失效

​ 因此session不能达到长期有效的效果

​ 6 服务器压力不同 cookie保管在客户端不占用服务器资源。对于并发用户多的网站应选择cookie

​ session是保存在服务器端的,每个用户都会产生一个session

10 session的工作原理

​ 用户第一次请求服务器时,服务器会产生一个sessionid ,服务器将生成的sessionid返回给客户端,客户端收到sessionid会将它保存在cookie中,当客户端再次访问服务器时会带上这个sessionid 。当服务器再次接收到来自客户端的请求时,会先去检查是否存在sessionid,不存在就会新建重复上述的流程,反之则会去遍历服务器的session文件找到这个sessionid对应的文件,文件中的键就是sessionid,值就是当前用户的信息。

11 客户端禁止cookie后session还能使用吗?

​ 不能 服务器端是根据session的id来确定当前对话所对应的服务器,而sessionid则是通过cookie传递,禁用cookie则就等于失去了sessionid,也就得不到session了

如果在关闭cookie时使用session则有三种途径

​ 1手动通过url传值、隐藏表单传递session id

​ 2用文件 数据库等形式保存session id 在跨页时手动调用

​ 3省略

12 如何防止sql注入

​ 1 PrepareStatement(简单有效)

​ 2 使用正则表达式过滤传入的参数

​ 3 字符串过滤

​ 4 jsp中调用该函数检查是否包含非法字符

​ 5 jsp页面判断代码

你可能感兴趣的:(web,web)