JSP简述

时间:2024-11-15 12:28:26
撰写时间:2019年09月18日
什么是Java Server Pages?
1、JSP全称Java Server Pages。Jsp是一种建立在Servlet规范提供的功能之上的动态网页技术,允许在网页文件中嵌入java代码和jsp标记。
Java 服务器页面 (Java Server Page ,JSP) ;扩展名 .jsp
网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。
JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。
2、jsp的执行过程
(1)Jsp文件在用户第一次请求时,会被编译成Servlet,然后由这个Servlet处理用户的请求,所以jsp可以看成是运行时的Servlet
(2)Jsp容器(也就是Servlet容器)管理jsp页面声明周期分为两个阶段.即转换阶段和执行阶段
(3)当有一个对jsp页面的请求到来时,jsp容器检查jsp页面的语法是否正确,将jsp页面转换为Servlet源文件,然后调用javac命令编译Servlet源文件生成字节码文件.这是转换阶段
(4)Servlet容器加载转换后的Servlet类,这是执行阶段
3、JSP 页面的元素
静态内容 ------------→ HTML、js、css静态文本
指令 ------------→ 以 <%@ 开始,以 %> 结束
表达式 ------------→ <%=Java表达式 %> *
代码块 ------------→ <% Java 代码(变量:_jspService方法的局部变量) %> *
声明 ------------→ <%! 函数或方法、变量(成员变量) %> *
动作 ------------→以 <jsp: 动作名 开始,以 </jsp:动作名> 结束
注释 ------------→ <%-- 这也是 注释,但客户端不能查看到 --%> *
4、JSP 指令用来设置与整个 JSP 页面相关的属性。
<%@ page … %> 定义页面的依赖属性,比如脚本语言、error 页面、缓存需求等等
<%@ include … %> 包含其他文件
<%@ taglib … %> 引入标签库的定义,可以是自定义标签
4、jsp的九大内置对象
request HttpServletRequest 类的实例
response HttpServletResponse 类的实例
out PrintWriter 类的实例,用于把结果输出至网页上
session HttpSession 类的实例
application ServletContext 类的实例,与应用上下文有关
config ServletConfig 类的实例
pageContext PageContext 类的实例,提供对 JSP 页面所有对象以及命名空间的访问
page 类似于 Java 类中的 this 关键字
Exception Exception 类的对象,代表发生错误的 JSP 页面中对应的异常对象
JSP 作用域包括 page、request、session 和 application
为什么使用JSP?
JSP程序与CGI程序有着相似的功能,但和CGI程序相比,JSP程序有如下优势:
性能更加优越,因为JSP可以直接在HTML网页中动态嵌入元素而不需要单独引用CGI文件。
服务器调用的是已经编译好的JSP文件,而不像CGI/Perl那样必须先载入解释器和目标脚本。
JSP基于Java Servlets API,因此,JSP拥有各种强大的企业级Java API,包括JDBC,JNDI,EJB,JAXP等等。
JSP页面可以与处理业务逻辑的servlets一起使用,这种模式被Java servlet 模板引擎所支持。
最后,JSP是Java EE不可或缺的一部分,是一个完整的企业级应用平台。这意味着JSP可以用最简单的方式来实现最复杂的应用。
JSP的优势
以下列出了使用JSP带来的其他好处:
与ASP相比:JSP有两大优势。首先,动态部分用Java编写,而不是VB或其他MS专用语言,所以更加强大与易用。第二点就是JSP易于移植到非MS平台上。
与纯 Servlets相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句。
与SSI相比:SSI无法使用表单数据、无法进行数据库链接。
与JavaScript相比:虽然JavaScript可以在客户端动态生成HTML,但是很难与服务器交互,因此不能提供复杂的服务,比如访问数据库和图像处理等等。
与静态HTML相比:静态HTML不包含动态信息。