【javaWeb】Bean包中简单说明应用

jsp:useBean

jsp:useBean用来加载JSP页面中的JavaBean 使用语法如下

<jsp:useBean
id="beanInstanceName"
scope="page|request|session|application"
class="package.class"
type=“指定应用该对象的变量类型,他必须是Bean类的名称,超类的名称,该类所实现接口名字之一。记住变量的名字是由id属性所指定的”
beanName=“指定Bean的名称,如果提供了type和beanName的属性,允许省略class属性”、、后两者属性不常用。
><useBean/>

其中id指明该JavaBean的实例变量的名称,scope指定该bean变量的有效范围,

  1. page仅仅在该页面有效。

  2. request在本次请求有效。

  3. session在本次回话有效

4.    application在服务器运行期间一直有效。  

Bean在自己的域内只加载一次!!!

scope之所以很重要是因为jsp:useBean只在不存在相同id和scope的对象时才会实例化出新的对象,如果已有id和scope都相同的对象,则直接使用已有的对象,此时jsp:useBean开始标记和结束标记之间的任何内容都将被忽略。


  jsp:setProperty

      jsp:setProperty可以设置已经实例化的bean对象的属性(每次使用useBean就为创建了一个实例),他有两方法:

第一在jsp:useBean 元素的后面使用jsp:setProperty。

<jsp:useBean id="myName"..../>
......
<jsp:setProperty name="*">//在此可以把所有请求提交过来的链接里的参数和bean中一一对应的赋值,前提是bean中和///请求的的元素名字一样,包括大小写也一样。
<jsp:setProperty name="myName" property="bean中属性器的名称,如果是setName则是name与bean中属性无关">
<jsp:setProperty name="myName" property="bean中属性的名称" value="可以指定bean中元素的值">
<jsp:setProperty name="myName" property=“bean中属性的名称” param="指定request中提交参数的名称">

      在上面设置参数过程中,name属性,property属性是必须有的,value和param是选填的。

第二种是直接把<jsp:setProperty >放入到jsp:useBean的元素内部。

<jsp:useBean id="myName">
....
<jsp:setProperty name="myName" property="bean中属性的名称">
<jsp:useBean/>

     此时只有在新建实例bean的时候会执行,如果使用现有的实例,则不执行<jsp:setBean>


jsp:getProperty

  jsp:getProperty可以获取Bean的值,用于在页面显示。语法格式为

<jsp:getProperty name="beanInstanceName" property="propertyNAME">

  name="已经存在bean实例的名称"

  property=“指定bean中的属性名称”

注意事项

  1. 不能检索一个已经被检索一次的属性,也就是说一个实例中的属性只能被检索一次。

  2. 如果getProperty 检索出来的是空值,则系统会抛出NullPointException。


font

转载于:https://my.oschina.net/anyyang/blog/302330

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
servlet+jsp+javaBean开发的网站书店(完整源码) java,jsp,web,servlet,j网上商城源码 package com.lovo.cq.shopping10_1.daoimpl; import com.lovo.cq.shopping10_1.common.DbUtil; import com.lovo.cq.shopping10_1.dao.OrderDao; import com.lovo.cq.shopping10_1.po.Order; import com.lovo.cq.shopping10_1.po.OrderItem; import com.lovo.cq.shopping10_1.po.User; import java.sql.*; import java.util.ArrayList; import java.util.List; public class OrderDaoImpl implements OrderDao { /** * 添加订单,并返回订一个单号 * @param order 一个订单 * @return int 返回一个整型的订单号 */ public int addOrder(Order order) { int orderId = 0; PreparedStatement pstmt_order = null; //用于对订单进行操作的预定义语句 PreparedStatement pstmt_item = null; //用于对订单项进行操作的预定义语句 ResultSet rs = null; DbUtil dbUtil = null; String sql_order = "insert into tb_order values(null,?,?,?,?,?,null,?)"; try { //事物处理 dbUtil = new DbUtil(); dbUtil.getCon().setAutoCommit(false); //将订单的数据录入数据库 pstmt_order = dbUtil.getCon().prepareStatement(sql_order); pstmt_order.setString(1, order.getUser().getName()); pstmt_order.setString(2, order.getUser().getAddress()); pstmt_order.setString(3, order.getRecvName()); pstmt_order.setString(4, order.getUser().getPostcode()); pstmt_order.setString(5, order.getUser().getEmail()); pstmt_order.setInt(6,order.getFlag() ); pstmt_order.executeUpdate(); rs = pstmt_order.getGeneratedKeys();//取得主键 rs.next(); orderId = rs.getInt(1); //返回一个订单号 //将订单项的数据录入数据库 String sql_item = "insert into tb_orderItem values(null,?,?,?,?,?)"; pstmt_item = dbUtil.getCon().prepareStatement(sql_item); List orderItem = order.getOrderItem();//得到所有订单项 for(int i=0;i<orderItem.size();i++) { OrderItem orderItems = (OrderItem)orderItem.get(i); pstmt_item.setInt(1, orderId); pstmt_item.setInt(2, orderItems.getBookId()); pstmt_item.setString(3, orderItems.getBookName()); pstmt_item.setFloat(4, orderItems.getPrice()); pstmt_item.setInt(5, orderItems.getBookNum()); pstmt_item.addBatch(); } pstmt_item.executeBatch(); dbUtil.getCon().commit(); } catch (SQLException e) { e.printStackTrace(); try { dbUtil.getCon().rollback(); } catch (SQLException e1) { e1.printStackTrace(); } }finally { try { rs.close(); pstmt_order.close(); pstmt_item.close(); dbUtil.close(); } catch (SQLException e) { e.printStackTrace(); } } return orderId; } //根据当前用户的用户名查订单 public List selectOrder(String name) { List list = new ArrayList(); Order or = null ; DbUtil dao = new DbUtil(); PreparedStatement pre = null; ResultSet re = null; String sql = "select * from tb_order where name=?"; try { pre = dao.getCon().prepareStatement(sql); pre.setString(1, name); re =pre.executeQuery(); while(re.next()){ or = new Order (); User user = new User(); or.setOrderId(re.getInt("orderId")); user.setName(re.getString("name")); or.setRecvName(re.getString("recvName")); user.setAddress(re.getString("address")); user.setPostcode(re.getString("postcode")); user.setEmail(re.getString("email")); or.setUser(user); or.setOrderDate(re.getString("orderDate")); or.setFlag(re.getInt("flag")); list.add(or); } } catch (SQLException e) { e.printStackTrace(); } return list; } // 根据订单号查订单项 public List selectOrderItem(int id ) { List list = new ArrayList(); OrderItem ordetrItem = null ; DbUtil dao = new DbUtil(); PreparedStatement pre = null; ResultSet re = null; String sql = "select * from tb_orderItem where orderId = ? "; try{ pre = dao.getCon().prepareStatement(sql); pre.setInt(1, id); re =pre.executeQuery(); while(re.next()){ ordetrItem = new OrderItem(); ordetrItem.setBookId(re.getInt("bookId")); ordetrItem.setBookName(re.getString("bookName")); ordetrItem.setBookNum(re.getInt("bookNum")); ordetrItem.setOrderId(re.getInt("orderId")); ordetrItem.setOrderItemId(re.getInt("orderItemId")); ordetrItem.setPrice(re.getFloat("price")); list.add(ordetrItem); } }catch (Exception e) { } return list; } }
在Java Web开发,"bean"通常用来指代封装数据的对象。根据不同的作用和功能,Javabean可以有不同的术语。例如,用于接收前端数据并封装成查询对象的称为QO(Query Object),用于表示值对象的称为VO(Value Object),用于对应数据库表的称为PO(Persistent Object),而仅仅作为间件的简单无规则Java对象则称为POJO(Plain Ordinary Java Object)。 在Java Web开发,我们常常会使用JavaBean来封装数据,以便在不同的组件和模块传递和处理数据。JavaBean可以是一个类,具有私有的属性和公共的getter和setter方法,还可以实现一些特定的接口如BeanPostProcessor或FactoryBean等。例如,BeanPostProcessor是一个后置处理器,它提供了在bean初始化方法之前和之后执行一些逻辑的能力。通过实现BeanPostProcessor接口,我们可以在bean初始化之前和之后对bean进行一些自定义的处理操作。 此外,还有一种特殊类型的bean叫做工厂bean(FactoryBean),它是一个用于创建其他beanbean。工厂bean类实现了FactoryBean接口,并重写了getObject方法用于创建实例。然后,我们可以将工厂bean定义为Spring容器的一个bean,通过调用getObject方法来获取由工厂bean创建的实例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [JavaWeb开发(三)3.3——Spring Bean详解(基于XML方式)](https://blog.csdn.net/qq_36216193/article/details/128687184)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [JavaWeb的各种bean](https://blog.csdn.net/weixin_43894879/article/details/110404455)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值