JSP简介
Servlet看起来更像java类,生成html比较麻烦,需要调用out.println();JSP看起来更像HTML,是为了简化Servlet的工作而出现的替代品,JSP中可以镶嵌大段HTML代码及java代码。
JSP(Java Server Page)会被Tomcat自动编译,编译后的JSP跟HttpServlet一样,都是javax.servlet.Servlet接口的子类,JSP是另一种形式的servle。
JSP包括很多技术,包括
- Java Bean,
- 自定义标签(Custom Tags),
- EL表达式(Expression Language),
- JSTL标准标签库(Java Standard Tag Library)等。
这些强大成熟的技术使得视图层(View Tier)有很大优势。
如果一个web应用中只含有JSP程序与HTML、图片等静态文件资源,则部署web应用时就不需要web.xml(Tomcat6 、Java EE 5.0之后版本)
JSP工作原理
JSP是一种Servlet,但是与HttpServlet工作方式不太一样。HttpServlet是先由代码编译为class文件后部署到服务器上,先编译后部署。而JSP是先部署源代码后编译为class文件,后部署后编译。
JSP生命周期
JSP也是Servlet,运行时只会有一个实例。跟Servlet一样,JSP实体初始化、销毁时也会调用Servlet的init()与destroy()方法。另外,JSP还有自己的初始化方法与销毁方法_jspInit()与_jspDestory()。
JSP语法
JSP源代码可以分为两部分:
模板数据(HTML代码,不会控制程序流程,不影响程序运行结果)
元素(Java部分,包括脚本(scriptlet)、JSP指令、JSP标签)
JSP脚本必须由“<%”与“%>”括起来,中间部分必须遵循Java语法;
JSP输出可以使用out.println()方法,也可以使用“<%=”与“%>”输出各种类型数据;
JSP注释除了使用Java注释外,还可以使用“<%–”与“–%>”引用;
JSP中声明方法与属性(全局变量)时,使用“<%!”与“%>”;
If语句块前后必须有“{”与“}”;
JSP指令
指令格式<%@directive {attribut=value}* %>
*号表示有0个或多个属性
Directive指常见的指令有page、taglib、include等
Page指令可以设置很多属性
<%@include file=”head.jsp”%>
include指令可以实现页面的区块化(先包含后编译)
<jsp:include page=””/>
include行为(先运行后包含)
<%@ tablib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”>
JSP行为
JSP行为(JSP Actions)是一组内置的标签,只要书写很少代码就能实现丰富的功能。JSP行为是对常用的JSP功能的抽象与封装,包括两种,自定义JSP行为与标准JSP行为。自定义JSP行为也就是JSP自定义标签。
标准JSP行为格式<jsp:elements {attribute=”value”}*/>
常用行为
<jsp:include page=”” flush=”true”/>
<jsp:useBean id=”beanId” class=”className” scope=”Value”/>
<jsp:setProperty name=”beanName” property=”” value=””/>
<jsp:getProperty name=”beanName” property=””/>
使用Java Bean(POJO->(Plain Ordinary Java Object))
<jsp:plugin />嵌入Applet
<jsp:forword/>
实际上是对
request.getRequestDispatcher(“someServlet”).forword(request.response);
<jsp:directive />行为相当于JSP指令。
<jsp:direcive.pate/>相当于<%@ page %>,等等。
JavaWeb开发平台更倾向于使用directive行为而不是指令。
JSP隐藏对象
JSP中内置9个隐藏对象,有out、request、response、config、session、applaction、page、pageContext、exception
JSP配置
配置JSP同配置Servlet形式上完全一样,只是Servlet使用<servlet-class>标签,而JSP使用<jsp-file>
web.xml中<jsp-config>支持对JSP的批量处理,包含两个子标签<tablib>和<jsp-property-group>
EL(Expression Language)表达式
EL表达是是用${}括起来的脚本,用来方便读取对象。EL表达式写在JSP的HTML代码中,而不能写在“<%”和“%>”引起的JSP脚本中。
UseBean将对象放入request中,EL表达式先从request中获取对象,找不到再去session中查找。
EL表达式能方便操作Java Bean、甚至集合等,并支持简单运算。但EL表达式不能直接访问普通的方法,以及静态属性
总结
与Servlet相比,JSP更适合与HTML打交道,而Servlet更适合与JAVA打交道。它们的特点决定了它们的分工不同,而现在的Java EE(J2EE)系统中,Servlet只用于处理业务逻辑,JSP只用于显示结果。
转载请注明:学时网 » Java Web 深入JSP技术(三)