编辑: 阿拉蕾 | 2019-09-09 |
3.1 知识点总结 (1)JSP 脚本有三种:JSP 声明() 、小脚本()和JSP 表达式() . (2) 在JSP 的脚本中可以使用
9 个隐含变量, 它们分别是 application、 session、 request、 response、page、pageContext、out、config 和exception 等. (3)在JSP 中可以使用的指令有三种类型:page 指令、include 指令和 taglib 指令.三 种指令的语法格式如下: page 指令通知容器关于 JSP 页面的总体特性, include 指令实现把另一个文件 (HTML、 JSP 等)的内容包含到当前页面中,taglib 指令用来指定在 JSP 页面中使用标准标签或自定 义标签的前缀与标签库的 URI. (4)在JSP 中可使用三种类型的动作.标准动作、JSTL 动作和自定义动作.下面是常 用的标准动作: ? 动作用于包含另一个页面输出. ? 动作将请求转发到指定页面. ? 动作用来在 JSP 页面中查找或创建一个 bean 实例. ? 动作用来给 bean 实例的属性赋值. ? 动作用来检索并向输出流中打印 bean 的属性值. (5)表达式语言 EL,它是一种数据表示语言,例如,${applicationScope.email}输出应 用作用域中的 email 属性值. (6)JSP 页面本质上也是 Servlet,但若仅实现表示逻辑编写 JSP 页面要比编写 Servlet 容易.JSP 页面也在容器中运行,当JSP 页面第一次被访问时,Web 容器解析 JSP 文件并 将其转换成页面实现类.接下来,Web 容器编译该类并将其装入内存,然后与其他 Servlet 一样执行并将其输出结果发送到客户端. (7) 在JSP 页面中有
4 个作用域对象,它们的类型分别是 ServletContext、HttpSession、 Java Web 编程技术(第3版)题解与实验指导
22 HttpServletRequest 和PageContext,这4个作用域分别称为应用(application)作用域、会话(session)作用域、请求(request)作用域和页面(page)作用域. (8)在Java Web 开发中常用 JavaBeans 来存放数据、封装业务逻辑等,在JSP 页面中 使用 JavaBeans 主要是通过三个 JSP 标准动作实现的. (9)MVC 设计模式称为模型-视图-控制器模式.模型用 JavaBeans 实现,视图用 JSP 实现,控制器用 Servlet 或过滤器实现. (10)在Java Web 开发中有多种错误处理方法:声明式错误处理和编程式错误处理. 3.2 实训任务【实训目标】 学会 JSP 页面各种元素的使用,理解页面实现类,使用包含指令和包含动作,掌握 JavaBeans 和作用域概念. 任务
1 学习 JSP 页面如何转换成页面实现类 本任务学习 JSP 页面元素如何转换成页面实现类. (1) 在Eclipse 中新建一个 jsp-demo 动态 Web 项目, 在项目的 WebContent 目录中新建 today-date.jsp 页面,代码如下: 显示日期 今天的日期是: (2)启动浏览器,访问 today-date.jsp 页面,显示结果如图 3-1 所示. 图3-1 today-date.jsp 页面运行结果 (3)假设将 jsp-demo 项目部署到 Tomcat 服务器中.打开 Tomcat 安装目录的 workCatalinalocalhostjsp-demoorgapachejsp 目录中的 today-date_jsp.java 文件,查看隐 含对象是如何定义的,完成下面的填空. 科JSP 技术基础
23 第3章JSP 页面转换后定义的类名为( ) . 该类继承了哪个类?( ) . 隐含对象 request 的类型为( ) . 隐含对象 response 的类型为( ) . 隐含对象 pageContext 的类型为( ) . 隐含对象 session 的类型为( ) . 隐含对象 application 的类型为( ) . 隐含对象 config 的类型为( ) . 隐含对象 out 的类型为( ) . 隐含对象 page 的类型为( ) . 是作用域对象的包括( ) . (4)在页面实现类中找到 today 变量的声明位置. 任务
2 学习使用包含指令和包含动作实现页面布局 本任务包括
4 个文件 header.jsp、body.jsp、footer.jsp 和main.jsp.在main.jsp 文件中使 用include 指令包含其他页面实现页面布局. (1)在jsp-demo 项目的 WebContent 目录中创建 header.jsp 文件,它实现页面页眉 部分. 新世纪 网上书店 (2)在WebContent 目录中创建 body.jsp 文件,它实现页面主体部分. 欢迎光临新世纪网上书店! 开始购买图书 (3)在WebContent 目录中创建 footer.jsp 文件,它实现页面的页脚部分. 版权所有 &
copy;
2018 新世纪网上书店, Inc. (4)在WebContent 目录中创建 main.jsp 文件,它是主页面.其中使用 include 指令包 含其他部分的文件. 新世纪在线书店 (5)在浏览器中访问 main.jsp 文件,结果如图 3-2 所示. 图3-2 main.jsp 页面运行结果 (6)修改上面程序,使用动作实现页面布局. 任务
3 学习在 Servlet 和JSP 页面中使用 JavaBeans 对象 本任务在 JSP 页面 inputProduct.jsp 中输入商品信息,将请求转到 ProductServlet,创建 一个 Product 对象, 然后将请求转发到 dispalyProduct.jsp 页面, 在其中使用 动作输出信息. (1)在jsp-demo 项目的 com.demo 包中创建 Product 类,它是 JavaBeans 类,用于存放 商品信息. package com.demo;
public class Product { private String id;
//商品号 private String name;
//商品名 科JSP 技术基础
25 第3章private double price;
//价格 public Product() { super();
} public Product(String id, String name, double price) { super();
this.id = id;
this.name = name;
this.price = price;
} public String getId() { return id;
} public void setId(String id) { this.id = id;
} public String getName() { return name;
} public void setName(String name) { this.name = name;
} public double getPrice() { return price;
} public void setPrice(double price) { this.price = price;
} } (2)在WebContent 目录中创建 input-product.jsp 页面,用于输入商品信息,代码如下: 输入商品信息 输入商品信息 商品号: 商品名: 价格: Java Web 编程技术(第3版)题解与实验指导
26 (3)在src 的com.demo 包中创建 ProductServlet,在其中检索用户提交的商品信息, 构建 Product 对象并存储到请求作用域中,将请求转发到 display-product.jsp 页面. package com.demo;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.WebServlet;
@WebServlet( /product-servlet ) public class ProductServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException,ServletException { String id = request.getParameter( id );
String name = request.getParameter( name );
//修改请求参数的字符编码 name = new String(name.getBytes( iso-8859-1 ), UTF-8 );
double price = Double.parseDouble(request.getParameter( price ));
Product product = new Product(id,name,price);
request.setAttribute( product , product);
RequestDispatcher rd = request.getRequestDispatcher( /display-product.jsp );
rd.forward(request,response);
} } (4)在WebContent 目录中创建 display-product.jsp 页面, 用JavaBeans 标准动作显示请 求作用域的商品信息,代码如下: 商品信息 商品信息如下 商品号: 商品名: 价格: 科JSP 技术基础
27 第3章 (5)访问 input-product.jsp 页面,在其中输入商品号 202,商品名 笔记本电脑 ,价 格输入 4200,最后显示的 display-product.jsp 页面如图 3-3 所示. 图3-3 displayProduct.jsp 页面运行结果 3.3 思考与练习答案 1.下面左边一栏是 JSP 元素类型,右边是对应名称,请连线. 指令 EL表达式 声明 小脚本 动作 email:${applicationScope.mail} 表达式 【答】 小脚本 声明 指令 动作 表达式 email:${applicationScope.mail} EL表达式 2.执行下面 JSP 代码输出结果是什么?( ) x与y的和是: A.x 与y的和是:8 B.x 与y的和是:9 C.x 与y的和是:11 D.发生错误 Java Web 编程技术(第3版)题解与实验指导
28 【答】 B. 变量 x 被声明两次: 一次是作为类的成员变量, 因为使用了 语句,另一次是在_jspService()中声明的局部变量,因为使用的代码是. 3.下面 JSP 代码有什么错误? 【答】 正确声明应为: 4.假设 myObj 是一个对象的引用,m1()是该对象上一个合法的方法.下面的 JSP 结 构哪个是合法的?( ) A. B. C. D. 【答】 B 是合法的.注意,JSP 表达式中百分号和等号之间不能有空格. 5.说明下面代码是否是合法的 JSP 结构?( ) A. B. C. 【答】 B、C.A 非法,等号表明它是 JSP 表达式,但表达式不能以分号结束.B 合法, 将........