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>与转发相同

原文地址:https://www.cnblogs.com/wanghongjie/p/4567784.html