Javaweb 深入JSP技术(三)

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包括很多技术,包括

  1. Java Bean,
  2. 自定义标签(Custom Tags),
  3. EL表达式(Expression Language),
  4. 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只用于显示结果。

转载请注明:学时网 » Javaweb 深入JSP技术(三)

你可能感兴趣的:(java,jsp,servlet)