jsp第二章

系列文章目录

JSP实用教程——第二章JSP语法

文章目录

系列文章目录

前言

2.1 JSP页面的基本结构

2.2 声明变量和定义方法

2.3 Java程序片

2.4 Java表达式

2.5 JSP中的注释

2.6 JSP指令标记

2.6.1page指令标记

2.6.2include指令标记

2.7 动作标记

2.7.1 include动作标记

2.7.2 param动作标记

2.7.3 forward 动作标记

总结

前言

JSP语法

2.1 JSP页面的基本结构

一个JSP页面可由5种元素组合而成:

(1) 普通的HTML标记和JavaScript标记。
(2) JSP标记,如指令标记、动作标记。
(3) 变量和方法的声明。
(4)Java 程序片。
(5) Java 表达式。

JSP运行原理:

一个JSP页面被第一次请求执行时,Tomcat服务器首先将JSP页面文件转译成一个Java文件,再将这个Java文件编译生成字节码文件,然后通过执行字节码文件响应用户的请求。

2.2 声明变量和定义方法

在<%!和%>标记符号之间声明变量,定义方法以及定义类。

1.声明变量:

<%! double x=8.79; %> 

2.定义方法:

<%! double multi(double x,double y){ //定义方法 return x*y; } double div(double x,double y) { //定义方法 return x/y; } %> 

2.3 Java程序片

1.在<%和%>之间插入Java 程序片。
2.一个JSP页面可以有许多程序片,这些程序片将被Tomcat服务器按顺序执行。
3.在程序片中声明的变量称作JSP页面的局部变量。局部变量的有效范围与其声明的位置有关,即局部变量在JSP页面后继的所有程序片以及表达式部分内都有效。

<% setCount(); out.println("您是第"+count+"个访问本站的客户"); %> 

2.4 Java表达式

可以在<%=和%>之间插入一个可求值的表达式(注意:不可插入语句,
<%=是一个完整的符号,“<%”和“=”之间不要有空格)。

<p style="font-family:宋体;font-size:36"> 计算表达式x+y+x%y,即<%= x %>+<%= y %>+<%= x %>%<%= y %>的值: <%= x+y+x%y %> <br>计算表达式x>y即<%= x %> > <%= y %>的值: <%= x>y %> <br>计算表达式sin(<%= Math.PI %>/2)的值: <%= Math.sin(Math.PI/2) %> <br> 

2.5 JSP中的注释


例如:

<%@ page contentType = "text/html" %> <%@ page pageEncoding = "utf-8" %> <HTML><body> <%-- 下面是Java程序片 --%> <% String str = "C:\\jspfile\\example2_7.jsp"; int index = str.lastIndexOf("\\"); str = str.substring(index+1); %> <!-- 以下字体的颜色为蓝色 --> <p style="font-family:黑体;font-size:20;color:blue"> 抽取字符串<%= str %>中的JSP文件名字. <!-- 以下字体的颜色为红色 --> <font size="6" color="red"><br> <%-- 下面是Java表达式 --%> <%= str %> </font> </p > </body></HTML> 

2.6 JSP指令标记

2.6.1page指令标记

page 指令用来定义整个JSP页面的一些属性和这些属性的值。
<%@ page 属性1=“属性1的值” %>
<%@ page 属性2=“属性2的值” %>
… …
<%@ page 属性n=“属性n的值” %>
也可以用一个page指令指定多个属性的值,如:
<%@ page 属性1=“属性1的值” 属性2= “属性2的值” ……%>

1. contentType属性
JSP页面设置响应的MIME(Multipurpose Internet Mail Extention)类型,即设置contentType 属性的值。
例如:

<%@ page contentType="text/html " %>

浏览器启用HTML解析器来解析执行所接收到的信息。
2.pageEncoding 属性
只能为pageEncoding指定一个值,不允许两次使用page指令给pageEncoding属性指定不同的或相同的属性值。
例如:

<%@ page pageEncoding = “utf-8” %>

那么保存JSP页面应当将“编码”选择为“utf-8”

3.language属性
language属性定义JSP页面使用的脚本语言,该属性的值目前只能取"java"。
为language属性指定值的格式是:

<%@ page language=“java” %>

4.import 属性
该属性的作用是为JSP页面引入Java运行环境提供的包中的类。
例如:

<%@ page import=“java.util." %>
<%@ page import="java.io.” %>

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

6.buffer属性
内置输出流对象out负责将服务器的某些信息或运行结果发送到用户端显示。buffer属性用来指定out设置的缓冲区的大小或不使用缓冲区。
例如:

<%@ page buffer= “24kb” %>

buffer属性的默认值是8kb 。
7.autoFlush属性
autoFlush可以取值true或false。autoFlush属性的默认值是true。
8.isThreadSafe 属性
isThreadSafe的属性值可取true或false。 isThreadSafe属性值为true时,CPU的使用权在各个线程间快速切换,设置成false时,该JSP页面同一时刻只能响应一个用户的请求,其他用户须排队等待。
9.info 属性
info属性的属性值是一个字符串,其目的是为JSP页面准备一个常用但可能要经常修改的字符串。
例如:

<%@ page info="清华大学图像tsinghua.jpg" %> <% String s=getServletInfo(); String str[]=s.split("图像"); %> <HTML><center> <body background="image/<%=str[1]%>"> <p style="font-family:宋体;font-size:36;color:red"> <br><%=str[0]%>出版社是中国著名出版社 <br><%=str[0] %>是全国著名的高等学府 </p ></body></center><HTML> 

运行结果:


2.6.2include指令标记

如果需要在JSP页面内某处整体嵌入一个文件,就可以考虑使用include指令标记,其语法格式如下:

<%@ include file= "文件的URL " %>

■嵌入的文件的编码必须和当前JSP页面一致,比如二者都是utf-8编码。
■ 嵌入文件后,必须保证新合并成的JSP页面符合JSP语法规则,即能够成为一个JSP页面文件。
■include指令可以实现代码的复用。比如,每个JSP页面上都可能都需要一个导航条,以便用户在各个JSP页面之间方便地切换,那么每个JSP页面都可以使用include指令在页面的适当位置整体嵌入一个相同的文件。
■允许被嵌入的文件使用page指令指定contentType属性的值,但指定的值要与嵌入该文件的JSP页面中的page指令指定的contentType属性的值相同。

2.7 动作标记

2.7.1 include动作标记

include 动作标记语法格式为:

<jsp:include page= “文件的URL” />

或者

<jsp:include page= “文件的URL” >
param子标记
</jsp:include>

include动作标记告诉JSP页面动态包含一个文件,即JSP页面运行时才将文件加入。与静态嵌入文件的include指令标记不同,当Tomcat服务器根据JSP页面产生成Java文件时,不把JSP页面中动作指令include所包含的文件与原JSP页面合并为一个新的JSP页面,而是告诉Java解释器,这个文件在Java文件的字节码文件被加载执行时才包含进来。

2.7.2 param动作标记

param标记以“名字—值”对的形式为其他标记提供附加信息。

<jsp:param name= “参数” value= " 参数的值" />

当该标记与 jsp : include 动作标记一起使用时,可以将 param 标记中参数的值传递到 include 动作标记要加载的文件中去,被加载的 JSP 文件可以使用 Tomcat 服务器提供的 request 内置对象获取 include 动作标记的 param 子标记中 name 给出的参数的值。因此 include 动作标记通过使用 param 子标记来处理加载的文件,比 include 指令标记更为灵活。
例如:

<%@ page contentType="text/html" %> <%@ page pageEncoding = "utf-8" %> <HTML><body bgcolor=cyan > <% double a=6.12,b=7.08,c=9.22; %> <p style="font-family:宋体;font-size:36"> <br>加载triangle.jsp计算三边为<%=a%>,<%=b%>,<%=c%>的三角形面积. <jsp:include page="myfile/triangle.jsp"> <jsp:param name="sideA" value="<%=a%>"/> <jsp:param name="sideB" value="<%=b%>"/> <jsp:param name="sideC" value="<%=c%>"/> </jsp:include> </p ></body></HTML> 

<%@ page pageEncoding = "utf-8" %> <%! 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)) ; String result = String.format("%.2f",area);//保留两位小数 return result; } 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); %> <p style="font-family:黑体;font-size:36;color:blue"> <br><b>我是被加载的文件,负责计算三角形的面积<br> 给我传递的三边是:<%=sideA%>,<%=sideB%>,<%=sideC%></b> <br><b><i>三角形的面积(保留2位小数):<%= getArea(a,b,c)%></i></b></i> </p 

运行结果:


2.7.3 forward 动作标记

指令的作用是:从该指令处停止当前页面的执行,而转向执行page属性指定的JSP页面。需要注意的是,当前页面使用forward动作标记转向后,尽管用户看到了转向后的页面的效果,但浏览器地址栏中显示的仍然是转向前的JSP页面的URL地址,因此,如果刷新浏览器的显示,将再次执行当前浏览器地址栏中显示的JSP页面。
格式为:

<jsp:forward page=“要转向的页面” />

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

总结

1.JSP页面中的成员变量是被所有用户共享的变量。Java程序片可以操作成员变量,任何一个用户对JSP页面成员变量操作的结果,都会影响到其他用户。
2.如果多个用户访问一个JSP页面,那么该页面中的Java程序片就会被执行多次,分别运行在不同的线程中,即运行在不同的时间片内。运行在不同线程中的Java程序片的局部变量互不干扰,即一个用户改变Java程序片中的局部变量的值不会影响其他用户的Java程序片中的局部变量。
3.page指令用来定义整个JSP页面的一些属性和这些属性的值。比较常用的两个属性是contentType和import。 page指令只能为contentType指定一个值,但可以为import属性指定多个值。

javaservlet开发语言

发布于2023-04-24著作权归作者所有

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值