JSP基本语法

1、JSP页面概述

JSP(Java Server Page,Java服务器页面)。JSP页面是指扩展名为.jsp的文件。在一个JSP页面中,可以包括指令标识、HTML代码、JavaScript代码、嵌入的Java代码、注释和JSP动作标识等内容。但这些内容并不是一个JSP页面所必需的。

示例:编写一个JSP页面,名称为index.jsp,在该页面中显示当前时间。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Date" %>
<%@ page import="java.text.SimpleDateFormat" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>一个简单的JSP页面——显示系统时间</title>
</head>
<body>
<%
	Date date = new Date();  //获取日期对象
	SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  //设置日期时间格式
	String today = df.format(date);  //获取当前系统时间
%>

您好,欢迎访问 pan_junbiao的博客 <br/>
博客地址:https://blog.csdn.net/pan_junbiao <br/>
当前时间:<%= today %>  <!-- 输出系统时间 -->
</body>
</html>

执行结果:


处理页面中文乱码问题:

把JSP页面的编码设置为UTF-8。

Eclipse中设置JSP的默认编码:

 

2、指令标识

指令标识主要用于设定整个JSP页面范围内都有效的相关信息,它是被服务器解释并执行的,不会产生任何内容输出到页面中。也就是说,指令标识对于客户端浏览器是不可见的。

JSP指令标识的语法格式如下:

<%@ 指令名 属性1=“属性值1”  属性2=“属性值2” %>

参数说明:

指令名:用于指定指令名称。在JSP中包括:Page、include、taglib这3条指令。

属性:用于指定属性名称,不同的指令包含不同的属性。在一个指令中可以设置多个属性,各属性之间用逗号或空格分隔。

属性值:用于指定属性值。

JSP中的三种指令标签:

指令描述
<%@ page ... %>用于定义整个JSP页面的相关属性。
<%@ include ... %>通过该指令可以在一个JSP页面中包含另一个JSP页面。
<%@ taglib ... %>通过该命令声明该页面中所使用的标签库,同时引用标签库,并指定标签的前缀。

2.1 page指令

page指令是JSP页面最常用的指令,用于定义整个JSP页面的相关属性,这些属性在JSP被服务器解析成Servlet时会转换为相应的Java程序代码。page指令的语法格式如下:

<%@ page attr1="value1" attr2="value2" ……%>

例如,在应用Eclipse创建JSP文件时,在文件的最顶端会默认添加一条指令,用于指定JSP所使用的语言、编码方式等。这条指令的具体代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

下面对一些常用的page属性进行介绍。

属性描述
language该属性用于设置JSP页面使用的语言,目前只支持Java语言,以后可能会支持其他语言,如C++、C#等。该属性的默认值为Java。
extends该属性用于设置JSP页面继承的Java类,所有JSP页面在执行之前都会被服务器解析成Servlet,而Servlet是由Java类定义的,所以JSP和Servlet都可以继承指定的父类。该属性并不常用,而且有可能影响服务器的性能优化。
import该属性用于设置JSP导入的类包。JSP页面可以嵌入Java代码片段,这些Java代码在调用API时需要导入相应的类包。
pageEncoding该属性用于定义JSP页面的编码格式,也就是指定文件编码。JSP页面中的所有代码都使用该属性指定的字符集,如果该属性值设置为 IOS-8859-1,那么这个JSP页面就不支持中文字符。想让页面支持中文,需要将页面的编码格式设置成UTF-8或者GBK的形式。
contentType该属性用于设置JSP页面的MIME类型和字符编码,浏览器会据此显示页面内容。
session该属性指定JSP页面是否使用HTTP的session会话对象,其属性值是boolean类型。
buffer该属性用于设置JSP的out输出对象使用的缓冲区大小,默认大小为8KB,且单位只能使用KB。建议程序开发人员使用8的倍数16、32、64、128等,例如:<%@ page buffer="128KB" %>
autoFlush该属性用于设置JSP页面缓存满时,是否自动刷新缓存。默认值为true,如果设置为false,则缓存被填满时将抛出异常。
isErrorPage通过该属性可以将当前JSP页面设置成错误处理页面,以处理另一个JSP页面的错误,也就是异常处理。这意味着当前JSP页面业务的改变。
errorPage该属性用于指定处理当前JSP页面异常错误的另一个JSP页面,指定的JSP错误处理页面必须设置isErrorPage属性为true。errorPage属性的属性值是一个url字符串。如果设置该属性,那么在web.xml文件中定义的任何错误页面都将被忽略,而优先使用该属性定义的错误处理页面。
info定义JSP页面的描述信息
isThreadSafe指定对JSP页面的访问是否为线程安全
isELIgnored指定是否执行EL表达式
isScriptingEnabled确定脚本元素能否被使用

2.2 include指令

通过include指令可以在一个JSP页面中包含另外一个JSP页面。不过该指令是静态包含,也就是说被包含文件中所有内容会被原样包含到该JSP页面中,即使被包含文件中有JSP代码,在包含时也不会被编译执行。使用include指令,最终将生成一个文件,所以在被包含和包含的文件中,不能有相同名称的变量。

include指令的语法格式如下:

<%@ include file="path" %>

该指令只有一个file属性,用于指定要包含文件的路径。该路径可以是相对路径,也可以是绝对路径,但不可以通过<%= %>表达式所代表的文件。

技巧:在应用include指令进行文件包含时,为了使整个页面的层次结构不发生冲突,建议在被包含页面中将<html>、<body>等标记删除。因为在包含该页面的文件中已经指定这些标记。

2.3 taglib指令

在JSP文件中,可以通过taglib指令标识声明该页面中所使用的标签库,同时引用标签库,并指定标签的前缀。在页面中,引用标签库后,就可以通过前缀来引用标签库中的标签。taglib指令的语法格式如下:

<%@ taglib prefix="tagPrefix" uri="tagURI" %>

参数说明:

prefix:用于指定标签的前缀。该前缀不能命名为jsp、jspx、java、javax、sun、servlet和sunw。

uri:用于指定标签库文件的存放位置。

示例:在页面中引用JSTL中的核心标签库。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 

3、脚本标识

在JSP页面中,脚本标识使用得最为频繁。因为它们能够方便、灵活地生成页面中的动态内容,特别是Scriptlet脚本程序。JSP中的脚本标识包括3部分,即JSP表达式(Expression)、声明标识(Declaration)和脚本程序(Scriptlet)。通过这些标识,在JSP页面中可以像编写Java程序一样来声明变量、定义函数或进行各种表达式的运算。

3.1 JSP表达式

JSP表达式用于向页面中输出信息,其语法格式如下:

<%= 表达式%>

表达式:可以是任何Java语言的完整表达式。该表达式的最终运算结果将被转换为字符串。

<% String manager="pan_junbiao的博客"; %>  <!-- 定义保存管理员名称变量 -->
管理员:<%= manager %><br/>                <!-- 输出结果为:管理员:pan_junbiao的博客 -->
<%= "管理员:" + manager %><br/>           <!-- 输出结果为:管理员:pan_junbiao的博客 -->
<%= 5+6 %><br/>                           <!-- 输出结果为:11 -->
<% String url="https://blog.csdn.net/pan_junbiao"; %>   <!-- 定义保存文件名称变量 -->
<a target="_blank" href="<%= url %>">pan_junbiao的博客连接</a>

执行结果:

3.2 声明标识

声明标识用于在JSP页面中定义全局的变量或方法。通过声明标识定义的变量和方法可以被整个JSP页面访问,所以通常使用该标识定义整个JSP页面都需要引用的变量或方法。声明标识的语法格式如下:

<%! 声明变量或方法的代码 %>

示例:通过声明标识声明一个全局变量和全局方法。

<%!
	int number=0;           //声明全局变量
	int count(){            //声明全局方法
		number++;       //累计number
		return number;  //返回number的值
	}
%>

刷新次数:<%= count() %>

通过上面的代码声明全局变量和全局方法后,在后面如果通过<%= count() %>调用全局方法,则每次刷新页面,都会输出前一次值+1的值。

3.3 代码片段

所谓代码片段就是在JSP页面中嵌入的Java代码或是脚本代码。代码片段将在页面请求的处理期间被执行,通过Java代码可以定义变量或是流程控制语句等;而通过脚本代码可以应用JSP的内置对象在页面输出内容、处理请求和响应、访问session会话等。代码片段的语法格式如下:

 <% Java代码或是脚本代码 %>

说明:代码片段与声明标识的区别是:通过声明标识创建的变量和方法在当前JSP页面中有效,它的生命周期是从创建开始到服务器关闭结束;代码片段创建的变量或方法,也是在当前JSP页面中有效,但它的生命周期是页面关闭后就会被销毁。

示例:通过代码片段和JSP表达式在JSP页面中输出九九乘法表。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>九九乘法表</title>
</head>
<body>
<%
	String str = ""; 				  //声明保存九九乘法表的字符串变量
	//连接生成九九乘法表的字符串
	for (int i = 1; i <= 9; i++) {			  // 外循环
		for (int j = 1; j <= i; j++) { 		  // 内循环
			str += j + "*" + i + "=" + j * i;
			str += "&nbsp;"; 		  //加入空格符
		}
		str += "<br>"; 				  // 加入换行符
	}
%>
<table width="440" height="85" border="1" cellpadding="0" cellspacing="0" style="font:9pt;" 
bordercolordark="#666666" bordercolorlight="#FFFFFF" bordercolor="#FFFFFF">
  <tr>
    <td height="30" align="center">九九乘法表</td>
  </tr>
  <tr>
    <td style="padding:3pt">
		<%=str%>					<!-- 输出九九乘法表 -->
	</td>
  </tr>
</table>
</body>

</html>

执行结果:

 

4、动作标识

 与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用。JSP动作元素是用XML语法写成的。利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。

动作元素只有一种语法,它符合XML标准:

<jsp:action_name attribute="value" />

动作元素基本上都是预定义的函数,JSP规范定义了一系列的标准动作,它用JSP作为前缀,可用的标准动作元素如下:

语法描述
jsp:include在页面被请求的时候引入一个文件。
jsp:useBean用来装载一个将在JSP页面中使用的JavaBean对象。
jsp:setProperty设置JavaBean的属性。
jsp:getProperty获取JavaBean的属性。
jsp:forward把请求转到一个新的页面。
jsp:plugin根据浏览器类型为Java插件生成OBJECT或EMBED标记。
jsp:element定义动态XML元素。
jsp:attribute设置动态定义的XML元素属性。
jsp:body设置动态定义的XML元素内容。
jsp:text在JSP页面和文档中使用写入文本的模板。
jsp:param可以作为其他标识的子标识,用于为其他标识传递参数。

4.1 包含文件标识<jsp:include>

JSP的动作标识<jsp:include>用于向当前页面中包含其他的文件。被包含的文件可以是动态文件,也可以是静态文件。

<jsp:include>动作标识的语法格式如下:

<jsp:include page="url" flush="false | true" />

或者:

<jsp:include page="url" flush="false | true">
	子动作标识<jsp:param>
</jsp:include>

参数说明:

page:用于指定被包含文件的路径。

flush:可选项,用于设置是否刷新缓冲区。默认值为false,如果设置为true,在当前页面输出使用了缓冲区的情况下,先刷新缓冲区,然后在执行包含工作。

子动作标识<jsp:param>:用于向被包含的动态页面中传递参数。

说明:<jsp:include>标识对包含的动态文件和静态文件的处理方式是不同的。如果被包含的是静态文件,则页面执行后,在使用了该标识的位置将会输出这个文件的内容。如果<jsp:include>标识包含的是一个动态文件,那么JSP编译器将编译并执行这个文件。<jsp:include>标识会识别出文件的类型,而不是通过文件的名称来判断该文件是静态的还是动态的。

在应用<jsp:include>标识进行文件包含时,为了使整个页面的层次结构不发生冲突,建议在被包含页面中将<html>、<body>等标记删除。

在前面介绍了include指令,该指令与<jsp:include>动作标识相同,都可以用来包含文件。但它们之间是存在很大差别的。

(1)include指令通过file属性指定被包含的文件,并且file属性不支持任何表达式;<jsp:include>动作标识通过page属性指定被包含的文件,而且page属性支持JSP表达式。

(2)使用include指令时,被包含的文件内容会原封不动地插入到包含页中,然后JSP编译器再将合成后的文件最终编译成一个Java文件;使用<jsp:include>动作标识包含文件时,当该标识被执行时,程序会将请求转发(注意是转发,而不是请求重定向)到被包含的页面,并将执行结果输出到浏览器中,然后返回包含页,继续执行后面的代码。因为服务器执行的多个文件,所以JSP编译器会分别对这些文件进行编译。

(3)在应用 include 指令包含文件时,由于被包含的文件最终会生成一个文件,所以在被包含文件、包含文件中不能有重名的变量或方法;而在应用<jsp:include>动作标识包含文件时,由于每个文件是单独编译的,所以在被包含文件和包含文件中重名的变量和方法是不相冲突的。

补充:在JSTL标签库中,还有一个<c:import>导入标签。<c:import>标签可以导入站内或其他网站的静态和动态文件到Web页面中,例如,使用<c:import>标签导入其他网站的天气信息到自己的网页中。<c:import>标签与<jsp:include>动作指令类似,所不同的是<jsp:include>只能导入站内资源,而<c:import>标签不仅可以导入站内资源,也可以导入其他网站的资源。

4.2 请求转发标识<jsp:forward>

通过<jsp:forward>动作标识可以将请求转发到其他的Web资源,例如,另一个JSP页面、HTML页面、Servlet等。执行请求转发后,当前页面将不再被执行,而是去执行该标识指定的目标页面。

<jsp:forward>动作标识的语法格式如下:

<jsp:forward page="url" />

或者:

<jsp:forward page="url">
	子动作标识<jsp:param>
</jsp:forward>

参数说明:

page:用于指定请求转发的目标页面。该属性值可以是一个指定文件路径的字符串,也可以是表示文件路径的JSP表达式。但是请求被转向的目标文件必须是内部的资源,即当前应用中的资源。

子动作标识<jsp:param>:用于向被包含的动态页面中传递参数。

示例:使用<jsp:forward>动作标识将页面转发到用户登录页面。

<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>中转页</title>
</head>
<body>
<jsp:forward page="login.jsp"/>
</body>
</html>

4.3 传递参数标识<jsp:param>

JSP的动作标识<jsp:param>可以作为其他标识的子标识,用于为其他标识传递参数。其语法格式如下:

<jsp:param name="参数名"  value="参数值" />

参数说明:

name:用于指定参数名称。

value:用于设置对应的参数值。

示例:通过<jsp:param>标识为<jsp:forward>动作标识指定参数。

<jsp:forward page="modify.jsp">
	<jsp:param name="userId" value="7" />
</jsp:forward>

说明:通过<jsp:param>动作标识指定的参数,将以“参数名=值”的形式加入到请求中,它的功能与在文件名后面直接加“?参数名=参数值”是相同的。

4.4 <jsp:useBean>动作标识

<jsp:useBean>动作标识用来装载一个将在JSP页面中使用的JavaBean对象。其语法格式如下:

<jsp:useBean id="beanName" class="package.class" scope="page" />

参数说明:

id:用于创建JavaBean对象的引用名。

class:用于指定JavaBean的类。

scope:用于指定JavaBean对象的范围,默认情况下,scope被设置为page。

4.5 <jsp:setProperty>动作标识

<jsp:setProperty>动作标识用于设置<jsp:useBean>动作标识中指定的JavaBean对象的属性值。<jsp:setProperty>动作标识指定名称、属性、值和参数,用于赋给JavaBean对象的属性。其语法格式如下:

<jsp:setProperty name="beanName" property="propertyName" value="value" param="parameter" />

参数说明:

name:用于对应 <jsp:useBean>动作标识中的id属性。

property:指定要为之设置值的JavaBean的属性名称。

value:指定要为属性设置的值。

param:指定用于输入数据的表单元素名称,并给属性赋值。

注意:value属性不能与param属性一起使用。

4.6 <jsp:getProperty>动作标识

<jsp:getProperty>动作标识用于获取<jsp:useBean>动作标识中指定的JavaBean对象的属性值。其语法格式如下:

<jsp:getProperty name="beanName" property="propertyName" />

参数说明:

name:用于对应 <jsp:useBean>动作标签中的id属性。

property:指定要获取JavaBean对象的属性名称。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为您解答关于 JSP 基本语法登录程序的问题。 首先,您需要创建一个 JSP 文件,接着在该文件中编写以下代码: ``` <html> <head> <title>登录页面</title> </head> <body> <h2>用户登录</h2> <form action="login.jsp" method="post"> <table> <tr> <td>用户名:</td> <td><input type="text" name="username"/></td> </tr> <tr> <td>密码:</td> <td><input type="password" name="password"/></td> </tr> <tr> <td colspan="2"><input type="submit" value="登录"/></td> </tr> </table> </form> </body> </html> ``` 这段代码会生成一个简单的登录表单,其中包括用户名和密码输入框以及一个登录按钮。接着,您需要创建一个名为 "login.jsp" 的 JSP 文件,用于处理用户提交的表单数据。 在 "login.jsp" 文件中,您可以编写以下代码: ``` <%@ page contentType="text/html;charset=UTF-8" language="java" %> <% String username = request.getParameter("username"); String password = request.getParameter("password"); if(username.equals("admin") && password.equals("admin123")) { out.println("登录成功!"); } else { out.println("用户名或密码错误!"); } %> ``` 在该代码中,首先使用 request.getParameter() 方法获取用户在登录表单中输入的用户名和密码。然后通过一个 if-else 语句判断用户名和密码是否正确,正确则输出 "登录成功!",不正确则输出 "用户名或密码错误!"。 希望这个简单的 JSP 基本语法登录程序能够帮助到您!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_junbiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值