JSP基本语法

JSP基本语法

1.1 JSP页面的基本结构

1、在传统的HTML页面文件中加入Java程序片和JSP标记就构成了一个JSP页面。

JSP页面有五种元素组成:

  • 普通的HTML标记和JavaScript标记
  • JSP标记,如指令标记、动作标记。
  • 变量和方法的声明。
  • Java程序片
  • Java表达式

2、转载于:https://www.cnblogs.com/friendan/archive/2012/05/13/2838181.html

一个JSP页面由两部分组成:

一部分是JSP页面的静态部分,如HTML,CSS标记等,用来完成数据显示和样式。

一部分是JSP页面的动态部分,如脚本程序,JSP标签等,用来完成数据处理。

  • JSP页面动态部分包括4部,分别为:

    • 脚本元素(ScriptingElement) //脚本元素用来嵌入Java代码;

    • 指令(Directive) //JSP指令用来从整体上控制Servlet的结构;

    • 动作(Action) //动作用来引入现有的组件或者控制JSP引擎的行为。

    • 注释

  • JSP页面构成元素详细信息如下图:

JSP基本语法_第1张图片

1.2 声明变量和定义方法

1、在“<%!” 和 “%>”标记符号之间声明变量和定义方法。其内容可放于JSP页面指令之后 HTML标签之前或放于HTML标签之间。

“<%!” “%>”标记符号之间声明的变量作为类的成员变量,这些变量占用的内存空间直到Tomcat服务器关闭才释放。

例:利用成员变量被所有用户共享这一性质,实现了一个简单的计数器。

<%@ page contentType="text/html" %>
<%@ page pageEncoding="utf-8" %>
<html>
	<body bgcolor=yellow>
		<%! int i=0;    //声明在<%! %>内的变量,全局变量(成员变量)
		%>
		<% i++;        //声明在<% %>内的变量,局部变量
		%>
		<p style="font-family:宋体;font-size:36">
		您是第<%=i %>个访问本站的用户。
		p>
	body>
html>

结果如下:

JSP基本语法_第2张图片

启动tomcat运行这个JSP文件时,会发现当我们不断刷新页面时count的值会不断增加而i的值始终不变,也就是说定义在<%! %>内的变量会累加,而定义在<% %>内的变量不会累加。

2、定义方法和类

可以在“<%!” 和 “%>”标记符号之间定义方法,可在Java程序片中调用该方法。

可以在“<%!” 和 “%>”标记符号之间定义类,可在Java程序片中使用该类创建对象。

例:在“<%!” 和 “%>”之间定义了 multi(int x,int y)和div(int x,int y)两个方法,同时定义类一个Circle类,在程序片中使用该类创建对象,计算了圆的面积。

<%@ page contentType= "text/html" %>
<%@ page pageEncoding= "utf-8" %>
< HTML>

<%! double multi(double x, double y){//定义方法 return x*y; } double div(double x, double y) {//定义方法 return x/y; } class Circle{//定义类 double t; double getArea(){ return 3.141526*r*r; } } %> <% double x=8.79; double y=20.8; out.print("调用multi方法计算"+x+"与"+y+"的积:<br>"); out.print(multi(x,y)); out.print("<br>调用div方法计算"+y+"除以"+x+"的商,<br>"); String s=String.format("小数点保留3位:%10.3f",div(y,x)); out.println(s); Circle circle=new Circle(); //创建 Circle对象 circle.r=3.6; out.print("<br>半径是"+circle.r+"的圆面积:"+circle.getArea()); %> p> body> HTML>

1.3 Java程序片

在JSP中,在"<% %>"之间书写的程序代码称为Java程序片,并且可以在其中插入HTML语句。

一个JSP页面中可以有多个Java程序片。

但是,在Java程序片中声明的变量在它们所在的JSP页面的所用程序片及表达式中都有效。

在程序片中声明的变量只在页面有效,是局部变量,它在不同的客户访问同一个页面的时,此变量是不能共享的。

但如果是在"<%! %>"之间声明的变量就可以在不同的客户之间共享,其有效范围是整个web应用,在服务器关闭时变量才会被释放.

"<%= %>"可以直接输出变量或表达式的值,变量或表达式的值将作为一个字符串在浏览器中输出。

下面是一个简单的计数器,用于统计当前已访问网站的人数:

<%! int counter=0;
        void counterFun(){
            counter++;
        }
     %>
    <%counterFun(); %>
    网站计数器<br>
    你是第<%=counter %>位访问者

反复刷新网页,可以看见counter在不断增加,即使同时打开多个页面counter依旧在依次整体增加

但是,我们将服务器关闭之后再打开,counter又回到了1

可见,计数器变量将在客户间共享,直至服务器关闭!

转载于:http://t.csdn.cn/GsMfa

补充:Java程序执行特点如下图所示:

JSP基本语法_第3张图片

1.4 Java表达式

可以在"<%=“和”%>"之间插入一个可求值得表达式。表达式的值有服务器负责计算,并将计算结果用字符串形式发送到用户端显示。其内容可放于JSP页面指令之后 HTML标签之前或放于HTML标签之间。

1.5 Java中的注释

1、HTML注释:在标记符号"<!–“和”-- >"之间加入注释内容。


2、JSP注释:在标记符号"<% --“和”-- %>"之间加入注释内容。

<% --注释内容-- %>

1.6 JSP指令标记

1.6.1 page指令标记

page指令用来定义整个JSP页面的一些属性和这些属性的值,属性用单引号或双引号括起来。

可使用多个page指令分别为每个属性指定值。

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

也可以用一个page指令指定多个属性的值。

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

属性:

1、contentType:contentType属性值确定JSP页面响应的MIME类型。属性值一般形式是:

"MIME 类型"

例:用户的浏览器启用HTML解析器来解析执行所收到的信息。

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

​ 用户的浏览器启用本地的MS-Word应用程序来解析执行所收到的信息。

<%@ page contenType="application/msword" %>

注:contentType默认属性值为"text/html" ,page指令只能为contentType指定一个值,不允许两次使用age指令为contentType指定不同属性的值。

2、其他属性可参考一下转载链接

http://t.csdn.cn/7TANW

http://t.csdn.cn/sle2Q

http://t.csdn.cn/zkang

1.6.2 include指令标记

include指令标记用于把JSP文件,HTML网文文件等文件静态嵌入当前JSP网页中,语法如下:

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

1.7 JSP动作标记

动作标记是一种特殊的标记,它影响JSP运行时的功能。

1.7.1include动作标记

动作标记是将JSP等文件 动态嵌入当前JSP网页中,语法如下:



   子标记

动态嵌入就是“先处理后包含”在运行阶段完成对文件嵌入,即在把JSP页面转译为JAVA文件时,并不合并两个页面。
注:书写动作标记时,“JSP”“:”"include"三者之间不要有空格。

1.7.2 param动作标记

1、jsp:param动作标记,是以”名字 - 值“对的形式为其他标记提供附加信息。


2、jsp:param动作标记的作用

指定某个参数的值,必须和jsp:forward,jsp:include,jsp:plugin 等一起协同使用。

1.7.3 forward动作标记

作用:从该指令处停止当前页面,转向执行page属性指定的JSP页面。
语法:



	param子标记

注:当forward动作标记不需要param子标记时,必须使用第一种情况。
说明:使用forward转向新的页面之后,浏览器的地址栏中显示的仍然是转向前的JSP页面的URL地址。
子标记语法:


使用request.getParameter(“名字”);获取子标记的属性值

你可能感兴趣的:(tomcat,java)