分享

JSP的指令、和脚本元素

 归叶米古 2016-11-30
    


一  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<j");       

           } else {

              out.print("i>j");

           }

    %>

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

           <%

           int i = 10;

           int j = 20;

           if (i < j) {

       %>

       i<j

       <%

           } else {

       %>

       i>j

       <%

           }

     %>

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

           int i = 10;

           int j = 20;

           if (i < j) {

           out.print(i);

       %>

       <j

       <%

           } else {

           out.print(i);

       %>

       >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+"  ");   

           }

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

        }

       %>

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

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多