JSP | 常见 JSP 简答题
一、简述 JSP 的工作原理
当我们访问一个JSP页面的时候,这个文件首先会被JSP引擎翻译为一个Java源文件,其实就是一个Servlet,并进行编译,然后像其他Servlet一样,由Servlet引擎来处理。Servlet引擎装载这个类,处理来自客户的请求,并把结果返回给客户。
二、JSP有哪些内置对象?作用分别是什么?
1)page:代表目前的这个jsp网页对象
2)pageContext:网页的属性是在这里管理
3)request:用户端请求,此请求会包含来自GET/POST请求的参数
4)response:网页传回用户端的回应
5)session:与请求有关的会话期
6)config:servlet的构架部件
7)application:servlet正在执行的内容
8)out:用来传送回应的输出
9)exception:针对错误网页,未捕捉的例外
三、JSP有哪些基本动作?作用分别是什么?
1)jsp:include: 在页面被请求的时候引入一个文件
2)jsp:useBean: 寻找或者实例化一个 JavaBean
3)jsp:setProperty: 设置 JavaBean 的属性
4)jsp:getProperty: 输出某个 JavaBean 的属性
5)jsp:forward: 把请求转到一个新的页面
6)jsp:plugin: 将会根据浏览器的版本替换成 <object>标签或者 <embed>标签
四、简述使用JDBC技术的主要步骤?
1)注册和加载驱动器
2)与数据库建立连接
3) 创建执行 SQL 命令的Statement对象
4)编写并执行SQL语句
5)处理返回结果
6)关闭连接
五、简述JavaBean的书写规范。
1)JavaBean是一个public的类
2)需要被序列化并且实现了Serializable接口
3)要有一个默认构造函数,以便任何一个容器都可以创建JavaBean的实例
4)存放属性的变量为protected或private特性
5)设置和获取属性时,使用setXXX()和getXXX()方法
六、简述Session的工作原理。
1)Session是针对每个用户的,变量的值保存在服务器上。
2)用一个SessionID来区分是哪个用户的Session变量。这个值是通过用户浏览器在访问的时候返回给服务器,当客户禁用Cookie时,这个值也能设置为get来返回给服务器。
3)为安全起见,建议用户使用时采用服务器的Session机制,因为它不会任意读取客户存储的信息。
4)服务器创建Session后,会把Session的id以Cookie的形式写回给客户端。
5)只要客户端的浏览器没有关闭,再去访问服务器时,都会通过Cookie向服务器发送Session的id,服务器发现客户端浏览器带Session的id过来了,就会使用内存中与之对应的Session为之服务。
七、JSP的执行流程。
1)客户端请求连接服务器,并将请求信息交给web容器来处理
2)web容器找到客户端请求的*.jsp文件
3)判断是否为创建或修改后第一次访问该jsp文件,如果是第一次访问,则将.jsp文件通过转换为符合servlet规范的.java文件,并进入步骤(4);否则直接进入步骤(5)
4)* .java文件经过编译后,生成*.class文件
5)web容器要执行生成的*.class文件,就要调用该servlet对象的service方法。而该service方法,如果是第一次请求页面,或者页面有所变动,则web容器要先把jsp页面转化为servlet代码,再将其转换为.class文件。因为编译过程会耗费一些时间,所以第一次访问jsp文件,或者jsp文件有改动时,访问时间略长。
1、JavaBean 的优点
- 降低 JSP 的复杂程度
- 提高代码的复用性
2、简述什么是 JavaBean
- JavaBean 是 Java 开发语言中可以重复使用的组件,注意 JavaBean 并非 JSP 独有
3、两种跳转的区别
<jsp:forward page=“”/> 和 response.sendRedirect 一个是转发一个是重定向,运行到转发动作时会直接跳转,但网址不变(类似内部跳转)
4、JSP 页面构成的五种元素 (应该是指 body 部分)
- HTML 标签,JSP 标签,成员变量和方法声明,Java程序片,Java表达式
5、PreparedStatement和Statement的区别
- PrepareStatement 是预编译的,对批处理 (batch) 可以大大提高效率,也叫 JDBC 存储过程
- 使用 Statement 对象,对数据库进行一次的处理会比 PrepareStatement 的开销更小
- Statement 每次执行 SQL 语句时数据库都会对 SQL 语句进行编译,而 PrepareStatement 是预处理,支持批处理
简而言之:预处理语句PreparedStatement会将传入的SQL语句封装在PreparedStatement对象中,事先进行预处理编译等待使用,当有单一的SQL语句需要执行多次的恶化PreparedStatement的效率会比Statement的效率更高
6、SQL 增删改查语句
select * from `login`,`user` where login.id = user.id /* 查询 */
insert into author(`ID`, `Name`,`LoginName`,`Password`, `RoleID`) value(1,'add','add','123',1) /* 增加 */
UPDATE author SET AuthorPassword="55556" WHERE AuthorID=1 /* 修改 */
DELETE FROM author WHERE AuthorID=2 /* 删除 */
7、MVC 的好处
将模型、视图、控制器分离开,降低耦合,当某一层的需要发生变化,只要改小部分的代码即可有利于组件的重用
8、
<jsp:useBean id=“xx” class=“xxx” scope=“session” />和<jsp:useBean id=“xx” type=“xxx” scope=“session” />的区别
两种的意义是一样的,假如是使用class的话,那么先判断在指定的作用域中能不能拿到对应的Javabean,如果拿不到的话那么就new一个对象,用type的话如果找不到相应的bean那么就会报错,并且如果是用class或beanName的话必须将需要的包导入,而type可以不用
9、简述servlet生命周期
- 客户端向服务器发送请求
- servlet容器校验该请求所对应的servlet是否已经载入容器
- 如果还未载入的话那么就将对应的servlet载入容器,并且执行servlet的init()方法
- web服务器将用户请求的信息传入servlet
- servlet执行service方法,根据需要调用doPost或者是doGet的方法
- servlet将执行结果返回给客户端
- 如果多个用户同时访问servlet,则是启动不同的线程响应不同的请求
- 发生服务器关闭等终止事件时候调用destroy的方法
10、什么是 session
session是客户端和服务器之间的一次会话,通过会话机制服务器端可以识别每一个客户端,然后针对用户的请求给出不同的响应
11、jsp常用的内置对象及其作用
application对象代表应用程序上下文,它允许JSP页面与包括在同一应用程序中的任何Web组件共享信息。
Config对象允许将初始化数据传递给一个JSP页面
Exception对象含有只能由指定的JSP“错误处理页面”访问的异常数据。
Out对象代表提供输出流的访问
Page对象代表JSP页面对应的Servlet类实例
PageContext对象是Jsp页面本身的上下文,它提供唯一一组方法来管理具有不同作用域的属性
Request对象提供对Http请求数据的访问,同时还提供用于加入特定请求数据的上下文
Response对象允许直接访问HttpServletResponse对象
Session对象可能是状态管理上下文中使用最多的对话
12、jsp和servlet的关系
-
JSP 是 Servlet 技术的拓展,本质上是 Servlet 的简易方式,更强调应用外表表达。JSP 在编译后是 “类 Servlet”。Servlet 和 JSP 最主要的不同点在于,Servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的 HTML 分离开。而 JSP 的情况是 Java 和 HTML 可以组合成一个拓展名为 .jsp 的文件。JSP 侧重视图,而Servlet 用于控制逻辑
-
Servlet是使用Java Servlet接口(API)运行在Web应用服务器上Java程序,其功能十分强大,它不但可以处理Http请求中的业务逻辑,而且还可以输出HTML代码来显示指定页面。它是JSP的早期版本。
-
JSP是一种在Servlet规范之上的动态网页技术,在JSP页面之中,同样可以编写业务逻辑处理Http请求,也可以通过HTML代码来编辑页面。
-
在实现功能上,Servlet与JSP貌似相同,实质存在一定的区别,表现在以下方面:
角色不同,编程方法不同,Servlet 需要编译后运行,速度不同
13、include动作和指令的区别
include指令是静态包含,它是将被包含的文件包含在文件中,一起编译的
include动作是动态包含,他是将被包含的文件的执行结果
14、jsp运行原理
1、客户端通过浏览器向服务器发出请求,在该请求中包含了请求的资源的路径,这样当服务器接收到该请求后就可以知道被请求的内容。
2、服务器根据接收到的客户端的请求来加载相应的JSP文件。
3、Web服务器中的JSP引擎会将被加载的JSP文件转化为Servlet。
4、JSP引擎将生成的Servlet代码编译成Class文件。
5、服务器执行这个Class文件。
6、最后服务器将执行结果发送给浏览器进行显示。
15、<%! %>和 <% %>的区别
<%! %>用于声明成员变量和方法,成员变量直到服务器关闭一直有效
<% %>用于声明局部变量和同时其不能声明方法仅在jsp后续的程序片中有效