270 likes | 407 Views
JSP 语法与内置对象. JSP 动态 Web 技术. 广东科学技术职业学院. 内容提要. 1. JSP 语法. 2. 主题网站. 3. 网上调查. 4. 内置对象. 5. 总结与提高. JSP 基本语法. 概念和意义. JSP 内置对象. JSP 的语法规范. 操 作. JSP 内置对象. 常用内置对象应用. 主题网站设计. 使 用. 网上调查. 学习目标. 掌握 JSP 的基本语法 熟练使用 JSP 内置对象 掌握 JSP 开发环境. 项目引入:主题网站. 预备知识 ——page 指令. 实例:
E N D
JSP语法与内置对象 JSP动态Web技术 广东科学技术职业学院
内容提要 1 JSP语法 2 主题网站 3 网上调查 4 内置对象 5 总结与提高
JSP基本语法 概念和意义 JSP内置对象 JSP的语法规范 操 作 JSP内置对象 常用内置对象应用 主题网站设计 使 用 网上调查 学习目标 • 掌握JSP的基本语法 • 熟练使用JSP内置对象 • 掌握JSP开发环境
预备知识——page指令 • 实例: <%@ page contentType="text/html; charset=GB2312" %> • 作用:指定JSP页面的格式和文字编码(JSP程序必需); • 实例: <%@ page import= " java.io.* ", “java.util.Date " %> • 作用:为JSP页面引入java核心包中的类,可指定多个值。 总结:page指令用来定义整个JSP页面的一些属性和这些属性的值。
预备知识——静态include指令 • 格式: • <%@include file= “ 要插入的文件名“%> • 说明:文件可以是下列格式: • HTML文件; • JSP文件; • 文本文件; • Java文件 • …… • 分析:被插入的文件是彼此独立完整的文件吗? 总结:把一个文件插入到当前JSP页面,合并成一个新的JSP页面
知识储备——JSP注释 • JSP程序注释 格式:<%-- 注释内容 --%> 注意:在注释内容中,可以出现除--%>之外的任何内容,若需使用,必须使用转义字符“--%\”表示 • 客户端注释 格式:<!—客户端嵌入注释内容--> • 客户端动态注释: 格式: <!- - 静态注释内容<%=表达式%>静态注释内容 - -> JSP程序注释是对JSP程序进行的注释,服务器不会将其发送到客 户端 客户端注释是指在客户端HTML源码中显示的注释,JSP引擎不做 任何解释,直接输出到客户端HTML源码 客户端注释嵌入动态数据,动态数据通过表达式来表示
JSP 表达式示例 • 使用JSP 表达式进行JSP编程 <body> <h1>JSP表达式</h1> <b>PI 的值: </b><%=Math.PI %><br /> <b>100,99中最大的值 :</b><%=Math.max(100,99) %><br/> <b>100,99中最小的值 :</b><%=Math.min(100,99) %><br/> <b>3+2-5的值 :</b><%=3+2-5 %><br/> <b>(3+2)==5的值 :</b><%=(3+2)==5 %><br/> <b>(3+2)!=5的值 :</b><%=(3+2)!=5 %><br/> </body> 表达式 演示:java表达式
JSP 页面元素 示例 JSP 指令 <%@page contentType="text/html; charset=GBK" language="java" import="java.util.Calendar"%> <%! String getHello(String name) { return "Hi," + name + "!"; } %> <% Calendar now = Calendar.getInstance(); %> JSP声明 Java程序片
JSP 页面元素 • JSP 页面的元素 HTML静态文本 静态内容 以“<%@ ” 开始,以“%> ” 结束。比如: <%@ include file = "Filename" %> 指 令 表达式 <%=Java表达式 %> JSP 页面 <% Java 代码 %> Java程序 <%! 函数或方法 %> 声 明 以“<jsp: 动作名 ” 开始,以“</jsp:动作名> ” 结束 比如:<jsp:include page=" Filename" /> 动作 <!-- 这是注释,但客户端可以查看到 --> <%-- 这也是注释,但客户端不能查看到 --%> 注释
项目实现 • 新建工程 • 新建Web Application • html文件:head.html、welcome.html、special.htm、connectus.htm • 运用“include”指令,组合页面: <%@include file= “ 要插入的文件名“%> • JSP文件:welcome.jsp、 special.jsp、 connectus.jsp • 调试、运行
项目功能改进——请大家完成练习 • 思路: • 减少JSP文件个数; • 超级链接的附带参数; • 实现方法: • 链接方式:修改head.htm文件:<a href="index.jsp?choice=1">专业首页</a> • 获取链接地址:修改index.jsp文件:request.getParameter(choice); • Include指令加载文件
Form标记 分析:传递数据吗? • 功能实现:——Form表单 • 参数如下: • ACTION:表单处理方式,指定数据传送“目的地” • METHOD:数据传输方式,如post或get方法; • ENCTYPE:传送表单数据的编码方式
JSP 页面 请求 请求 客户端 响应 响应 服务器 内置对象 隐式对象
表示并存储客户端的请求 服务器 客户端 JSP 页面 请求信息 请求 request 对象 request内置对象 • 方法:getParameter(String s) • 作用:获取客户提交的信息; • 使用:reques. getParameter(String s); • 分析:“s”是表单控件的名称; • 实例练习:获取用户提交数据的程序:request.jsp • 分析:如果输入中文,出现什么情况
中文乱码处理 • String str=request.getParameter(“s”); • Byte b[]=str.getBytes(“ISO-8859-1”); • Str=new String(b); • 简写为: • String str=new String(request.getParameter(“s”). • getBytes(“ISO-8859-1”)); 处理思想:首先,将获取的字符串用ISO-8859-1进行编码,并 将编码存放到一个字节数组中
使用request对象的其他问题 代码4(最终版): <% String data2=request.getParameter("data"); if(data2==null){ data2="0"; }//空对象处理 double data3,result; try{ data3=Double.parseDouble(data2);//数据类型转换 if(data3>=0){ result=Math.sqrt(data3); %> <%=data2%>的平方根是:<%=result%> <% } else{ %> 请输入一个正数 <%} }catch(NumberFormatException e){ %>请输入数字字符 <% }%> • 实例:文本框中输入一个数字,计算其平方根 代码3: <% String data2=request.getParameter("data"); if(data2==null){ data2="0";}//空对象处理 double data3,result; data3=Double.parseDouble(data2);//数据类型转换 if(data3>=0){ result=Math.sqrt(data3); %> <%=data2%>的平方根是:<%=result%> <%} else{ %> 请输入一个整数 <% }%> 代码2: <% String data2=request.getParameter("data"); double data3,result; data3=Double.parseDouble(data2);//数据类型转换 result=Math.sqrt(data3); %> <%=data2%>的平方根是:<%=result%> 代码1: <% String data2=request.getParameter("data"); result=Math.sqrt(data2); %> <%=data2%>的平方根是:<%=result%>
forward动作标签 • 格式: <jsp:forward page=“要转向的页面”> </jsp:forward> • 作用: 从该指令处停止当前页面的继续执行,而转向其他JSP页面。 • 程序分析:forward.jsp <% double i=Math.random(); if(i>0.5) { %> <jsp:forward page=“index.jsp" > </jsp:forward> <% } %>
param动作标签 • 格式: <jsp:param name=“名字” value=“指定给param的值”> • 作用: 该标签可以与jsp:forward或者jsp:include标签一起使用,可以将param标签中的值传递到include指定或者forward指令要加载/转向的页面中。 <% double i=Math.random(); %> <jsp:forward page="come.jsp" > <jsp:param name="number" value="<%=i%>" /> </jsp:forward> <% String str=request.getParameter("number"); double n=Double.parseDouble(str); %> <P>您传过来的数值是:<BR> <%=n%>
项目引入——网上调查 • 新建工程 • 页面设计:index.htm、newsselect.jsp、newsok.jsp
预备知识——session内置对象 • Cookie:是一条极为短小的信息,能够被网站自动地放置在一台电脑的硬盘中。通过Cookie,网站可以识别你是第一次访问,或是又一次访问它。 • 会话:从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开服务器结束,成为一个; • Session用来保存客户端状态信息; • 客户端的每次访问都把上次的session记录传递给Web Server; • Web Server读取客户端提交的session来获取客户端的状态信息;
session常用方法 • public void setAttribute(String key,Object obj); 将Object指定的对象obj添加到session对象中,并为添加的对象指定一个索引关键字; • public Object getAttribute(String key); 获取session对象中含有关键字是key的对象,由于任何对象都可以添加到session对象中,取回对象时,应强制转化为原来类型。 • session.getId();获取session对象的编号 类似方法: session.putValue("namesex",name+sex); String namesex=(String) session.getValue("namesex"); <% if(session.getAttribute(“name”)!=null){ String name = (String) session.setAttribute(“name”); } %> <% session.setAttribute(“name”, “admin”); %>
application对象 • 生命周期:服务器启动——服务器关闭 • 所有客户的application对象都是同一个。 • 例如:聊天室程序、计数器程序、留言板程序。 • 所有客户共享一个application对象 • 常用方法: • getAttribute(String name) • setAttibute(String name,Object value) <% if(application.getAttribute(“ChartRecord”)!=null){ String chartRecord = (String) application.getAttribute(“ChartRecord”); } %> <% application.setAttribute(“ChartRecord”, “hihi”); %>
服务器 客户端 JSP 页面 创建输出流 请求 在网页上显示输出流 输出流 out 对象 • 表示输出流 • javax.servlet.jsp.JspWriter 类的实例 • 使用 write()、print() 和 println() 方法 创建输出流以显示信息 out 对象
out 对象示例 • 使用out对象进行JSP编程 使用out对象输出 <html> <body> <% out.print(“欢迎来到 JSP:out对象”) ; out.write(“欢迎来到 JSP:out对象”) ; %> … </body> </html> 演示:示例
总结 • JSP 表达式包括在 <%= %>内; java程序包含在<% %>内;声明包含在<%! %>内 • JSP 指令共有三种类型,即 page、include 和 taglib。JSP 指令包括在 <%@ 和 %>内 • page 指令用于设置 JSP 页面的属性;include 指令用于在 JSP 页面嵌入其他文件 ;forward动作标签用于页面跳转。 • JSP 中的内置对象: request、response、out、session、application
总结 • JSP隐式对象一般分为输入/输出对象、作用域通信对象 、Servlet 对象 和错误对象四类 • JSP 中的隐式对象包括 page、config、request、response、out、session、application、pageContext 和 exception • JSP 定义的作用域包括 page、request、session 和 application