JSP的指令、和脚本元素

JSP的指令、和脚本元素

一 jsp出现的原因

Jsp出现的原因是因为Servlet的缺点:

(1) 开发者和维护应用程序的成员必须对java编程有全面的了解,因为在处理代码的时候和处理html元素混合在一起

(2) 如果要改变应用的外观,或者增加对新客户类型的支持,则需要对象sevlet对吗进行更新和重编译

(3) 在设计应用界面时,很难充分利用web开发页面,如果这种工具用于web页面布局,所生成的代码很容易出错,即Servlet产生应答的时候,要返回一整个html代码,在输出的结果代码中会有很多的out输出语句,也不能很好的输出

二 Jsp的介绍:

1.Jsp的概念:

Jsp是servlet更高级的扩展,是用来显示动态内容的,在后缀名为.jsp的程序里面写。

2.Jsp优点:

(1)简便性和有效性

(2)程序的独立性

(3)程序的兼容性

(4)程序的可重用性(一般把多次使用的jsp代码提取出来放到一个包中去调用)

3.Jsp网页的构成

概念:Jsp页面就是带有jsp元素的常规web页面,包括静态内容(html)和动态内容。动态内容包括指令元素、脚本元素、动作元素注释等

(1)指令元素

介绍:(1)指令元素主要用于为转换阶段提供JSP页面的相关信息,指令不会产生任何输出到当前的输出流中,它指定了有关页面本身的信息,这些信息在请求期间一直保持不变。

(2)指令元素的作用范围为当前的页面,即只为当前的jsp服务,即只对当前的线程有效

语法:<%@ directive{attr=”value”}%>

分类:指令元素分为三种:page、include和taglib

(1)配置指令元素:page

介绍:该指令用于整个页面,page可以出现在jsp页面的任何位置,不管是什么位置都对整个页面有效,所以一般放到jsp文件的最开头,和html中 的meta作用差不多。

语法:<%@page import=”java.util.*”%>

注:可以使用多个page指令,每一个属性只能声明一次,除了import之外

常用的属性:

(1)Import=“导包列表”

例子:%@page import=”java.util.*,java.io.*”%

注:Import属性是唯一个一再同一个页面中出现多次的属性,并且在jsp中有直接可以使用的类,是自动隐藏的,为:

Java.lang.*

javax.servlet.jsp.*,

javax.servlet.http.*;

(2)language语言的设置

language=”scriptingLangeuage”

(3)contentType=”” 应答的类型

例子:<%@ page contentType=”text/html;charset=utf-8”%>

注:pageEncoding=””的编码方式优先于charset的编码方式,

如果没有指定contenetType类型,也没有设定pageEncoding="utf-8",用默认的字符集是ISO-8859-1。

(4)Session的设置

Session=”false”/”true”

(5)Buffer的设置-----设置的是缓冲区大小

buffer=”16kb”

缓冲区默认的大小是8kb

(6)autoFlush------设置当缓冲区占满了是否自动刷新

autoFlush =”true” | “false”

如果把缓冲区设为none & autoFlush=”fallse” 会抛常, 因为在缓冲区满了之后,没有刷新的话,就不能往里在存,所以当把缓冲区设为none 必须设置为autoFlush=”true”

(7)错误处理页

errorPage=“relativeURL”---

设置当前JSP页面中代码出现异常后,专门处理异常的页面。

<%@ page errorPage=”errorHandler.jsp”%>

<%@ page isErrorPage=”true”%>

(8)异常处理

isErrorPage=“true|false”

注:只有错误处理有一个内置对象 Exception

(9)Include指令元素

概念:include指令用于在JSP页面中包含一个文件,该文件可以是JSP页面、HTML网页、文本文件或一段Java代码,用它可以简化页面代码,提高代码的重用性。

实例:

Include指令用于在jsp页面中包含一个文件

<%@ include file="date.txt"%>

<%@ include file="MyHtml.html"%>

<%@ include file="/date.txt"%> 虚拟目录的根路径

注:只能包含一个静态的网页,不能包含动态的

静态的包含是把指定的文件包含在jsp中,是在转换之前

(10)Taglib指令---自定义标签

taglib指令允许页面使用用户定制的标签,语法如下:

<%@taglib (uri="具有唯一标识和前缀相关的标签描述符地址" prefix="前缀")%>

(2)脚本元素

概念:把java代码嵌入到jsp页面中,这些java代码将出现在由当前的jsp页面生成的servlet中,使JSP将静态内容与动态内容分离出来。

(1)表达式:<%=8*3%>

注:在不同的位置输出的位置也不一样,而且输出的结果位24

由web服务器计算值

转换的原理:在jsp中的html标签中的内容由 out.println()输出

在写表达式的时候,表达式必须有值,必须是有返回值的

(2)脚本:

格式:<%java的代码段%>

介绍:脚本是在<% %>里嵌入的Java代码,这里的Java代码和一般的Java代码没有什么区别,所以每一条语句同样要以分号“;”结束,这和表达式是不相同的。

例子:

(1)嵌入java代码段 浏览器在解析的时候<会当成标签的开始-->

<%

int i = 10;

int j = 20;

if (i < j) {

out.print("i&lt;j");

} else {

out.print("i&gt;j");

}

%>

(2)可以对java代码拆分,只要是完整的代码就行

<%

int i = 10;

int j = 20;

if (i < j) {

%>

i&lt;j

<%

} else {

%>

i&gt;j

<%

}

%>

(3)如果要输出i的值,必须要在java代码中输出 <%

int i = 10;

int j = 20;

if (i < j) {

out.print(i);

%>

&lt;j

<%

} else {

out.print(i);

%>

&gt;j

<%

}

%>

注:以上三种方法都一样

(3)声明变量和方法:

语法:<!%方法或变量%>

<%! int var; 声明的是变量加 ; 声明方法的时候不用加

public void fun(){

var = 10;

}

static{

System.out.println("静态的代码块");

}

%>

三 补充

1.Jsp界面访问时的流程:

第一次:

浏览器第一次访问---àweb服务器上的某一个jsp页面

Jsp页面-àservlet.java(会编译成servlet页面)--à编译.class----à载入内容,初始化init()

浏览器 <-------------------

再次访问:

浏览器---à访问jsp页面-----à开启线程---à直接返回浏览器

如果jsp有更新,还会是从第一步开始

2.显示当前系统时间

<%

java.util.Date date = new java.util.Date();

out.println(date.toString());

%>

3.九九乘法表的实现

<%

int firstCount = Integer.parseInt(request.getParameter("fisrtCount"));

int secondCount = Integer.parseInt(request.getParameter("secondCount"));

for(int i=1;i<firstCount+1;i++){

for(int j =1;j<=i;j++){

out.print(j+"*"+i+"="+i*j+"&nbsp;&nbsp;");

}

out.print("<br/>");

}

%>

注:获取的时候必须是在一个<%%>标签里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值