专题4:JSP脚本和指令
案例名称 JSP脚本和指令
教学目标 掌握JSP声明 掌握JSP脚本元素 灵活应用JSP指令
工作任务 完成用户登录功能,如果用户输入用户名:handson;密码:handson,则表示用户为合法用户,且显示登录成功或登录信息。
新建工程和login.jsp页面 新建Login工程。 新建和编写login.jsp页面: <%@ page contentType = "text/html; charset = gb2312“ language = "java"%> <form action = "login_check.jsp" method = "post"> <input type = "text" name = "username"> <input type = "password" name = "userpassword"> <input type = "submit" value = "登录"> <input type = "reset" value = "重置"> </form>
编写login_check.jsp页面1 得到用户名和密码 <% String name = request.getParameter("username"); String password = request.getParameter("userpassword"); %>
编写login_check.jsp页面2 验证用户名和密码,成功则转向登录成功页面,否则转向失败页面 if(name.equals("handson")&& password.equals("handson")){ <%@include file = "login_success.jsp" %> } else{ <%@include file = "login_failure.jsp" %> }
编写登录成功页面 新建和编写login_success.jsp页面 <%@page contentType = "text/html; charset = gb2312" language="java"%> <h6> <font color = "red" size = "5"> 登录成功,欢迎您光临!!! </font> </h6>
编写登录失败页面 新建和编写login_failure.jsp页面 <%@ page contentType = "text/html; charset = gb2312" language = "java"%> <h6> <font color = "red" size = "5"> 登录失败!错误的用户名和密码 </font> </h6> <a href = "login.jsp">重新登录</a>
总结 掌握JSP声明 掌握JSP脚本元素 灵活应用JSP指令 在案例中学会灵活应用上述知识点
介绍JSP 声明1 在JSP程序中,如果要使用一个变量或引用一个对象的方法和属性,必须对要使用的变量或方法和属性进行声明。 语法格式: <%! Declaration;[ Declaration;]+...%>
介绍JSP 声明2 可以声明多个变量或方法和属性 要在每个声明后都要用分号做为结尾 JSP声明并不产生输出,通常将其与JSP表达式和JSP脚本结合使用
介绍JSP 声明3 请看示例: <%! int i = 0 ; int j = 0; Double d = new Double(1.2); public String e(int j) { if(j<10) { return (“j<10”); }else { return (“j>=10”); } %>
注意 声明要用分号做为结尾。 一个变量或一个对象实例都有自己的使用范围,即在一个JSP程序中声明的变量就只能在本程序中有效,在其他页面中就不能使用了。若要每个页面都用到一些声明,最好把它们写成一个单独的文件,用<%@include%>指令或<jsp:include>动作包含进来。 可在<%@ page %>中直接使用所包含进来的已经声明的变量和方法,不须重新声明。
介绍JSP脚本元素1 JSP页面中包含符合Java标准语法的有效的程序片断 语法格式: <% code fragment %>
介绍JSP脚本元素2 “<%”和“%>”是JSP脚本代码标志 JSP脚本代码由服务器负责把它转化成对应的Servlet的Service方法。 JSP脚本能够包含多个JSP语句、方法、变量、表达式、它可访问诸如:request、response、out、session、application、exception、config和pageContext等JSP对象,利用这些可以在JSP页面内实现较复杂的逻辑功能。
示例1 请看示例 1 <body> <%! int a = 0; %> <% int b = 0; a++; <h3> 显示a的值:<%= a %> <br> 显示b的值:<%= b %> </h3> </body>
示例2 请看示例2 <% for (int i=0;i<=10;i++) { %> <p> 依次显示i的值为: out.println(i); </p> }
介绍JSP指令1 JSP指令用来设置全局变量、声明类、要实现的方法和输出内容的类型等,它不直接产生可见的输出。 <%@ directive attribute1="value1" attribute2="value2" ... attributeN="valueN" %>
介绍JSP指令2 JSP指令包含以下三种: 指令名称 作用 page指令 定义JSP的全局属性 include指令 主要用于将某文件包含到本网页中 taglib指令 定义一个标签库以及其自定义标签的前缀
<%@page attribute1 = "value1" attribute2 = "value2"...%> page指令主要功能是定义JSP的全局属性,即可对JSP网页的属性和相关功能进行设定 <%@page attribute1 = "value1" attribute2 = "value2"...%>
介绍page指令2 page指令是以“<%@page”开始,以“%>”结束,可将page指令放在JSP文件中的任何地方,它的作用范围是整个页面,但最好是放在JSP文件的头部。
page指令属性总结1 在page指令中包含多个属性,如下表1所示: 属性名称 作用 Import=”importList” 用于指定导入哪些包或类,这些包作用于程序段、表达式以及声明 language = "javaScriptLanuage" 指定JSP容器用什么语言来编译JSP页面,默认为Java语言 contentType="MIME-Type" 或contentType="MIME-Type; charset=CHARSET" 该属性指定输出的MIME类型和网页的编码方式,默认值是text/html,默认字符集为ISO-8859-1 session="true|false" 决定JSP网页是否使用session对象,默认值为true extends ="ClassName" 指定此JSP编译时需要继承哪一个Java父类 buffer="none|size kb" 指定客户端输出流的缓冲模式,none则不缓冲,如果指定数值,输出就用不小于这个值的缓冲区进行缓冲,但不小于8KB
page指令属性总结2 在page指令中包含多个属性,如下表2所示: 属性名称 作用 autoFlush="true|false" info = "text" 表示此JSP网页的相关信息 isThreadSafe ="true|false" 表示此JSP是否能同时处理多个用户请求,若为false,表示一个JSP只能一次处理一个请求 errorPage = "error_url" 表示如果发生异常错误时,网页会被重新指向一个错误页面URL isErrorPage ="true|false" 表示此JSP页面是否可作为其它JSP页面异常处理页面,默认值为false pageEncoding ="ctinfo" 表示JSP网页的编码方式 isELlgnored ="true|false" 表示此JSP网页是否忽略EL表达式,true将忽视
示例 <%@page contentType = “text/html; charset = gb2312" language = "java"%> <%@page import = "java.util.*,java.lang.*"%> <%@page buffer = "5kb" autoFlush="false"%> <%@page errorPage = "error.jsp"%> <%@page info = "Hello World!!!"%> <%@page session="true"%>
include指令 include指令在编译时用于将一个包含文本或代码的文件插入到当前JSP页面中,这个插入的过程是静态的,且该文件可以是JSP文件、HTML文件、文本文件或一段Java代码。 <% if(name.equals("handson")&&password.equals("handson")){ %> <%@include file="login_success.jsp" %> }
介绍taglib指令 taglib指令能够让用户使用第三方的标签,即指令声明此JSP文件可使用自定义的标签,使用Taglib指令需要指明标签库的uri标签描述符,也指定了引用这个标签的前缀。 <%@ taglib uri = "URIToTagLibrary" prefix = "tagPrefix" %>
指令属性 uri属性,标签描述符,告诉容器怎么找到标签描述文件和标签库 prefix属性,引用自定义标签的前缀 <%@page contentType="text/html; charset=gb2312" language="java"%> <%@taglib uri = "http://java.sun.com/jst1/core" prefix = "pub" %> <pub:forEach> ... </pub:forEach>