JSP

1 简介

什么是Java Server Pages?

JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。

JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。

JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。

2.JSP工作流程

· 与一般的页面一样,浏览器向Web服务器发送HTTP请求。

· Web服务器识别HTTP请求是针对JSP页面,并将其转发给JSP引擎。这可以通过使用以.jsp(而不是.html结尾)的URL或JSP页面完成。

· JSP引擎从磁盘加载JSP页面并将其转换为servlet内容。这个转换非常简单,所有模板文本都转换为out.write()语句,并将所有JSP元素转换为Java代码。此代码实现页面的相应动态行为。

· JSP引擎将servlet编译为可执行类,并将原始请求转发到servlet引擎。

· Servlet引擎的Web服务器加载Servlet类并执行它。在执行期间,servlet生成HTML格式的输出。HTTP响应中的servlet引擎将输出传递给Web服务器。

· Web服务器根据HTTP响应将静态HTML内容转发到浏览器。

· 最后,Web浏览器处理HTTP响应中动态生成的HTML页面,就像它是静态页面一样。

3. JSP生命周期

以下是JSP遵循的过程 -

1. 编译

2. 初始化

3. 执行

4. 清理

JSP生命周期的四个主要阶段与Servlet生命周期非常相似。 

3.1 JSP编译

当浏览器请求JSP时,JSP引擎首先检查是否需要编译页面。

如果页面从未被编译,或者JSP从上一次编译以来JSP文件代码已被修改

那么JSP引擎将会编译页面。

编译过程包括三个步骤 -

· 解析JSP

· 将JSP转换为servlet

· 编译servlet

3.2 JSP初始化

当容器加载JSP时,它会在处理任何请求之前调用jspInit()方法。

public void jspInit(){

   // Initialization code...

}

通常,初始化仅执行一次,并且与servlet的init()方法一样

2.3 JSP执行

JSP生命周期的这个阶段表示所有与请求的交互,直到JSP被销毁为止。

每当浏览器请求JSP并且页面已被加载和初始化时,

JSP引擎将调用JSP中的_jspService()方法。

_jspService()方法以HttpServletRequest和HttpServletResponse为参数,如下所示:

void _jspService(HttpServletRequest request, HttpServletResponse response) {

   // Service handling code...

}

根据请求调用JSP的_jspService()方法。它负责生成请求的响应,此方法还负责生成对所有七种HTTP方法的响应,即GET,POST,DELETE等。

2.4.JSP清理

JSP生命周期的清理阶段表示当JSP被容器从使用中移除时。

jspDestroy()方法是等效于servlet的destroy方法的JSP方法。

jspDestroy()方法具有以下形式 –

public void jspDestroy() {

   // Your cleanup code goes here.

}

2. JSP指令

JSP中有三种类型的指令标签 –

序号

指令

说明

1

<%@ page ... %>

定义页面相关属性,如脚本语言,错误页面和缓冲要求。

2

<%@ include ... %>

在编译阶段包括文件。

3

<%@ taglib ... %>

声明页面中使用的包含自定义操作的标签库

 

2.1 page指令

JSP中的page指令用于向容器提供与当前JSP页面相关的指令。可以在JSP页面的任何位置使用page指令进行编码。

按照惯例,page指令被编码在JSP页面的顶部。

<%@ page attribute = "value" %>

contentType属性

contentType属性设置JSP页面和生成的响应页面的字符编码。 默认内容类型为:text/html,它是HTML页面的标准内容类型。

以下语句指示向浏览器生成的页面呈现为HTML –

<%@ page contentType = "text/html" %>

 

还可以指定响应的字符编码。

例如,如果要指定返回浏览器的结果页面使用:UTF-8,则可以使用以下page指令

<%@ page contentType = "text/html:charset=UTF-8" %>

language属性

language属性指示在JSP页面脚本编写中使用的编程语言。

例如,由于通常我们使用Java作为脚本语言,因此language选项可设置成如下:

<%@ page language = "java" %>

2.2 include指令

include指令用于在编译阶段包括一个文件。这个指令告诉容器在编译阶段将其他外部文件的内容合并到当前JSP文件中。

可在JSP页面的任何位置使用include指令进行编码。

本指令的一般用法形式如下:

<%@ include file = "relative url" >

 

例如,一般的jsp文件头设置语言,字符集编码

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

2.3 taglib指令

taglib指令声明JSP页面使用一组自定义标签,标识库的位置,并提供了在JSP页面中标识自定义标签的方法。

taglib指令遵循下面给出的语法 –

<%@ taglib uri="uri" prefix = "prefixOfTag" >

这里,uri属性值解析为容器理解的位置,并且prefix属性通知容器什么位置的标记是自定义操作。

例如:使用JSTL:需要导入标签库:

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

3. JSP动作

3.1 jsp:include

此动作允许将文件插入到正在生成的页面中。语法如下所示 –

<jsp:include page = "relative URL"/>

与在将JSP页面转换为servlet时将文件插入的include指令不同,此动作在请求页面时插入该文件。

<%page include file="header.jsp"> 和 <jsp:include page="header.jsp">区别
    两者显示的页面是相同的,只是客户端请求访问该jsp生成的对应java代码不同
    <%page include file="header.jsp">调用这个的jsp文件在客户端访问时只会生成一个servlet_jsp.java文件,将两者合二为一,通常用于头部导航条
    <jsp:include page="header.jsp">则分别会生成servlet_jsp.java和header_jsp.java文件

转载于:https://my.oschina.net/u/3839775/blog/1800609

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值