JSP简介

1.什么是JSP

JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。

2.JSP的特点

能以模板化的方式简单、高效地添加动态网页内容。
1.可利用JavaBean和标签库技术复用常用的功能代码(设计好的组件容易实现重复利用,减少重复劳动)。标签库不仅带有通用的内置标签(JSTL),而且支持可扩展功能的自定义标签。

2.有良好的工具支持。

3.继承了Java语言的相对易用性。

4.继承了Java的跨平台优势,实现“一次编写,处处运行”。因为支持Java及其相关技术的开发平台多,网站开发人员可以选择在最适合自己的系统平台上进行JSP开发;不同环境下开发的JSP项目,在所有客户端上都能顺利访问。

5.页面中的动(控制变动内容的部分)/静(内容不需变动的部分)区域以分散但又有序的形式组合在一起,能使人更直观地看出页面代码的整体结构,也使得设计页面效果和程序逻辑这2部分工作容易分离(外观视图与逻辑分离)。从而方便分配人员并发挥各自长处,实现高效地分工合作。

6.可与其它企业级Java技术相互配合。JSP可以只专门负责页面中的数据呈现,实现分层开发。

3.JSP的工作原理

首先JSP分为两类,

(1)静态部分:标准的HTML标签、静态的页面内容,这些内容与静态HTML页面相同.
(2)动态部分:Java程序控制的内容,这些内容由Java程序来动态生成。


<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
 
<html>
 
    <head>
 
        <title>欢迎</title>
 
    </head>
 
    <body>
 
        你好Java JSP!现在时间是:<%out.println(new java.util.Date());%>
 
    </body>
 
</html>

在<% %>之间的就是可以把Java代码嵌入HTML页面中,这就变成了动态的JSP页面。从表面上来分析,JSP页面已经不再需要Java类,似乎感觉完全脱离了Java面向对象的特征了,但是,实际上JSP是Servlet的一种特殊的形式,每一个JSP的页面就是一个Servlet的实例。

其次他的工作原理如下:

(1)当用户访问一个JSP页面时,回想一个Servlet容器(Tomcat)发出请求;

(2)如果是第一次请求页面,或页面有所改动,则servlet容器首先要把JSP页面(假设为test.jsp)转化为Servlet代码(test.java),再将其转化为(test.class文件);因为这个过程(编译)会耗费一定时间,所以第一次访问或jsp文件有改动时,访问时间有些长;

(3)JSP容器负责调用从JSP转换来的servlet,这些servlet负责提供服务相应用户请求(比如客户端发送表单,要求servlet:formprocessor.java来处理,则容器会建立一个线程,调用formprocessor.java来处理该请求);如果用户有多个请求,则容器会建立多个线程处理多个请求;

(4)容器执行字节码文件(包括调用的servlet:formprocessor.java字节吗),并将其结果返回到客户端;(返回的最终方式是有servlet输出html格式的文件流)

注释:

JSP页面必须要在JSP服务器内运行,如tomcat weblogic,jboss等等
JSP页面的访问者无须安装任何客户端,甚至不需要可以运行Java的运行环境,因为JSP页面输送到客户端的是标准HTML页面。

4.常用语法

1.指令标识

指令标识主要用于设定整个JSP页面范围内都有效的相关信息,它是被服务器解释并执行的,不会产生任何内容输出到页面中。也就是说,指令标识对于客户端浏览器是不可见的。

JSP指令标识的语法格式如下:

<%@ 指令名 属性1=“属性值1”  属性2=“属性值2” %>

指令名:用于指定指令名称。在JSP中包括:Page、include、taglib这3条指令。

属性:用于指定属性名称,不同的指令包含不同的属性。在一个指令中可以设置多个属性,各属性之间用逗号或空格分隔。

page指令:<%@ page ... %> 用于定义整个JSP页面的相关属性。

例如,在应用Eclipse创建JSP文件时,在文件的最顶端会默认添加一条指令,用于指定JSP所使用的语言、编码方式等。这条指令的具体代码如下:

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

include指令:<%@ include ... %> 通过该指令可以在一个JSP页面中包含另一个JSP页面。

不过该指令是静态包含,也就是说被包含文件中所有内容会被原样包含到该JSP页面中,即使被包含文件中有JSP代码,在包含时也不会被编译执行。使用include指令,最终将生成一个文件,所以在被包含和包含的文件中,不能有相同名称的变量。

代码如下

<%@ include file="path" %>

taglib指令:<%@ taglib ... %> 通过该命令声明该页面中所使用的标签库,同时引用标签库,并指定标签的前缀。

语法格式如下

<%@ taglib prefix="tagPrefix" uri="tagURI" %>

注意:

prefix:用于指定标签的前缀。该前缀不能命名为jsp、jspx、java、javax、sun、servlet和sunw。

uri:用于指定标签库文件的存放位置。

举个例子

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

5.脚本标识
JSP表达式

格式如下

<%= 表达式%>

举个例子

<% String manager="pan_junbiao的博客"; %>  <!-- 定义保存管理员名称变量 -->
管理员:<%= manager %><br/>                <!-- 输出结果为:管理员:pan_junbiao的博客 -->
<%= "管理员:" + manager %><br/>           <!-- 输出结果为:管理员:pan_junbiao的博客 -->
<%= 3*6 %><br/>                           <!-- 输出结果为:18 -->
<% String url="https://blog.csdn.net/pan_junbiao"; %>   <!-- 定义保存文件名称变量 -->
<a target="_blank" href="<%= url %>">pan_junbiao的博客连接</a>  <!-- 输出结果为:pan_junbiao的博客连接   是一个链接-->

声明标识

声明标识用于在JSP页面中定义全局的变量或方法。通过声明标识定义的变量和方法可以被整个JSP页面访问,所以通常使用该标识定义整个JSP页面都需要引用的变量或方法。声明标识的语法格式如下:

<%! 声明变量或方法的代码 %>
例子

<%!
	int number=0;           //声明全局变量
	int count(){            //声明全局方法
		number=number%4;       //number与4的取余
		return number;  //返回number的值
	}
%>

取余的结果为:

<%= count() %>
代码片段

所谓代码片段就是在JSP页面中嵌入的Java代码或是脚本代码。代码片段将在页面请求的处理期间被执行,通过Java代码可以定义变量或是流程控制语句等;而通过脚本代码可以应用JSP的内置对象在页面输出内容、处理请求和响应、访问session会话等。代码片段的语法格式如下:

<% Java代码或是脚本代码 %>
举例

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>九九乘法表</title>
</head>
<body>
<%
	String str = ""; 				  //声明保存九九乘法表的字符串变量
	//连接生成九九乘法表的字符串
	for (int i = 1; i <= 9; i++) {			  // 外循环
		for (int j = 1; j <= i; j++) { 		  // 内循环
			str += j + "*" + i + "=" + j * i;
			str += "&nbsp;"; 		  //加入空格符
		}
		str += "<br>"; 				  // 加入换行符
	}
%>
<table width="440" height="85" border="1" cellpadding="0" cellspacing="0" style="font:9pt;" 
bordercolordark="#666666" bordercolorlight="#FFFFFF" bordercolor="#FFFFFF">
  <tr>
    <td height="30" align="center">九九乘法表</td>
  </tr>
  <tr>
    <td style="padding:3pt">
		<%=str%>					<!-- 输出九九乘法表 -->
	</td>
  </tr>
</table>
</body>
 
</html>
posted @ 2023-04-22 11:14  YE-  阅读(63)  评论(0编辑  收藏  举报