教案:《开发基于JSPServletJavaBean的网上交易系统》第7章 View层开发,JavaBean在JSP中的使用

 
授课教师:牟勇
课时: 100 分钟
 
本章技能目标
n 掌握JavaBean的概念
n 会使用JSP标准动作
本章重点
n理解JavaBean的概念
n会使用JSP标准动作
本章难点
nJSP标准动作的使用
本章工作任务
n修改E-Book电子书店,实现以下功能
u 使用JSP标准动作验证用户登录
u 使用JSP标准动作添加用户订单
l   整章授课思路
n本章依次讲解4个问题:为什么使用JavaBean,与JavaBean相关的标准动作,使用JSP标准动作和JavaBean实现用户登录验证,Model I介绍。
n为什么使用JavaBean:说明在编写程序时,以对象的形式进行参数值的传递。
n与JavaBean相关的标准动作:JavaBean可以与JSP共同实现简化JSP编程,即使用JSP标准动作,并讲解常用的动作语法与功能
n使用JSP标准动作和JavaBean实现用户登录验证:利用实例说明在JSP中如何使用JSP标准动作,并且说明,JSP标准动作setProperty与getProperty实质上是调用了JavaBean中的setter与getter方法。
nModel I介绍:简单介绍了Model I模式,并说明Model I与Model II之间的区别在于Model II中含有控制器,这样有利于程序的流程控制和以后的维护与扩展。Model I比较适用于中,小型项目。
什么是JNDI?
为什么要使用JNDI?
连接数据库有几种方式?
什么是JavaBean?
在JSP中如何使用JavaBean?
组件开发
说明:JavaBean是JavaEE的一个组件。
生活案例:小孩子玩积木
特征:首先小孩子会有一堆各种形状的积木块,其次,小孩子会把这些积木块放在他们应该放的位置,最后,一个漂亮的成品就产生了。
类比:一堆各种形状的积木块,就好似我们JavaEE的各种组件。小孩子把这些积木块放在他们应该放的位置就相当于组件间的相互协作,漂亮的成员就相当于我们最后的应用程序。
为什么需要JavaBean
在编写程序的过程中,调用方法时需要传递参数。当方法参数过多时,直接传递参数会造成很多麻烦,而且也不易于维护和扩展。所以,我们应该使用面向对象的编程思想进行程序设计。要使用实体类封装数据,再以实体类对象作为参数来传递数据。
JavaBean 介绍
在S2阶段中,已经接触了JavaBean。如新闻发布中新闻的一级、二级标题就使用了JavaBean。
问题:什么叫JavaBean呢?
答案:Bean就是豆子,JavaBean的意思,就是“Java豆”,它的意思就是说,作Java程序,可以用很多的小豆子拼装在一起的方法来做。所以,JavaBean是应用程序的组成部分,它可以分为两类,一类装数据(实体Bean),另一类装业务方法(业务Bean或会话Bean)。有时,数据和业务方法也会同时在一个JavaBean中。
教员应演示如何在Eclipse中创建一个JavaBean。
与JavaBean相关的标准动作[40分钟]
过渡:JavaBean 是为了进行封装数据,但是除去这个功能,JavaBean 还有其他的用途吗?为什么要有关于属性和方法以及构造方法的要求?
答案:JavaBean可以和JSP协同工作,只需要在JSP中使用标准动作,就可以很容易的在JSP中调用JavaBean的业务逻辑方法,或给JavaBean赋值。
为什么需要JSP 标准动作?
如果在JSP中直接嵌入Scriptlet,会给美工和设计人员造成很大的迷惑,并且也不易进行代码重用,维护和扩展。
JSP标准动作:
v <jsp:useBean>:在JSP中实例化一个JavaBean
v <jsp:setProperty>:调用一个JavaBean对象的setXXX()方法
v <jsp:getProperty>:调用一个JavaBean对象的getXXX()方法,并显示返回值。
v <jsp:forward>:页面跳转(这个动作与JavaBean无直接关系)
useBean 动作:
教员应结合幻灯片,说明useBean动作的各个属性的意思。并特别说明scope属性的设置。
setProperty 和getProperty 动作
教员应结合幻灯片,说明setProperty和getProperty动作的各个属性的意思,以及它们的简单用法。
JSP 标准动作示例

<%@ page language="java" pageEncoding="GBK"%>
<html>
<body>
   <jsp:useBean id="order" class="y2javaee.sg.ch07.Order" scope="request"/>   
   <jsp:setProperty name="order" property="userName"
                               value="<%=request.getParameter("username")%>"/>
 //设置其它属性值
    用户名:  <jsp:getProperty name="order" property="userName"/> . <br>
    邮 编: <jsp:getProperty name="order" property="zipcode"/>      . <br>
    电 话:    <jsp:getProperty name="order" property="phone"/>        . <br>
    信用卡: <jsp:getProperty name="order" property="creditcard"/>  . <br>
    总 价: <jsp:getProperty name="order" property="total"/>             . <br>   
 </body>
</html>

教员应重点说明红色部分的代码。并演示结果。
param 的使用

<%@ page language="java" pageEncoding="GBK"%>
<html>
 <body>
<jsp:useBean id="order" class="y2javaee.sg.ch07.Order" scope="request"/>    
<jsp:setProperty name="order" property="userName" param="username" />
    //设置其它属性值
<jsp:setProperty name="order" property="total" value="23.45"/>
用户名: <jsp:getProperty name="order" property="userName"/>.       
//显示order对象其它属性值
姓 名: <jsp:getProperty name="order" property="userName"/>.
总 价: <jsp:getProperty name="order" property="total"/>.
 </body>
</html>

教员应说明param属性:它是说明请求页提交过来的数据的名称,而property则是说明JavaBean对应的属性名。
如果JavaBean的属性名与请求页提交过来的数据名相同,则可以省略param的设置。
另外,教员可以扩展*号的用法。
现场编程
请使用JSP标准动作创建一JavaBean对象,并对该对象的属性进行赋值
类所在的包和类名:com.entity.Users
类的属性userName,password
常见错误
数据显示为null
原因:param属性的值要与表单元素名称对应。
HTTP500 错:属性名称错误
原因:property属性的值要与JavaBean的属性名称对应。
使用JSP标准动作和JavaBean实现用户登陆验证[20分钟]
引入:由于JSP标准动作是对应调用getXXX()方法与setXXX()方法,所以我们只需要将我们的业务逻辑方法加上一个get前缀,就可以使用getProperty标准动作来调用它,并将这个方法的返回值直接显示在网页上。

public boolean getValid() {
        Connection con = ConnectionManager.getConnection();
        PreparedStatement pStatement = null;
        String sql = "select * from userinfo where loginname = ?";
        try {
              pStatement = con.prepareStatement(sql);
              pStatement.setString(1, getName());
             ResultSet rs = pStatement.executeQuery();
            if (rs.next() && rs.getString("password").equals(getPassword()))
                valid = true;
            else
                 valid = false;            
         } catch (Exception ex) {       ex.printStackTrace();        }
         return valid;
}

教员应强调方法名的取法。

<%@ page contentType="text/html;charSet=GBK" pageEncoding="GBK"%>
<jsp:useBean id="userManager" class="y2javaee.sg.ch07.UserManager" scope="session"/>
<jsp:setProperty name="userManager" property="name"
param="loginName" />
<jsp:setProperty name="userManager" property="password" param="password" />
<%     if (userManager.getValid()) {    %>
<jsp:forward page="books.jsp" />
<%     } else {    %>
<jsp:forward page="register.html" />
<% }     %>

教员应强调标准动作在这里的用法。
Model I介绍[10分钟]
Model I设计模式
JSP+JavaBean(View + Model)
Model I和Model II的对比
Model II即MVC设计模式
Model I缺少控制器(Controller),不易维护和扩展
Model I适用于开发中、小型项目
为什么使用JSP标准动作?
我们已经学过的JSP标准动作有哪些?
<jsp:forward page= "url" / >的实质是什么?
Model I和Model II(MVC)的区别是什么?
JSP标准动作各参数
 jsp:setProperty动作中*的用法
 暂无
 习题1:167页至168页选择题
 习题2:168页第1,2,3,4题
 习题3:预习第八章,试做课后的选择题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

默然说话

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

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

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

打赏作者

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

抵扣说明:

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

余额充值