zoukankan      html  css  js  c++  java
  • JAVABean的应用

    JavaBean 是java中开发的可以跨平台的重用组件,在jsp程序中常用来封装业务逻辑数据库操作。在程序中,程序员们所要处理的无非是业务逻辑和数据,而这两种操作都要用到javabe,因此javabean很重要。

    javabean 实际就是一个java类,这个类可以重用。从javabean功能上可以分以下两类:

    封装数据。(实际就是将数据库中某一张表的字段进行封装)

    封装业务。(相对一个封装了数据的javabean,一般都会有一个封装该类的业务逻辑操作的javabean与之对应。)

    javabean一般情况下要满足以下要求:

    一是一个共有类,并提供无参的公有的构造方法。

    一属性私有。

    一具有公有的setter和getter方法。

    符合上述条件的类,我们都可以把它看成javabean组件。

    在实际开发中,通常还会创建一个Service层,用于存放与业务逻辑相关的操作。

    Service层中的接口和类对dao类的方法实现了封装和调用。)

     1 package com.pb.news.services;
     2 
     3 import java.util.List;
     4 
     5 import com.ob.news.entity.News;
     6 
     7 public interface Service {
     8     //增加新闻
     9         public boolean addNews(News news);
    10         //删除新闻
    11         public boolean deleteNews(int id);
    12         //更新选择的新闻数据
    13         public boolean updateNews(News news);
    14         //查询新闻信息
    15         public List<News> getNewsList();
    16 }
    service
     1 mport com.ob.news.entity.News;
     2 import com.pb.news.dao.NewsDao;
     3 
     4 public class serviceImpl implements Service {
     5     private NewsDao newsdao;
     6     public boolean addNews(News news) {
     7         // TODO Auto-generated method stub
     8         return newsdao.add(news);
     9     }
    10 
    11     public boolean deleteNews(int id) {
    12         // TODO Auto-generated method stub
    13         return newsdao.delete(id);
    14     }
    15 
    16     public boolean updateNews(News news) {
    17         // TODO Auto-generated method stub
    18         return newsdao.update(news);
    19     }
    20 
    21     public List<News> getNewsList() {
    22         // TODO Auto-generated method stub
    23         return newsdao.getNewstitle();
    24     }
    25 
    26 }
    serviceImpl


    jsp动作标签

    通过动作标签,程序员可以在jsp页面中把页面的显示功能部分封装起来,使整个页面更简洁和易于维护。

    <jsp:useBean>

    装载一个健将在jsp页面中使用的javabean,发挥java组件重用的优势

    语法:

    1 <jsp:useBean id="name" class="package.class" scop="scop"/>

    id :创建javabean的引用名   class:指定javabean的类 scop:指定javabean的范围

    默认情况下scop被设置为 page

                             useBean 动作的范围选项

    范围                                     说 明

    page                     JavaBean 只能在当前页面中使用。当加载新页面时就会将其销毁

    request                 JavaBean 在用户对其发出请求时存在

    session                  JavaBean 一直存在于会话中,直至其终止或被删除为止

    application             JavaBean 在整个应用程序中均可使用

    useBean 属性的使用如示例所示。
    <jsp:useBean id="order" class="y2javaee.sg.ch07.Order" scope="request"/>
    上述示例中代码的含义是:如果在scope 指定的范围内存在id 指定的对象,就返回该对象;
    如果不存在,就创建一个class 属性指定的Java 类的对象,并保存在id 指定的变量内。在JSP
    文件中,相当于:

    <jsp:setProperty>
    setProperty 动作用于设置 useBean 中指定的 JavaBean 的属性值。setProperty 动作指
    定名称、属性、值和参数,用于赋给JavaBean 的属性。setProperty 动作的语法如下。

    语法:

    <jsp:setProperty name="BeanName" property="PropertyName" value="Value"
    param="Parameter" />


    其中,name 指定 useBean 中使用的JavaBean 的id;property 指定要为之设置值的
    JavaBean 的属性名称;value 指定要为属性设置的值;param 指定用于输入数据的表单元素名
    称,并给属性赋值。

    param 属性不能与 value 属性一起使用。

    在示例 1 中显示如何在 JSP 页面中使用 setProperty 动作。使用 useBean 动作将 Order
    类嵌入当前 JSP 页面,并使用 setProperty 动作设置

    userName 属性的值为“ACCP”。

    <jsp:useBean id="order" class="y2javaee.sg.ch07.Order" scope="request"/>
    <jsp:setProperty name="order" property="username" value="ACCP"/>

    param属性的使用。

    <jsp:useBean id="order" class="y2javaee.sg.ch07.Order" scope="request"/>
    <jsp:setProperty name="order" property="username" param="username"/>

     <jsp:getProperty>
    useBean 中id 所指定的对象通过setProperty 中对property 指定的属性进行赋值后,可
    以使用getProperty 动作获取JavaBean 中指定的属性值。

    <jsp:getProperty name="beanName" property="PropertyName"/>
    其中,name 指定 useBean 中使用的JavaBean 的id;property 指定要获取JavaBean 的
    属性名称。
    在下列示例中,在JSP 页面中使用getProperty 标准动作获取JavaBean 属性值的代码。

    1 <jsp:useBean id= "order" class="y2javaee.sg.ch07.Order"scope="request"/>
    2 <jsp:setProperty name="order" property="username” value="ACCP"/>
    3 <jsp:getProperty name= "order" property="username"/>

    应用举例一
    通过下面一个例子,我们演示一下JSP 标准动作在程序中的使用。首先,在WebRoot 下创
    建test 文件夹,在该文件夹内创建order.html 文件,内容如示例所示。

     1 <body>
     2 <!-- 此处省略了页面美化代码 -->
     3 <p class = "bigFont">购物车买单</p>
     4 <form method = "post" action = "processorder.jsp">
     5 <p style = "font-weight: bold">请输入如下信息.</p>
     6 <table>
     7 <tr>
     8 <td class = "right bold">用户名:</td>
     9 <td>
    10 <input type = "text" name = "username" size = "25" />
    11 </td>
    12 </tr>
    13 <tr>
    14 <td class = "right bold">邮编:</td>
    15 <td>
    16 <input type = "text" name = "zipcode" size = "10" />
    17 </td>
    18 </tr>
    19 <tr>
    20 <td class = "right bold">电话:</td>
    21 <td>
    22 <input type = "text" name = "phone" size = "10" />
    23 </td>
    24 </tr>
    25 <tr>
    26 <td class = "right bold">信用卡:</td>
    27 <td>
    28 <input type = "text" name = "creditcard" size = "25" />
    29 </td>
    30 </tr>
    31 </table>
    32 <p><input type = "submit" value = "提交" /></p>
    33 </form>
    34 </body>
    View Code

    order.html 页面的form 表单提交给processorder.jsp,在processorder.jsp 中使用JSP 标准动
    作实现数据的获取并同时封装到JavaBean 中。processorder.jsp 代码如下面示例所示。

     1 <%@ page language="java" pageEncoding="GBK"%>
     2 <html>
     3 <head>
     4 <title>演示JavaBean</title>
     5 <jsp:useBean id="order" class="y2javaee.sg.ch07.Order" scope="request"/>
     6 <jsp:setProperty name="order" property="username" param="username"/>
     7 <jsp:setProperty name="order" property="zipcode" param="zipcode"/>
     8 <jsp:setProperty name="order" property="phone" param="phone"/>
     9 <jsp:setProperty name="order" property="creditcard" param="creditcard"/>
    10 <jsp:setProperty name="order" property="total" value="23.45"/>
    11 </head>
    12 <body>
    13 用户名:<jsp:getProperty name="order" property="username"/>. <br>
    14 邮 编:<jsp:getProperty name="order" property="zipcode"/>. <br>
    15 电 话:<jsp:getProperty name="order" property="phone"/>. <br>
    16 信用卡:<jsp:getProperty name="order" property="creditcard"/><br>
    17 总 价:<jsp:getProperty name="order" property="total"/>. <br>
    18 </body>
    19 </html>
    order

    应用举例二
    通过上面的示例,我们知道JSP 标准动作是使用JavaBean 完成了数据的获取和对数据的封
    装。那JSP 标准动作是如何调用JavaBean 的呢?
    在 test 包下创建SimpleBean.java,代码如下面示例所示。

     1 package y2javaee.sg.ch07;
     2 public class SimpleBean {
     3 private String name = null;
     4 private int age = 20;
     5 public SimpleBean() {
     6 System.out.println("调用无参构造方法,创建实例!!!");
     7 }
     8 public String getName() {
     9 System.out.println("调用了getName()方法,获取name 值");
    10 return name;
    11 }
    12 public void setName(String username) {
    13 name = username;
    14 System.out.println("调用了setName()方法,设置name 值");
    15 }
    16 public int getAge() {
    17 System.out.println("调用了getAge()方法,获取age 值");
    18 return age;
    19 }
    20 public void setAge(int userage) {
    21 age = userage;
    22 System.out.println("调用了setAge()方法,设置age 值");
    23 }
    24 }
    View Code

    在 SimpleBean.java 中的构造方法和getter/setter 方法中,都加入了在控制台输出的语句。
    这样方便我们查看JSP 标准动作是如何调用JavaBean 的。接下来,在WebRoot 下的test 文件夹
    下,创建output.jsp 文件,内容如下面示例所示。

     1 <%@page contentType="text/html; charset=GBk"%>
     2 <html>
     3 <head>
     4 <title>在 JSP 中使用 JavaBean</title>
     5 <jsp:useBean id="bean" class="y2javaee.sg.ch07.SimpleBean" scope="request"/>
     6 <jsp:setProperty name="bean" property="name" value="<%= request.getPara
     7 meter("username") %>"/>
     8 <jsp:setProperty name="bean" property="age" value="25"/>
     9 </head>
    10 <body> 姓名:
    11 <jsp:getProperty name="bean" property="name"/> <br/>
    12 年龄:
    13 <jsp:getProperty name="bean" property="age"/>
    14 </body>
    15 </html>
    View Code

    在 output.jsp 文件中,使用JSP 标准动作来创建Simplebean 对象bean,并对bean 的name
    和age 属性进行赋值,再把属性值取出,并显示在页面上。在浏览器的地址栏内输入
    “http://localhost:8080/store/ch07/output.jsp?username=accp”,显示结果

    在显示结果中 我们可以看出SP 标准动作useBean 时,调用了JavaBean 的无参的构造
    方法,而在执行setProperty 动作时,调用了JavaBean 的setter 方法,同样,在执行getProperty
    时,执行的是getter 方法。这也就是为什么在定义一个JavaBean 时,一定要满足特定的要求。

    <jsp:include> 动态包含,将被包含页面的结果包含进来。先处理,在包含

    (把指定文件插入正在生成的页面中 )

     语法:

    <jsp:inclue page="url">

    url:引入页面-

    <%@include%>静态包含,将被包含的页面的内容包含进来。先包含再处理

    要导入下边这些标签必须使用静态包含否则会报错

    <jsp:useBean id="newsDao" class="com.pb.newsdaoImpl.NewsDaoImpl" scope="page"/>
    <jsp:useBean id="newsService" class="com.pb.news.services.serviceImpl"  scope="page"/>
    <jsp:setProperty property="newsdao" name="newsService" value="<%=newsDao%>"/>
    标签

    页面的跳转
    request.getRequestDispatcher().forward()转发

    response.sendRedirect() 重定向

    <jsp:forward>与转发相同

  • 相关阅读:
    迭代器&可迭代对象
    递归&栈帧空间
    locals()和globals()
    闭包
    nonlocal和global
    LEGB
    python中编码问题
    关于dict的formkeys方法注意
    深浅拷贝
    通过远程连接批量查看zookeeper服务状态和判断主从节点
  • 原文地址:https://www.cnblogs.com/wanghongjie/p/4567784.html
Copyright © 2011-2022 走看看