第3.65课 上课 JSP深入介绍, 什么是JSP, JSP与Servlet的关…

3_65

JSP深入介绍

 什么是JSP

1)JSP全称是Java Server Pages,它和Servlet技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。

2)JSP最大的特点在于,可以在html当中嵌入Java代码,为用户提供动态数据。

3)JSP是Servlet的简化设计,逻辑与界面设计分开,开发更方便。

 

 JSP与Servlet的关系

1)JSP和Servlet,都可以用于开发动态web资源。但由于这2门技术各自的特点,开发人员经常用servlet作为web应用中的控制器组件或者说是接入层来使用,而把JSP技术作为数据显示模板来使用。

 

2)Servlet只负责响应请求并处理请求产生数据,数据的显示由JSP负责。

 

3)JSP与Servlet的不同之处:

a)Jsp文件后缀名--->.jsp,而Servlet文件的后续名 ---> .java

b)配置文件中不需要对jsp进行描述,当然也可以进行描述;

c)Jsp文件的组成--->html+jsp脚本元素;

 JSP的运行原理

1)每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理。JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) ,然后按照servlet的调用方式进行调用。

 

2)由于JSP第一次访问时会翻译成servlet,所以第一次访问通常会比较慢,但第二次访问,JSP引擎如果发现JSP没有变化,就不再翻译,而是直接调用,所以程序的执行效率不会受到影响。

 

3)JSP的声明周期:

 

jsp的声明周期方法:

_jspInit(): 同servlet的init(),执行(调用)一次,构造器执行之后执行。

_jspService(): 同servlet的service(),执行多次,每次请求执行。

_jspDestroy(): 同servlet的destroy(),执行一次,对象被销毁之前执行。

 

 JSP语法

  声明

1)JSP页面中编写的所有代码,默认会翻译到servlet的_jspService()方法中, 而Jsp声明中的java代码被翻译到_jspService()方法的外面,即实例变量。语法:

<%!

java代码

%>

 

 

所以,JSP声明可用于定义JSP页面转换成的Servlet程序的静态代码块成员变量方法 。

 

2)多个静态代码块、变量和方法可以定义在一个JSP声明中,也可以分别单独定义在多个JSP声明中。

 

  脚本

1)JSP脚本用于在JSP页面中编写多行Java代码。语法:

<%

多行java代码

%>

注意:

a)JSP脚本中只能出现java代码,不能出现其它模板元素, JSP引擎在翻译JSP页面中,会将JSP脚本片断中的Java代码将被原封不动地放到Servlet的_jspService()方法中。

b)JSP脚本中的Java代码必须严格遵循Java语法,例如,每执行语句后面必须用分号(;)结束。

 

2)在一个JSP页面中可以有多个脚本,在两个或多个脚本之间可以嵌入文本、HTML标记和其他JSP元素。举例:

<%

int x = 10;

out.println(x);

%>

<p>这是JSP页面文本</p>

<%

int y = 20;

out.println(y+””+x);

%>

 

3)多个脚本中的代码可以相互访问,犹如将所有的代码放在一对<%%>之中的情况。

 

4)单个脚本片断中的Java语句可以是不完整的,但是,多个脚本片断组合后的结果必须是完整的Java语句。例如:

<%

for (int i=1; i<5; i++)

{

%>

<H1>hello</H1>

<%

}

%>

 

  表达式

1)JSP表达式用于将程序数据输出到客户端。

语法:<%= 变量或表达式 %>

举例:当前时间:<%= new java.util.Date() %>

 

2)JSP引擎在翻译脚本表达式时,会将程序数据转成字符串,然后在相应位置用out.write(…) 将数据输给客户端。

 

3)JSP脚本表达式中的变量或表达式后面不能有分号(;)。

 

  注解

1)JSP的注释的格式: <%-- --%>

2)JSP引擎在将JSP页面翻译成Servlet程序时,会忽略JSP页面中被注释的内容。

 

 3个静态指令的用法

  page

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

 

说明:

page指令用于通知jsp引擎一些jsp的信息。

page指令必须出现在jsp页面的第一行。

 

Page指令的属性:

1)language="java":页面支持的语言。

2)contentType="text/html; charset=UTF-8":页面的格式和字符编码。

3)pageEncoding="UTF-8":页面的字符编码,建议和charset一致。

4)import="": 导包,唯一可以出现多次的属性。

5)isELIgnored="false":是否忽略EL表达式。

6)errorPage="error.jsp":当前jsp发生异常的时候跳转的页面。

7)isErrorPage="false":当前jsp是否一个异常处理页面。如果为true,可以访问exception内置对象。

  include

index.jsp

 

<%@ include file="top.jsp" %>

 

说明:

包含指令又称为静态包含,会将被包含页面top.jsp的代码复制到当前页面进行编译、执行。

 

注意:

1)包含页面和被包含页面不能出现同名变量。

2)通常,静态包含常用来包含html或者logo等没有java代码的静态页面。

  taglib

用于引入标签库,其语法规则:

<%@ taglib prefix="标签库的短名" uri="标签库的URL"%>

 

例如:

使用标签库的时候,需要导入jstl-2.1.jar 包

 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

posted on 2018-01-31 23:16  東風★破  阅读(204)  评论(0)    收藏  举报

导航