JSP开发常见问题
1、JSP页面可以包含哪些元素?
- HTML标签:<html></html>等等
- JSP标记:包括指令标记、动作标记
- 程序片段:<% %>
- JAVA表达式:<%= %>
- JSP注释: <%-- --%>
- Html注释: <!-- -->
2、JSP页面各种元素的语法
表格;
序号 | 语法 | 对应元素 |
1 | <html></html> | |
2 | <%@ %> | JSP指令标记 |
3 | <%! %> | 属性和方法声明 |
4 | <% %> | 程序片段 |
5 | <%= %> | JAVA表达式 |
6 | <%-- --%> | JSP注释 |
7 | <!-- --> | Html注释 |
3、JSP页面执行过程?
JSP页面执行时,经历3个阶段:翻译、编译、执行;
(1)翻译阶段:当浏览器首次访问一个JSP页面时候,Tomcat首先将该页面翻译为.java源文件,并保存在tomcat的work相应的目录下;该java文件其实为一个servlet;
(2)编译阶段:tomcat将该servlet编译为一个class文件;
(3)执行阶段:执行该servlet class文件,并将结果返回给浏览器;
当浏览器第二次再访问同一个JSP页面时候,tomcat首先判断JSP页面是否发生了改变(通过jsp文件的日期判断),若没有改变,则直接跳转到第三个阶段,直接执行class文件,这样大大提高了JSP执行的速度;
当有多个浏览器同时访问同一个JSP页面时,tomcat为每个请求分配一个线程处理该请求,这些线程之间共享同一个servlet对象中的属性和方法,但是独享servlet对象的service方法。
5、JSP页面中的属性和方法的声明对应servlet的什么?
属性或方法的声明(<%! %>)对应于servlet中的属性和方法,当多个请求同时访问时,以多线程共享方式运行;
6、JSP页面中的page指令标记常见的属性及作用?
page指令(<%@ page contentType="" %>)用于设置JSP页面的属性,常用的属性有:contentType, pageEncoding, import;
(1)contentType 属性
<%@ page contentType="text/html; charset=GB2312" %>该属性主要用于当Tomcat将响应返回给浏览器时,告诉浏览器返回的内容是什么(text/html),以及浏览器该以什么字符集对内容进行解码(decode)
(2)pageEncoding属性
<%@ page pageEncoding="UTF-8" %>该属性用于2个地方:
- 指定JSP页面的编码方式,也就是当编辑器(Eclipse等)将JSP文件保存到磁盘时以该方式进行编码。
- 当Tomcat将JSP翻译成.Java源文件时,j将按照该属性的值对JSP页面中文本进行解码,因为JSP就是以按pageEncoding进行编码的;
(3)import属性
<%@ page import="java.util.*,java.io.*" %> <%-- 多个包用逗号分隔 --%>
导入JSP页面需要的package;
7、<%@ include file="file url" %>与<jsp:include page="" %>的区别是什么?
(1)语法不同:
<%@ include file=" " %>是JSP指令标记;而<jsp:include page="" %>是JSP 动作标记;
(2)运行原理不同:
<%@ include file="" %>是静态加载的,也就是当将JSP翻译成Servlet源文件时候,tomcat从磁盘读取文件,然后替换掉该指令,做了一个字符串替换;与C、C++中的#include <stdio.h>作用一样;
<jsp:include page="" %>是动态加载的,也就是执行JSP页面时候,当遇到JSP:include动作,Tomcat会将该page指定的JSP运行的结果插入到当前页面中;
(3)使用的场景不同:
<%@ include file="" %>一般用于将一个复杂的页面分割成多个较小的文件,并且每个小文件都可以重复使用,比如一个完整的JSP页面通常包含top.jsp(菜单、banner等等)+body.jsp(主显示区)+bottom.jsp(版权信息等等)
<jsp:include page="" %>一般用于项目中多个页面中出现了重复功能,为了提高这些代码的重用,可以用该指令;
8、<jsp:include page %>动作标记的优点?
代码模块化;实现功能的重用;
9、<jsp:include page %>与<jsp:forward %>的区别
forward:是将控制权交给forward的页面,该动作后面的JSP代码不再执行,用于实现请求的转发;
include:动态加载运行结果,类似函数执行;
10、什么是session?
11、常见的html标签
head title body p form input div
12、form标签中的属性的意义
- action属性:用于指定处理该form表单的对象,可以是一个JSP、Servlet等等;如果action="",表示由当前JSP页面来处理form表单;
- method属性:指定浏览器向服务器提交表单时使用的方法,可以是get或post方法;通常使用post方法
- name属性:指定form表单的名字
- id属性:指定form表单的编号,要求id在JSP是唯一的;
13、常见form包含的元素及语法
text、checkbox radio select submit
14、如何给<jsp:include > <jsp:forward >传递参数?
<jsp:param >
15、浏览器的主要功能是什么?
- 向DNS服务器发出域名解析请求;
- 根据域名解析后的IP地址,与服务器建立TCP连接;
- 使用HTTP协议向服务器发生请求;
- 接收服务器的响应,并解析和渲染响应;
16、HTTP协议常见的状态码的意义是什么?
- 200
- 404
- 500
17、HTTP协议的get、post方法的区别是什么?
18、Tomcat的主要作用?
- 接收请求
19、JSP中的指令(directives)都有哪些?
- page
- include
- taglib所有的指令的执行都发生在翻译阶段,也就是将JSP页面翻译为Servlet源代码的时候