jsp第二课-jsp语法

来源:互联网 发布:ppt编辑数据不可用 编辑:程序博客网 时间:2024/06/05 06:56
1. JSP页面的基本结构
  JSP页面可由5种元素组合而成:① 普通的HTML标记符;② JSP标记,如指令标记、动作标记;③ 成员变量和方法;④ Java程序片;⑤ Java表达式 


处理过程:
  1.把JSP页面中普通的HTML标记符号,交给客户的浏览器执行显示。
  2.JSP标记、数据和方法声明、Java程序片由Tomcat服务器负责执行,将需要显示的结果发送给客户的浏览器。
  3. Java表达式由Tomcat服务器负责计算,将结果转化为字符串,交给客户的浏览器负责显示。 


2. JSP页面的成员变量和方法 
  1.在JSP页面的标记符“<%!”和“%>”之间声明的变量称作JSP页面的成员变量 .
  2. JSP页面在“<%!”和“%>”之间声明定义  方法 .


3. Java程序片 
在“<%”和“%>”之间插入Java程序片 
程序片中声明的变量称为JSP页面的局部变量 
多个客户请求一个JSP页面时 , Java程序片将被执行多次,分别在不同的线程中执行。 


4. Java表达式 
“<%=”和“%>”之间可以是一个Java表达式 .
表达式的值由服务器负责计算,并将计算结果用字符串形式发送到客户端显示。 .  




5.JSP中的注释 
 HTML注释格式:
      <!--    注释内容     --> 
 JSP注释格式:
      <%--  注释内容  --%> 


6. JSP 指令标记 
page 指令标记:
  page 指令用来定义整个JSP页面的一些属性和这些属性的值,属性值用单引号或双引号括起来。可以用一个page指令指定多个属性的值 ,也可以使用多个page指令分别为每个属性指定值 .
  page指令的作用对整个JSP页面有效,与其书写的位置无关,习惯把page指令写在JSP页面的最前面。例如:
  <%@ page   属性1=“属性1的值”  属性2= “属性2的值”  ……%> 

  <%@ page   属性1="属性1的值"  %>
  <%@ page   属性2="属性2的值"  %>
  … …
  <%@ page   属性n="属性n的值"  %> 


page 指令标记可以指定如下属性的值:
contentType、import、language、session、buffer、auotFlush 、isThreadSafe、pageEncoding 


contentType属性 
  contentType 属性值确定JSP页面响应的MIME(Multipurpose Internet Mail Extention)类型和JSP页面字符的编码。
   例如:
<%@ page contentType="text/html;charset=GB2312" %> 
   不允许两次使用page 指令给contentType属性指定不同的属性值.


import 属性
该属性的作用是为JSP页面引入Java运行环境提供的包中的类,这样就可以在JSP页面的程序片部分、变量及函数声明部分、表达式部分使用包中的类。
例如:
<%@ page  import="java.io.*", "java.util.Date" %>


language属性
定义JSP页面使用的脚本语言,该属性的值目前只能取"java"。
为language属性指定值的格式:
<%@ page  language="java" %>


session  属性
用于设置是否需要使用内置的session对象。session的属性值可以是true或false。session属性默认的属性值是true。


buffer 属性
内置输出流对象out负责将服务器的某些信息或运行结果发送到客户端显示,buffer属性用来指定out设置的缓冲区的大小或不使用缓冲区。例如:
<%@ page buffer= “24kb” %>buffer属性的默认值是8kb 。buffer属性可以取值" none",设置out不使用缓冲区。


autoFlush 属性
指定out的缓冲区被填满时,缓冲区是否自动刷新。


isThreadSafe 属性
用来设置JSP页面是否可多线程访问。 


include 指令标记 
如果需要在JSP页面内某处整体嵌入一个文件,就可以考虑使用include指令标记,其语法格式如下:
<%@ include file= "文件的URL " %> 
如果该文件和当前JSP页面在同一Web服务目录中,那么“文件的URL”就是文件的名字;如果该文件在JSP页面所在的Web服务目录的一个子目录中,比如fileDir子目录中,那么“文件的URL”就是“fileDir/文件的名字”。 
静态插入,就是当前JSP页面和插入的文件合并成一个新的JSP页面,然后JSP引擎再将这个新的JSP页面转译成Java文件。 




7.JSP 动作标记 
include 动作标记 
<jsp:include page= "文件的URL"/>

<jsp:include page= "文件的URL">
   param子标记
</jsp:include>
 include 动作标记是在JSP页面运行时才处理文件,被处理的文件在逻辑和语法上独立于当前JSP页面. 要与include 指令标记相区别。


param动作标记 
param标记以“名字—值”对的形式为其它标记提供附加信息.
param标记不能独立使用,需作为jsp:include、jsp:forward、jsp:plugin标记的子标记来使用。


param动作标记语法格式:
<jsp:param  name= “名字”  value= “指定给param的值”>
当该标记与jsp:include动作标记一起使用时,可以将param标记中的值传递到include动作标记要加载的文件中去,被加载的JSP文件可以使用Tomcat服务器提供的request内置对象获取include动作标记的param子标记中name属性所提供的值 


forward 动作标记
  该指令的作用是:从该指令处停止当前页面的继续执行,而转向执行page属性指定的JSP页面。 
<jsp:forward page="要转向的页面" />

<jsp:forward page="要转向的页面" >
   param子标记
</jsp:forward> 


useBean 动作标记 
   该标记用来创建并使用一个Javabean,是非常重要的一个动作标记,我们将在第4课详细讨论。Sun公司的倡导是:用HTML完成JSP页面的静态部分,用Javabean完成动态部分,实现真正意义上的静态和动态分离。 




例子1
example2_1.jsp
<%@ page contentType="text/html;charset=GB2312" %>  <!-- jsp指令标记 -->
<%@ page import="java.util.Date"  %>                <!-- jsp指令标记 -->
<%!   Date date;                                   // 数据声明
      int start,end,sum;
      public int continueSum(int start,int end)    // 方法声明 
      {  for(int i=start;i<=end;i++)  
            sum=sum+i; 
         return sum;
      }
  %>
<HTML><BODY bgcolor=cyan>                         <!—html标记 --> 
<FONT size=4><P>程序片创建Date对象:
   <% date=new Date();                            //java程序片 
      out.println("<BR>"+date);
      start=1;
      end=100;
      sum=continueSum(start,end);
   %>
<BR>从
   <%= start %>                                   <!-- Java表达式 --> 
   至
   <%= end %> 
   的连续和是
   <%= sum %> 
</FONT></BODY></HTML>
例子2
example2_2.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY BGCOLOR=cyan><FONT size=3>
 <%! int i=0;
 %>
 <% i++;
 %>
<P>您是第
  <%= i %>
 个访问本站的客户。
</BODY></HTML>  
例子3
example2_3.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan>
   <%! double x,y; 
       double multi(double x,double y)
       {  return x*y;
       }
       double div(double x,double y) 
       {  return x/y;
       }
   %>
   <%  x=127;
       y=18;
       out.println("调用multi方法计算"+x+"与"+y+"之积:");
       double a=multi(x,y);
       out.println(a);
       x=a;
       out.println("<BR>调用div方法计算"+x+"除以"+y+"的商:");
       double b=div(x,y);
       out.println(b); 
   %>
</BODY></HTML>
例子4
example2_4.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY>
   <%! int count=0;                //被客户共享的count
       synchronized void setCount()  //synchronized修饰的方法
       {   count++;
       }
   %>
   <%  setCount();
        out.println("您是第"+count+"个访问本站的客户");   
   %>
</BODY></HTML>

例子5
example2_5.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<HTML><BODY bgcolor=cyan>
 <P> 输出英文字母.
 <%  char start='A',end='M',c;
      int size=2;
 %>
 <BR> 用<%=size %>磅字号输出
 <Font size=<%=size%>>
 <%  for(c=start;c<=end;c++)
      {
 %>     <%= c %>,
 <%  }
 %>
 </Font>
 <%  size=4;
     start=(char)(end+1);
     end='Z';
 %>
<BR> 用<%=size %>磅字号输出
 <Font size=<%=size%>>
 <%  for(c=start;c<=end;c++)
      {
 %>     <%= c %>,
 <%  }
 %>
 </Font></BODY></HTML>


例子6
example2_6.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY  bgcolor=cyan><FONT size=3>
<%  double a=12.89;
   int x=12,y=10;
%>
计算表达式a+x*y-100/x+x%5的值: 
 <%= a+x*y-100/x+x%5 %>
<BR>计算表达式x>y&&a>0的值:
 <%=x>y&&a>0%>
<BR>计算表达式sin(x)+cos(y):
 <%=Math.sin(x)+Math.cos(y)%>
<BR> 求8的平方根:
 <%=Math.sqrt(8)%>
</FONT></BODY></HTML>
例子7
example2_7.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
 <!-- 以下字体的颜色为蓝色 -->
 <FONT size=3 color=blue>抽取字符串"C:\myfile\jspfile\example.jsp"中的"example.jsp" 
</FONT>
  <%-- 下面是成员变量的声明 --%>
 <%!  String s="C:\\myfile\\jspfile\\example.jsp";
 %>
 <%-- 下面是Java程序片 --%>
 <%  int index=s.lastIndexOf("\\"); 
     String str=s.substring(index+1);
 %>
 <BR><%-- 下面是Java表达式 --%> 
 <%= str %>
</BODY></HTML>  
例子8
first.jsp
<%@ page contentType="text/html;Charset=GB2312" %> 
<HTML><BODY BGCOLOR=cyan>                     
<FONT Size=3>                                   
<P>使用html处理所接受到的信息.
  <input type=text size=10>                                    
</FONT></BODY></HTML>
second.jsp
<%@ page contentType="application/vnd.ms-powerpoint" %> 
<HTML><BODY BGCOLOR=cyan>                     
<FONT Size=8>                                   
<P>启动powerpoint应用程序处理所接受到的信息.
<input type=text size=10>                                        
</FONT></BODY></HTML>
third.jsp
<%@ page contentType="image/x-xbitmap" %> 
<%@ page import="java.awt.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.awt.image.*" %>
<%@ page import="java.awt.geom.*" %>
<%@ page import="com.sun.image.codec.jpeg.*" %>
<%   int width=260, height=260;
    BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
    Graphics g = image.getGraphics();
    g.setColor(Color.white);
    g.fillRect(0, 0, width, height);
    Graphics2D g_2d=(Graphics2D)g; 
    Ellipse2D ellipse=new Ellipse2D. Double (40,50,100,40);
    g_2d.setColor(Color.blue);
    g_2d.draw(ellipse);
    Polygon polygon=new Polygon();
    polygon.addPoint(12,34);
    polygon.addPoint(51,134);
    polygon.addPoint(102,34);
    g_2d.drawPolygon(polygon);
    g_2d.dispose();
    OutputStream outClient= response.getOutputStream();   //获取指向客户端的输出流
    JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(outClient);
    encoder.encode(image);
%>
例子9
example2_9.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ page info="清华大学" %>
<%  String s=getServletInfo();
%>
<head>  <%= s %></head>
<HTML><BODY  bgcolor=cyan><FONT Size=4>
<BR><%=s %>出版社是中国著名出版社
<BR><%=s %>是全国著名的高等学府
</BODY><HTML>
例子10
firstExample2_10.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<%@ include file="myfile/ok.txt" %>
<HTMLl><BODY bgcolor=cyan>
<P>我是firstExample.jsp页面
</BODY></HTML>
secondExample2_10.jsp(效果如图2.9(b)所示)
<%@ page contentType="text/html;charset=GB2312" %>
<%@ include file="myfile/ok.txt" %>
<HTML><BODY bgcolor=yellow>
<P>我是secondExample.jsp页面
</BODY></HTML>
上述firstExample2_10.jsp等价于下面的JSP文件same.jsp:
same.jsp
<%@ page contentType="text/html;Charset=GB2312" %>
<A href="firstExample2_10.jsp">欢迎去firstExample2_10.jsp页面</A>
<BR>
<A href="secondExample2_10.jsp">欢迎去secondExample2_10.jsp页面</A>
<HTML><BODY bgcolor=cyan>
<P>我是firstExample.jsp页面
</BODY></HTML>
例子11
example2_11.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY  bgcolor=yellow >
<% double a=3,b=4,c=5;
%>
<BR>加载trangle.jsp计算三边为<%=a%>,<%=b%>,<%=c%>的三角形面积:
  <jsp:include page="myfile/trangle.jsp">
    <jsp:param name="sideA" value="<%=a%>"/>
    <jsp:param name="sideB" value="<%=b%>"/>
    <jsp:param name="sideC" value="<%=c%>"/>
  </jsp:include>
</BODY></HTML>
trangle.jsp
<%@ page contentType="text/html;charset=GB2312" %> 
<%! public String getArea(double a,double b,double c)
    { if(a+b>c&&a+c>b&&c+b>a) 
       {   double p=(a+b+c)/2.0;
           double area=Math.sqrt(p*(p-a)*(p-b)*(p-c)) ;
           return ""+area;
       }
     else 
       {  return(""+a+","+b+","+c+"不能构成一个三角形,无法计算面积");
       }
   }
%>
<%   String sideA=request.getParameter("sideA");
      String sideB=request.getParameter("sideB");
      String sideC=request.getParameter("sideC");
      double a=Double.parseDouble(sideA);
      double b=Double.parseDouble(sideB);
      double c=Double.parseDouble(sideC);
%>
<Font color=blue size=4>
<P>我是被加载的文件,负责计算三角形的面积<BR>
   给我传递的三边是:<%=sideA%>,<%=sideB%>,<%=sideC%>
<BR>三角形的面积:<%= getArea(a,b,c)%>
</Font>
例子12
example2_12.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
<%  double i=Math.random();
   if(i>0.5)
   {
%>  <jsp:forward page="frontSide.jsp" >
         <jsp:param name="number" value="<%= i %>" />
    </jsp:forward> 
<%  }
  else
   {
%>  <jsp:forward page="reverseSide.jsp" >
         <jsp:param name="number" value="<%= i %>" />
     </jsp:forward> 
<% }
%>
</BODY></HTML>
frontSide.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=3>
<% String s=request.getParameter("number");
   out.println("<BR>传递过来的值是"+s);
%>
<BR><img src=image/a.JPG width=120 height=120 >钱币图像</img>
</FONT></BODY></HTML>
reverseSide.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY bgcolor=cyan><Font size=3>
<% String s=request.getParameter("number");
   out.println("传递过来的值是"+s);
%>
<BR> <img src=image/b.JPG width=120 height=120 >钱币图像</img>
</FONT></BODY></HTML>
例子13
example2_13.jsp:
<%@ page contentType="text/html;charset=GB2312" %>
<HTML><BODY>
 <jsp:plugin type="applet" code="B.class" jreversion="1.2" width="200" height="260">
    <jsp:fallback>
       Plugin tag OBJECT or EMBED not supported by browser. 
    </jsp:fallback>
</jsp:plugin>
</BODY></HTML>



原创粉丝点击