乐趣区

关于java:023JavaWeb面试题四JSP

开篇介绍

大家好,我是 Java 最全面试题库的提裤姐,明天这篇是 JavaWeb 系列的第四篇,次要总结了 JavaWeb 中 JSP 相干的问题,在后续,会沿着第一篇开篇的常识线路始终总结上来,做到日更!如果我能做到百日百更,心愿你也能够跟着百日百刷,一百天养成一个好习惯。

什么是 jsp,什么是 Servlet?jsp 和 Servlet 有什么区别?

定义:
jsp 实质上就是一个 Servlet,它是 Servlet 的一种非凡模式(由 SUN 公司推出),每个 jsp 页面都是一个 servlet 实例。
Servlet 是由 Java 提供用于开发 web 服务器应用程序的一个组件,运行在服务端,由 servlet 容器治理,用来生成动静内容。
一个 servlet 实例是实现了非凡接口 Servlet 的 Java 类,所有自定义的 servlet 均必须实现 Servlet 接口。

区别:

  • jsp 是 html 页面中内嵌的 Java 代码,偏重 页面显示
  • Servlet 是 html 代码和 Java 代码拆散,偏重 逻辑管制,mvc 设计思维中 jsp 位于视图层,servlet 位于管制层

Jsp 运行机制:

JVM 只能辨认 Java 类,并不能辨认 jsp 代码;
web 容器收到以 .jsp 为扩展名的 url 申请时,会将拜访申请交给 tomcat 中 jsp 引擎 解决,每个 jsp 页面第一次被拜访时,jsp 引擎将 jsp 代码解释为一个 servlet 源程序,接着编译 servlet 源程序生成.class 文件,再由 web 容器 servlet 引擎去装载执行 servlet 程序,实现页面交互。

jsp 有哪些域对象?

四大域对象:

  • pageContext page 域:指以后页面,在以后 jsp 页面无效,跳到其它页面失效
  • request request 域:指一次申请范畴内无效,从 http 申请到服务器解决完结,返回响应的整个过程。在这个过程中应用 forward(申请转发)形式跳转多个 jsp,在这些页面里你都能够应用这个变量
  • session session 域:指以后会话无效范畴,浏览器从关上到敞开过程中,转发、重定向均能够应用
  • application context 域:指只能在同一个 web 中应用,服务器未敞开或者重启,数据就无效

jsp 有哪些内置对象?

对象 生命周期 作用域 应用状况
request 一次申请 只在 Jsp 页面内无效 用于承受通过 HTTP 协定传送到服务器的数据(包含头信息、零碎信息、申请形式以及申请参数等)。
Reponse 一次响应 只在 Jsp 页面内无效 示意服务器端对客户端的回应。次要用于设置头信息、跳转、Cookie 等
Session 从存入数据开始,默认闲置 30 分钟后生效 会话内无效 用于存储特定的用户会话所需的信息
Out 用于在 Web 浏览器内输入信息,并且治理应用服务器上的输入缓冲区
PageContext 用于存取其余隐含对象,如 request、reponse、session、application 等对象。(实际上,pageContext 对象提供了对 JSP 页面所有的对象及命名空间的拜访。
Page page 对象代表 JSP 自身(对应 this),只有在 JSP 页面内才是非法的
Exception 显示异样信息,必须在 page 指令中设定 < %@ page isErrorPage=”true” %> 能力应用,在个别的 JSP 页面中应用该对象将无奈编译 JSP 文件
Application 服务器启动发送第一个申请时就产生了 Application 对象,直到服务器敞开。 用于存储和拜访来自任何页面的变量所有的用户分享一个 Application 对象
Config 获得服务器的配置信息

<%…%> 和 <%!…%> 的区别

<%…%>用于在 JSP 页面中嵌入 Java 脚本
<%!…%> 用于在 JSP 页面中申明变量或办法,能够在该页面中的 <%…%> 脚本中调用,申明的变量相当于 Servlet 中的定义的成员变量。

forward 与 redirect 的区别? 有哪些形式实现

区别:

  • forward 是把另一个页面加载到本页面,不扭转浏览器的门路
  • redirect 是跳转到另一个页面,会扭转浏览器的门路

实现形式:

  • 重定向: response.sendRedirect("重定向的门路")
  • 转发: request.getRequestDispatcher("转发门路").forward(request,response);

浏览器与 jsp,html 之间的关系

1.JSP 与 Java Servlet 一样,是在服务器端执行的,通常返回该客户端的就是一个 HTML 文本,因而客户端只有有浏览器就能浏览
2. 在大多数 Browser/Server 构造的 Web 利用中,浏览器间接通过 HTML 或者 JSP 的模式与用户交互,响应用户的申请
3.JSP 在服务器上执行,并将执行后果输入到客户端浏览器,咱们能够说基本上与浏览器无关

jsp 乱码如何解决,给出对应解决方案

1、JSP 页面显示乱码 <%@ page contentType=”text/html; charset=gb2312″%>
2、表单提交中文时呈现乱码 request.seCharacterEncoding("gb2312″) 对申请进行对立编码
3、数据库连贯呈现乱码 要波及中文的中央全副是乱码,解决办法:在数据库的数据库 URL 中加上useUnicode=true&characterEncoding=GBK 就能够了。
4、通过过滤器实现
5、在server.xml 中的设置编码格局

Servlet 和 CGI 的区别?

  • Servlet 处于服务器过程中,只会有一个 servlet 实例,每个申请都会产生一个新的线程,而且 servlet 实例个别不会销毁
  • CGI:来一个申请就创立一个过程,用完就销毁,效率低于 servlet

如何防止 jsp 页面主动生成 session 对象?

<%@ page session="false" %>

JSP 是如何被执行的?执行效率比 SERVLET 低吗?

当客户端向一个 jsp 页面发送申请时,Web Container 将 jsp 转化成 servlet 的源代码(只在第一次申请时),而后编译转化后的 servlet 并加载到内存中执行,执行的后果 response 到客户端

jsp 只在第一次执行的时候会转化成 servlet,当前每次执行,web 容器都是间接执行编译后的 servlet,所以 jsp 和 servlet 只是在第一次执行的时候不一样,jsp 慢一点,当前的执行都是雷同的。

退出移动版