1.什么是servlet,主要作用有哪些?
(1)Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。
(2)接受客户端的请求,给客户端做出响应
2.什么是jsp,主要作用有哪些?
(1)Java Server Pages:Java服务器端页面
(2)JSP本质上就是一个Servlet
3.说一下JSP中的4种域对象?
pageContext, request, session、application四个作用域
(1)pageContext作为域对象的范围:代表页面返回从把变量放到pageContext开始,到jsp代码执行结束。
(2)request作为域对象的范围:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
(3)session作为域对象的范围:一次会话范围
(4)application作为域对象的范围:整个web应用
4.session和cookie有什么区别?
(1)相同:
在一次会话的范围内的多次请求间,共享数据
(2)不同:
session存储数据在服务器端,Cookie在客户端
session没有数据大小限制,Cookie有
session数据安全,Cookie相对于不安全
5.说一下session的工作原理?
session是基于cookie的,第一次请求没有cookie,会在内存中创建一个新的session对象,有一个sessionID,之后请求带着sessionId过来。
6.如果客户端禁止cookie后session还能用吗?为什么?
不可以
服务器存储的session是通过sessionid存储在cookie中,来存储在客户端的。所以,如果浏览器禁用了cookie,客户端请求没办法传递sessionid,服务器无法识别用户身份,会导致session失效。
解决方案
url重写:把 sessionid 作为参数追加的原 url 中,后续的浏览器与服务器交互中携带 jsessionid 参数
7.说一下重定向和转发的区别?
请求转发:一种在服务器内部的资源跳转方式
- 浏览器地址栏路径不发生变化
- 只能转发到当前服务器内部资源中。
- 转发是一次请求
重定向:资源跳转的方式
- 地址栏发生变化
- 重定向可以访问其他站点(服务器)的资源
- 重定向是多次请求。不能使用request对象来共享数据
8.如何解决浏览器请求服务器乱码及服务器响应浏览器乱码?
数据的编码和解码字符集方式不一致
(1)请求乱码
- Post : 在获取参数前,设置request的编码request.setCharacterEncoding("utf-8");
- Get : tomcat 8 已经将get方式乱码问题解决了
(2)响应乱码
- 字节输出流 :设置字符的编码方式为UTF-8 response.getOutputStream().write("你好".getBytes("UTF-8"))
- 字符输出流:设置该流的默认编码,response.setCharacterEncoding("utf-8");设置响应头Context-Type,让浏览器以UTF-8方式解码
9.Filter的生命周期?
(1)服务器启动时,被web服务器创建,执行init方法
(2)每次拦截,doFilter方法都会被调用一次
(3)服务器关闭时,Filter被销毁,执行destroy方法
10.在后端如何获取到cookie中的数据?
Cookie[] request.getCookies()
本文介绍了Servlet和JSP在Web开发中的角色,Servlet是一个接口,定义了Java类被服务器识别的规则,主要负责接收和响应客户端请求。JSP是Java服务器端页面,本质上是一个Servlet。文章还讨论了JSP中的四种域对象——pageContext,request,session和application,以及它们的作用域。此外,对比了session和cookie的区别,session基于cookie工作,当cookie被禁用时,session无法正常工作。重定向和转发是两种不同的资源跳转方式,前者改变地址栏并可访问其他站点,后者则保持在同一服务器内。最后,文章提到了处理请求和响应乱码的方法,以及Filter的生命周期和获取cookie数据的方法。
1373

被折叠的 条评论
为什么被折叠?



