PowerPoint Template

Download Report

Transcript PowerPoint Template

JSP动态Web技术
JSP语法与内置对象
深圳职业技术学院软件技术专业
内容提要
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(); %>
Java程序片
JSP声明
JSP 页面元素
 JSP 页面的元素
静态内容
指令
表达式
HTML静态文本
以“<%@ ” 开始,以“%> ” 结束。比如:
<%@ include file = " Filename" %>
<%=Java表达式 %>
JSP 页面
Java程序
声明
动作
注释
<% Java 代码 %>
<%! 函数或方法 %>
以“<jsp: 动作名 ” 开始,以“</jsp:动作名> ” 结束
比如:<jsp:include page=" Filename" />
<!-- 这是注释,但客户端可以查看到 -->
<%-- 这也是注释,但客户端不能查看到 --%>
项目实现
1. 新建工程
2. 新建Web Application
3. html文件:head.html、welcome.html、special.htm、
connectus.htm
4. 运用“include”指令,组合页面:
<%@include file= “ 要插入的文件名“%>
5. JSP文件:welcome.jsp、 special.jsp、 connectus.jsp
6. 调试、运行
项目功能改进——请大家完成练习
 思路:
 减少JSP文件个数;
 超级链接的附带参数;
 实现方法:
1. 链接方式:修改head.htm文件:<a
href="index.jsp?choice=1">专业首页</a>
2. 获取链接地址:修改index.jsp文件:
request.getParameter(choice);
3. Include指令加载文件
Form标记
分析:传递数
据吗?
功能实现:——Form表单
参数如下:
ACTION:表单处理方式,指定数据传送“目的地”
METHOD:数据传输方式,如post或get方法;
ENCTYPE:传送表单数据的编码方式
内置对象
请求
JSP 页面
请求
隐式对象
响应
客户端
响应
服务器
request内置对象
 方法:getParameter(String s)
 作用:获取客户提交的信息;
 使用:reques. getParameter(String s);
 分析:“s”是表单控件的名称;
 实例练习:获取用户提交数据的程序:request.jsp
 分析:如果输入中文,出现什么情况
表示并存储客户端的请求
JSP 页面
请求
请求信息
request 对象
客户端
服务器
中文乱码处理
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");
代码3:
if(data2==null){
代码2:
<% data2="0"; }//空对象处理
代码1:
double
data3,result;
data2=request.getParameter("data");
<% String
try{ data3=Double.parseDouble(data2);//数据类型转换
<%
if(data2==null){
String data2=request.getParameter("data");
if(data3>=0){
data2="0";}//空对象处理
String data2=request.getParameter("data");
result=Math.sqrt(data3);
double
data3,result;
double
data3,result;
%>
result=Math.sqrt(data2);
data3=Double.parseDouble(data2);//数据类型转换
data3=Double.parseDouble(data2);//数据类型转换
<%=data2%>的平方根是:<%=result%>
%>
if(data3>=0){
<% }
result=Math.sqrt(data3);
result=Math.sqrt(data3);
%>
else{ %> 请输入一个正数
<%=data2%>的平方根是:<%=result%>
%> <%=data2%>的平方根是:<%=result%>
<%}
<%} }catch(NumberFormatException e){
<%=data2%>的平方根是:<%=result%>
else{%>请输入数字字符
%> 请输入一个整数
<% }%>
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){
session.setAttribute(“name”,
“admin”);
String name = (String) session.setAttribute(“name”);
} %>
%>
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”);
%>
out 对象
 表示输出流
 javax.servlet.jsp.JspWriter 类的实例
 使用 write()、print() 和 println() 方法
创建输出流以显示信息
请求
客户端
在网页上
显示输出
流
JSP 页面
创建输出流
out 对象
输出流
服务器
out 对象示例
 使用out对象进行JSP编程
<html>
<body>
<%
out.print(“欢迎来到 JSP:out对象”) ;
out.write(“欢迎来到 JSP:out对象”) ;
%>
…
</body>
</html>
演示:示例
使用out对象输出
总结
 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