Jsp概述

来源:互联网 发布:mac搜索不到文件 编辑:程序博客网 时间:2024/05/22 22:47
 

Jsp概述

一、Servlet示例

二、纯粹基于servlet的方法存在一些弊端

1、开发者和维护应用程序的成员必须对Java编程知识面有全面的了解,因为处理代码和处理html元素混合在一起。

2、如果要改变应用的外观,或者增加对新客户类型的支持,则需要对servlet代码进行更新和重编译。

3、在设计应用界面时,很难充分利用Web页面开发工具。如果这种工具用于开发Web页面布局,所生成的html就必须手工地嵌入到Servlet代码中,这个过程相当耗费时间很容易出错。

Jsp(Java Server Pages)是由Sun Microsystems公司倡导开发的以Java语言作为脚本语言,建立在Servlet规范提供的功能之上的动态网页技术,用来在网页上显示动态内空。由Java程序片断或JSP标记等构成JSP网页,页面后缀名为“.jsp”。

JSP技术的应用一次编写,就可以在任何具有符合Java语法结构的环境上运行。Sun通过开放源代码,使许多公司一起参与建立技术标准,JSP应用程序接口(API)毫无疑问已经取得成功,并将随Java组织不断开放扩大而继续完善。

 

Jsp的成功取决于它自身的优点,主要包括;

1、  简便性和有效性

2、  程序的独立性

3、  程序的兼容性

4、  程序的可重用性

 

Jsp页面

 

<body>

       Holle Jsp<br>

<%

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

Out.println(date.toString());

%>

</body>

 

三、JSP页面的构成

1、JSP页面就是带有JSP元素常规的Web页面,它由静态内容(批HTML元素)和动态内容(指JSP元素,包括指令元素、脚本元素、动作元素、注释等内容)。

2、JSP动态内容——JSP元素,包括指令元素、注释、动作元素、脚本元素

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

 

JSP实质上就是sevrlet

浏览器——————>web服务器上某个jsp页面

                  Jsp页面——转换成——>servlet.java——>编译.class——>载入内容,实例化对象为——>init()初始化

                  开启线程——>service()完成相应的处理

浏览器<——————

浏览器——————>jsp页面

                   service()

 

(2)所有的JSP指令元素的作用范围为当前的JSP页面,即指令元素只影响当前的这个JSP页面,对其他JSP页面没有影响。

(3)指令的语法如下:<%@ directive{attr=”value”}*%>  注:在<和%之间,%和@之间不能有空格,%和>之间也不能有空格

(4)指令元素有三种:page、include和taglib

       1>page指令

              <%@page contentType=”” pageEncoding=””import=”” language=””%>

注意:可以使用多个page指令,但对于每个页只能声明给定属性一次,除了import属性外。属性名称是大小写敏感。

              I      该指令用于整个页面,定义与页面相关的属性,它是JSP页面和容器的通信员。

              II  page指令可以出现在JSP页面的任何位置,但无论出现在何处,其作用范围都是这个页面,因此通常将之置于也的开头。

III 语法:<%@ page 属性名1="值1" 属性名2="值2" ... %>

 

——page的属性共有13个,最常用的属性有:

Import=“导包列表”:指示当前JSP文件引入需要使用的类或接口。多个类、包名之间用”,”隔开。

注意:import属性是唯一一个可以在同一个页面中出现多次的属性。

注意:java.lang.*  javax.servlet.*  javax.servlet.jsp.*  javax.servlet.http.*都已经被隐含的引入,包中的类、接口等不需要引入就可以使用。

Language=”scriptingLangeuage”:指定当前的JSP文件中的程序代码是使用何种编程语言编写的,目前属性的值只能是java.

contentType=“ctinfo”:设置当前JSP页面的向客户浏览器输出内容的MIME(MIME类型是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开)类型和字符编码集。客户端的浏览器会根据你在contentType中指定的MIME类型和字符集代码来显示Servlet输出的内容。   <%@page contentType=”text/html;charset=utf-8”%>

pageEncoding=”peingo”: 设置当前JSP页面使用的字符编码。如果设置了这个属性,则JSP页面的字符编码就是它指定的字符集,如果没有就使用contentType属性的值,如果都没有,页面默认的是ISO-8859-1。

session=”true|false”:指示当前JSP文件中session隐含对象是否有效,如果为true表示session对象有效,可以使用,否则session对象无效,不能使用

buffer=“none|8kb|sizekb”:指定JSP文件中out对象使用的缓冲区大小。

JSP中定义了9个

Out输出流对象

exception

request

autoFlush=“true|false”:设置当输出缓冲区已经满了是否自动flush。需注意,如果buffer设定为none,则该属性就不能设成false,否则JSP文件运行时会抛出异常。

errorPage=“relativeURL”:设置当前JSP页面中代码出现异常后,专门处理异常的页面。

isErrorPage=“true|false”:设置当前JSP页面是否为专门处理异常的页面,如果为true,则该页面可以通过exception内置对象,处理其他JSP页面转过来的异常。

 

——include指令

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

语法:<%@ include file="相对于当前文件的url" %>

url为被包含文件的相对路径,如果以“/”开始,相对于这个应该的根目录,如果没有以“/”开头,则相对当前的JSP页面。

注意:在包含的文件中,最好不要使用<html></html><body></body>等标签

<%@include>指令元素  静态的包含

<jsp:include> 动作元素  动态的包含

taglib指令(自定义标签)

 

 

3、脚本元素

表达式:<%=表达式%>

脚本:<%java的代码段%>

<%脚本代码可能不完整%>只要在整个jsp文件中脚本代码是完整的文件就行

声明:<%! Int var;%>  声明的变量加;号

      <%! Public void fun(){

      }

      %>  嵌入的是java代码块不用加;号

 

Html标签——out.write();

 

 

<%

       Class.forName();

       Connetion con=;

       Statement stat=;

%>

 

使用JSP脚本元素可以将Java代码嵌入到JSP页面中,这些Java代码将出现在由当前JSP页面生成的Servlet中,使JSP将静态内容与动态内容分离出来。

表达式

表达式标签在JSP请求处理阶段进行运算,所得的结果转换成字符串,与静态标签数据组合在一起。表达式在页面的位置,就是该表达式计算结果显示的位置。

语法:<%= expression %>

例如,<%=9+9 %>

•          脚本

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

–        语法:<% code %>

•          声明

–        声明用来定义当前JSP页面中使用的变量和方法。

–        该标签中定义的变量为JSP页面全局变量,JSP转化成Servlet后,定义的变量转化为类变量,方法转化为Servlet中的方法。

–        语法:<%! code %>

例如,<%! String str=“hello” ;%>

<%! public static final String DEFAULT_NAME=“World”;%>

<%! public String getName(HttpServletRequest request){

                     return request.getParameter(“name”);

              }

%>

 

注意:变量的声明必须以;结尾,该声明仅在一个页面中有效,如果想每个页面都用到一些声明,最好把它们写成一个单独的文件,然后用<%@include%>或<jsp:include>元素包含进来。

 

javaBean

5、  动作元素

<jsp:useBean></jsp:useBean>

<jsp:include>

<jsp:forward>

... 动作是特殊的标记,通过一个动作标记可以实现多行Java代码实现的效果。可以动态插入文件、重用JavaBean组件、导向另一个页面等。

动作元素和指令元素不同,动作元素是在客户端请求时动态执行的,每次有客户端请求时可能都会被执行一次,而指令元素是在编译时被编译执行,它只会被编译一次。

<jsp:useBean>

useBean动作用于创建引用,并将现有的Bean组件嵌入JSP。

•          什么是JavaBean?

•          从形式上看,JavaBean与一般的普通Java类没有特别大的区别,但是需要满足两个条件:

–        首先类是公有的,有一个默认的无参的构造方法;

–        其次在类中可以定义若干个私有的属性,但是需要通过公有的getter/setter方法对这些属性进行赋值和取值,并且getter/setter方法不能重载。

•          满足上述两个条件的类就可以称为JavaBean类。JavaBean类中除了getter/setter方法外也可以包括其他一些方法。

注意:

•          在编写上,JavaBean的类必须使用package语句;

•          public、无参构造方法;

•          getter/setter方法必须是public的,分别以set及get开头,方法命名上遵循Java的命名规范。

•          当属性类型为boolean类型的时候,getter方法的get可以用is代替。

例如,<jsp:useBean id=“book” class=“com.web.beans.Book” scope=“page” />   

在执行时,Web容器会检查这个JavaBean的对象是否已经存在,如果存在就使用存在的JavaBean对象,反之生成一个新的JavaBean对象。相对于:

<% com.web.beans.Book book=null;

      if(pageContext.getAttribute(“book”)==null){

             book=new com.web.beans.Book();

             pageContext.setAttribute(“book”,book);

      }else{

            book=(Book)pageContext.getAttribute(“book”);

      }

 

...

作业 :

写两个jsp页面

  写一个起始数,终止数  实现九九乘法表