分享
 
 
 

read-JpetStore-2-进入JPetstore

王朝java/jsp·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

● 进入JpetStore

Ø <a href="shop/index.do">

Ø Struts 中的配置

<action path="/shop/index" type="org.springframework.samples.jpetstore.web.struts.DoNothingAction"

validate="false">

<forward name="success" path="/WEB-INF/jsp/struts/index.jsp"/>

</action>

Ø URL访问:

http://127.0.0.1:8080/jpetstore/shop/index.do

● 所有Action的基类BaseAction

/**

* JPetStore中所有Struts action 的基类。

* 它通过ServletContext查找Spring WebApplicationContext,

* 并且从WebApplicationContext获得PetStoreFacade的实现,使得子类通过protected的

* getter方法获得并调用PetStoreFacade。

*/

public abstract class BaseAction extends Action {

private PetStoreFacade petStore;

public void setServlet(ActionServlet actionServlet) {

super.setServlet(actionServlet);

if (actionServlet != null) {

ServletContext servletContext = actionServlet.getServletContext();

WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);

this.petStore = (PetStoreFacade) wac.getBean("petStore");

}

}

protected PetStoreFacade getPetStore() {

return petStore;

}

}

● PetStoreFacade bean Spring定义

Ø <bean id="petStore" parent="baseTransactionProxy">

<property name="target">

<bean class="org.springframework.samples.jpetstore.domain.logic.PetStoreImpl">

<property name="accountDao"><ref bean="accountDao"/></property>

<property name="categoryDao"><ref bean="categoryDao"/></property>

<property name="productDao"><ref bean="productDao"/></property>

<property name="itemDao"><ref bean="itemDao"/></property>

<property name="orderDao"><ref bean="orderDao"/></property>

</bean>

</property>

</bean>

Ø在这使用了代理模式,所有的操作委托给PetStoreFacade,又PetStoreFacade再将具体操作委托给具体DAO。

public interface PetStoreFacade {

Account getAccount(String username);

Account getAccount(String username, String password);

void insertAccount(Account account);

void updateAccount(Account account);

List getUsernameList();

List getCategoryList();

Category getCategory(String categoryId);

List getProductListByCategory(String categoryId);

List searchProductList(String keywords);

Product getProduct(String productId);

List getItemListByProduct(String productId);

Item getItem(String itemId);

boolean isItemInStock(String itemId);

void insertOrder(Order order);

Order getOrder(int orderId);

List getOrdersByUsername(String username);

}

Ø PetStoreImpl类

这个类为我们提供了5个DAO对象,它减弱了对具体的持续化API的依赖,以此,虽然Jpetstore使用了iBATIS作为持续化的数据对象控制,但是,也可以使用其他的对象映射工具替代iBATIS,而做这些改动时,不需要改变PetStoreImpl类。

DAOs通过Spring提供的依赖注入功能,使得这些DAOs对Jpetstore可用,在这里使用Setter注入方法,Getter方法时可选的,但你也可以任意的扩展。

PetStoreImpl在JPetStore中只有一个实例对象,用Spring的术语来说,它是一个单例对象。

在Spring中的单例对象不需要像传统的单例设计模式中那样,提供私有的构造函数,静态工厂方法等实现。只需要简单的申明配置就好,其他的交给Spring去做。

PetStoreImpl是一个简单的POJO,它不依赖任何的Spring APIs,即便不在Spring容器中,它也可以正常的使用。

PetStoreImpl类为所有的方法定义了一个默认的事务管理属性。该属性只有在使用Commons Attributes autoproxying时才会被用到,而对于TransactionFactoryProxyBean的使用则要求你提供任何附加的属性定义,只是使用就好了。

public class PetStoreImpl implements PetStoreFacade, OrderService {

//JPetStore涉及到的主要的DAO对象

private AccountDao accountDao;

private CategoryDao categoryDao;

private ProductDao productDao;

private ItemDao itemDao;

private OrderDao orderDao;

public void setAccountDao(AccountDao accountDao) {

this.accountDao = accountDao;

}

public void setCategoryDao(CategoryDao categoryDao) {

this.categoryDao = categoryDao;

}

public void setProductDao(ProductDao productDao) {

this.productDao = productDao;

}

public void setItemDao(ItemDao itemDao) {

this.itemDao = itemDao;

}

public void setOrderDao(OrderDao orderDao) {

this.orderDao = orderDao;

}

public Account getAccount(String username) {

return this.accountDao.getAccount(username);

}

public Account getAccount(String username, String password) {

return this.accountDao.getAccount(username, password);

}

public void insertAccount(Account account) {

this.accountDao.insertAccount(account);

}

public void updateAccount(Account account) {

this.accountDao.updateAccount(account);

}

public List getUsernameList() {

return this.accountDao.getUsernameList();

}

public List getCategoryList() {

return this.categoryDao.getCategoryList();

}

public Category getCategory(String categoryId) {

return this.categoryDao.getCategory(categoryId);

}

public List getProductListByCategory(String categoryId) {

return this.productDao.getProductListByCategory(categoryId);

}

public List searchProductList(String keywords) {

return this.productDao.searchProductList(keywords);

}

public Product getProduct(String productId) {

return this.productDao.getProduct(productId);

}

public List getItemListByProduct(String productId) {

return this.itemDao.getItemListByProduct(productId);

}

public Item getItem(String itemId) {

return this.itemDao.getItem(itemId);

}

public boolean isItemInStock(String itemId) {

return this.itemDao.isItemInStock(itemId);

}

public void insertOrder(Order order) {

this.orderDao.insertOrder(order);

this.itemDao.updateQuantity(order);

}

public Order getOrder(int orderId) {

return this.orderDao.getOrder(orderId);

}

public List getOrdersByUsername(String username) {

return this.orderDao.getOrdersByUsername(username);

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有