Java面试中Servlet、JSP相关
1、亭盍誓叭JSP内置对象:
request:表示HttpServerRequest对象,包含了有关浏览器请求页面的信息,并提供了几个用于获取cookie,header,session数据的有用方法
response:表示HttpServerResponse对象,提供了用于设置送回浏览器的响应的方法,如cookies,头信息等
out:对象是javax.jsp.JspWriter的一个实例,提供了几个能用于向浏览器会送输出结果的方法
pageContent:表示javax.servlet.jsp.PageContext对象,用于使存取各种范围的名字空间,servlet相关对象的API,包装了通用的servlet相关功能的方法
session:表示一个请求的javax.servlet.http.HttpSession对象,Session可以存贮用户的状态信息
appliction:表示一个javax.servlet.ServletContext对象,有助于查找有关servlet引擎和servlet环境的信息
config:表示一个javax.servlet.ServletConfig对象,该对象用于存取servlet实例的初始化参数
page:表示从该页面产生的一个servlet实例
exception:针对错误网页、未捕捉的例外
2、JSP中动态Include和静态Include的区别
动态Include:<jsp:include page="head.jsp" />总是会检查所含文件中的变化,适合用于包含动态页面,可以带参数
静态Include:<%@include file="head.jsp"%>不会检查所含文件中的变化,适合静态页面
3、Servlet中forward和redirect的区别
forward是容器中控制权的转向,是服务器请求资源,服务器直接访问目标地址的URL,把URL的响应内容读取过来,再发给浏览器,浏览器不知道服务器发送的内容来自哪儿,所以地址栏不变
redirect是服务器端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session、request参数都可以获取,可以看到地址栏中跳转后的链接地址
前者更加高效,在forward可以满足需要时,尽量使用forward方法,这样有助于隐藏实际的链接,在需要跳转到一个其它服务器上的资源,必须使用sendRedirect()方法。
4、get 和 post 的区别
Form 中的 get 和 post 方法,在数据传输过程中分别对应了 HTTP 协议中的GET 和 POST 方法。二者主要区别如下:
1) Get 将表单中数据按照 variable=value 的形式,添加到 action 所指向的URL 后面,并且两者使用“?”连接,而各个变量之间用“&”连接;Post 是将表单中的数据放在 form 的数据体中,按照变量和值相对应的方式,传递到 action所指向 URL;
2)Get 是不安全的,因为在传输过程,数据被放在请求的 URL 中;Post 的所有操作对用户来说都是不可见的;
3)Get 传输的数据量小,这主要是因为受 URL 长度限制;而 Post 可以传输大量的数据,所以在上传文件只能使用 Post;
4) Get 限制 Form 表单的数据集必须为 ASCII 字符,而 Post 支持整个 ISO10646字符集;
5)Get 是 Form 的默认方法。
5、JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么
JSP 是 Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达。JSP 编译后是"类 servlet"。Servlet 和 JSP 最主要的不同点在于,Servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的 HTML 里分离开来。而 JSP 的情况是 Java 和 HTML 可以组合成一个扩展名为.jsp 的文件。 JSP 侧重于视图,Servlet 主要用于控制逻辑。