目录
jsp和servlet有什么区别?
- jsp经编译后就变成了servlet。(jsp的本质就是servlet,jvm只能识别java代码,不能识别jsp的代码,Web容器将jsp编译成jvm能够识别的java类)
- 它们的职责不同,jsp主要负责页面展示,servlet主要负责业务逻辑的处理
- servlet没有内置对象,jsp有九大内置对象
- jsp是servlet的一种简化,使用jsp只需要完成程序员要输出到客户端的内容,jsp中的脚本如何镶嵌到一个类中,由jsp容器完成。servlet则是个完整的java类,这个类的service方法用于生成对客户端的响应。
jsp有哪些内置对象?作用分别是什么?
- pageContext:通过该对象获取其他对象。
- request:封装客户端的请求。
- session:封装用户会话对象。
- application:封装服务器运行环境对象
- out:封装服务器响应的输出流对象。
- response:封装服务器对客户端的响应。
- page:JSP页面本身。
- config:封装Web应用的配置对象。
- exception:封装页面抛出异常的对象。
说一说jsp的4中作用域?
- page:代表变量只能在当前页面上生效。
- request:代表变量能在一次请求中生效,一次请求可能包含一个页面,也可能包含多个页面,比如页面A请求转发到页面B。
- session:代表变量能在一次会话中生效。跟某个用户相关的数据应该放在自己的session中。
- application:代表变量在一个应用下有效,也就是多个会话之间都能使用。
session和cookie有什么区别?
- session是服务器端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在内存、数据库或硬盘中。
- Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。数据也可保存在浏览器缓存或硬盘中。
说一下session的工作原理?
其实session是一个存在服务器上的类似于一个散列表的文件。里面存有我们需要的信息,在我们需要的时候可以从里面取出来。类似于一个大号的map,里面的键存储的是用户的sessionid,用户向服务器发送请求的时候会带上这个sessionid。这时就可以从中取出对应的值了。
如果客户端禁用了cookie,能实现session还能用吗?
cookie和session一般认为是两个独立的东西,session是用在服务器端保持状态的,cookie是用在客户端保持状态的。
为什么禁用cookie就不能得到session呢?因为session是用sessionID来确定当前会话所对应的服务器session,而sessionID是通过cookie来传递的,禁用cookie就相当于失去了sessionID,也就得不到session了。
能实现session还能用。
一般我们会使用手动通过URL传值,隐藏表单传递seesionID的方式。