中规模应用的开发(二)

BookStore\src\main\webapp\WEB-INF
applicationContext.xml

<?xml version="1.0"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd
		   http://www.springframework.org/schema/tx
		   http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
		   http://www.springframework.org/schema/aop
		   http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
           
	<!-- SessionFactory -->
	<bean id="sessionFactory"
	    	class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource">
			<ref bean="dataSource"/>
		</property>
		<property name="annotatedClasses">
			<list>
				<value>bookstore.pbean.TBook</value>
				<value>bookstore.pbean.TCustomer</value>
				<value>bookstore.pbean.TOrder</value>
				<value>bookstore.pbean.TOrderDetail</value>
			</list>
		</property>
		<property name="annotatedPackages">
			<list>
				<value>bookstore.pbean</value>
			</list>
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
				<prop key="hibernate.show_sql">true</prop>
				<prop key="hibernate.format_sql">true</prop>
			</props>
		</property>
	</bean>


	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName">
			<value>org.postgresql.Driver</value>
		</property>
		<property name="url">
			<value>jdbc:postgresql://localhost:5432/BookStore</value>
		</property>
		<property name="username">
			<value>okada</value>
		</property>
		<property name="password">
			<value>okada</value>
		</property>
	</bean>


	<!-- TransactionManager -->
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory"><ref local="sessionFactory" /></property>
	</bean>

	<!-- enable the configuration of transactional behavior based on annotations -->
	<tx:annotation-driven transaction-manager="transactionManager"/>


	<!-- DAO -->
	<bean id="BookDAOBId" class="bookstore.dao.hibernate.BookDAOImpl">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>
	
	<bean id="CustomerDAOBId" class="bookstore.dao.hibernate.CustomerDAOImpl">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>
	
	<bean id="OrderDAOBId" class="bookstore.dao.hibernate.OrderDAOImpl">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>
	
	<bean id="OrderDetailDAOBId" class="bookstore.dao.hibernate.OrderDetailDAOImpl">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>
	
	
	<!-- Logic Layer -->
	<bean id="LogicCustomerBId" class="bookstore.logic.CustomerLogicImpl">
		<property name="customerdao">
			<ref local="CustomerDAOBId" />
		</property>
	</bean>

	<bean id="LogicBookBId" class="bookstore.logic.BookLogicImpl">
		<property name="bookdao">
			<ref local="BookDAOBId" />
		</property>
	</bean>

	<bean id="LogicOrderBId" class="bookstore.logic.OrderLogicImpl">
		<property name="bookdao">
			<ref local="BookDAOBId" />
		</property>
		<property name="customerdao">
			<ref local="CustomerDAOBId" />
		</property>
		<property name="orderdao">
			<ref local="OrderDAOBId" />
		</property>
		<property name="orderdetaildao">
			<ref local="OrderDetailDAOBId" />
		</property>
	</bean>


	<!-- Struts Action -->
	<bean name="/CreateUser" class="bookstore.action.CreateUserAction">
		<property name="customerLogic">
			<ref local="LogicCustomerBId" />
		</property>
	</bean>

	<bean name="/Login" class="bookstore.action.LoginAction">
		<property name="customerLogic">
			<ref local="LogicCustomerBId" />
		</property>
		<property name="bookLogic">
			<ref local="LogicBookBId" />
		</property>
	</bean>

	<bean name="/AddToCartAction" class="bookstore.action.AddToCartAction">
		<property name="bookLogic">
			<ref local="LogicBookBId" />
		</property>
	</bean>

	<bean name="/CheckoutAction" class="bookstore.action.CheckoutAction">
		<property name="bookLogic">
			<ref local="LogicBookBId" />
		</property>
	</bean>

	<bean name="/OrderAction" class="bookstore.action.OrderAction">
		<property name="orderLogic">
			<ref local="LogicOrderBId" />
		</property>
		<property name="customerLogic">
			<ref local="LogicCustomerBId" />
		</property>
	</bean>

	<bean name="/SearchAction" class="bookstore.action.SearchAction">
		<property name="bookLogic">
			<ref local="LogicBookBId" />
		</property>
	</bean>
</beans>

struts-config.xml

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
        "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>

	<form-beans>
		<form-bean	name="CreateUserActionName"
					type="bookstore.action.bean.CreateUserActionFormBean" />
		<form-bean	name="LoginActionName"
					type="bookstore.action.bean.LoginActionFormBean" />
		<form-bean	name="AddToCartActionName"
					type="bookstore.action.bean.AddToCartActionFormBean" />
		<form-bean	name="SearchActionName"
					type="bookstore.action.bean.SearchActionFormBean" />
	</form-beans>

	<global-forwards>
		<forward name="illegalSession" path="/sessionError.vm" />
	</global-forwards>
	
	<action-mappings>
		<action	path="/CreateUser"
				type="org.springframework.web.struts.DelegatingActionProxy"
				name="CreateUserActionName"
				scope="request"
				validate="true"
				input="/createAccount.vm" >
				<forward name="UserCreated" path="/index.vm" />
				<forward name="illegalCreateUser" path="/createAccount.vm" />
		</action>

		<action	path="/Login"
				type="org.springframework.web.struts.DelegatingActionProxy"
				name="LoginActionName"
				scope="request" >
				<forward name="LoginSuccess" path="/BookStore.vm" />
				<forward name="illegalLogin" path="/index.vm" />
		</action>

		<action	path="/AddToCartAction"
				type="org.springframework.web.struts.DelegatingActionProxy"
				name="AddToCartActionName"
				scope="request" >
				<forward name="Continue" path="/BookStore.vm" />
		</action>		
		
		<action	path="/CheckoutAction"
				type="org.springframework.web.struts.DelegatingActionProxy"
				name="CheckoutActionName"
				scope="request" >
				<forward name="ToCheck" path="/Check.vm" />
				<forward name="illegalCheckout" path="/BookStore.vm" />
		</action>

		<action	path="/OrderAction"
				type="org.springframework.web.struts.DelegatingActionProxy"
				name="OrderActionName"
				scope="request" >
				<forward name="OrderSuccess" path="/Order.vm" />
		</action>

		<action	path="/SearchAction"
				type="org.springframework.web.struts.DelegatingActionProxy"
				name="SearchActionName"
				scope="request" >
				<forward name="SearchSuccess" path="/BookStore.vm" />
		</action>
	</action-mappings>


	<message-resources	parameter="ApplicationResources"
						key="org.apache.struts.action.MESSAGE" />
	<message-resources	parameter="MessageResources" />
	
	<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
		<set-property property="contextConfigLocation"
							value="/WEB-INF/applicationContext.xml"/>
	</plug-in>
</struts-config>

toolbox.xml

<?xml version="1.0"?>
<toolbox>

  <tool>
     <key>math</key>
     <scope>application</scope>
     <class>org.apache.velocity.tools.generic.MathTool</class>
  </tool>

  <tool>
     <key>link</key>
     <scope>request</scope>
     <class>org.apache.velocity.tools.struts.StrutsLinkTool</class>
  </tool>

  <!-- ordinarily the SecureLinkTool would simply replace the StrutsLinkTool
  	if SSL Ext. is in use - in that case the key would be 'link' but it's
        'slink' here to distinguish between the two. -->
  <tool>
     <key>slink</key>
     <scope>request</scope>
     <class>org.apache.velocity.tools.struts.SecureLinkTool</class>
  </tool>

  <tool>
     <key>text</key>
     <scope>request</scope>
     <class>org.apache.velocity.tools.struts.MessageTool</class>
  </tool>

  <tool>
     <key>errors</key>
     <scope>request</scope>
     <class>org.apache.velocity.tools.struts.ErrorsTool</class>
  </tool>

  <tool>
     <key>messages</key>
     <scope>request</scope>
     <class>org.apache.velocity.tools.struts.ActionMessagesTool</class>
  </tool>

  <tool>
     <key>form</key>
     <scope>request</scope>
     <class>org.apache.velocity.tools.struts.FormTool</class>
  </tool>

  <tool>
     <key>tiles</key>
     <scope>request</scope>
     <class>org.apache.velocity.tools.struts.TilesTool</class>
  </tool>

  <tool>
     <key>validator</key>
     <scope>request</scope>
     <class>org.apache.velocity.tools.struts.ValidatorTool</class>
  </tool>

</toolbox>

velocity.properties

default.contentType=text/html; charset=Windows-31J
input.encoding=Windows-31J
output.encoding=Windows-31J

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>BookStore Application</display-name>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

  	<servlet>
		<servlet-name>action</servlet-name>
		<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

		<init-param>
			<param-name>config</param-name>
			<param-value>/WEB-INF/struts-config.xml</param-value>
		</init-param>
 
		<init-param>
			<param-name>debug</param-name>
			<param-value>2</param-value>
		</init-param>

		<init-param>
			<param-name>detail</param-name>
			<param-value>2</param-value>
		</init-param>

		<load-on-startup>2</load-on-startup>
	</servlet>
	
	<servlet>
		<servlet-name>velocity</servlet-name>
		<servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class>
		<init-param>
			<param-name>org.apache.velocity.toolbox</param-name>
			<param-value>/WEB-INF/toolbox.xml</param-value>
		</init-param>
		<init-param>
			<param-name>org.apache.velocity.properties</param-name>
			<param-value>/WEB-INF/velocity.properties</param-value>
		</init-param>
		<load-on-startup>10</load-on-startup>
	</servlet>	
	
 	<servlet-mapping>
		<servlet-name>action</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>
 
 	<servlet-mapping>
		<servlet-name>velocity</servlet-name>
    	<url-pattern>*.vm</url-pattern>
	</servlet-mapping>
</web-app>

BookStore\src\main\webapp
BookStore.vm

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
</head>

<body>

	<center>
	<h2>商品一覧</h2>
	</center>
	<br>
	<form method="post"
		action="$link.setAction( "/SearchAction" )">
		検索: <input type="text" name="keyword"/>
		<input type="submit" value="検索" />
	</form>
	#if( $messages.exist() )
		<br>
		<font color="red">
			$messages.get( "productalart" )
		</font>
		<br>
	#end
<form method="post"
		action="$link.setAction( "/AddToCartAction" )">
 
	<table border="1">

    #foreach ( $item in $ProductListView )

		<tr>
		<th rowspan="2">
			
		<input type="checkbox" name="selecteditems" value="$item.isbn"
				#if( $item.selected ) checked #end > 
		</th>
		<td colspan="3">
		$item.title
		</td>
	</tr>
	<tr>
		<td>
		$item.author
		</td>
		<td>
		$item.publisher
		</td>
		<td>
		$item.price 円
		</td>
	</tr>
 
    #end
	
	
	</table>	
	<br>

	<input type="submit" value="カートに追加" />

</form>

<form method="post" action="$link.setAction( "/CheckoutAction" )">
	<input type="submit" value="商品購入" />
</form>

</body>

</html>

Check.vm

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
</head>

<body>

	<center>
	<h2>購入商品</h2>
	</center>

	<br><br>
	
	以下が購入する商品と合計です。
	<br>
	<table border="1">
	
	#foreach ( $item in $ItemsToBuy.selecteditems )
		#if( $item.selected )
		<tr>
			<td>
				$item.title
			</td>
		
			<td>
				$item.author
			</td>
		</tr>
		<tr>
			<td>
				$item.publisher
			</td>
		
			<td>
				$item.price
			</td>
		</tr>
		#end
	#end
	</table>
	<br>
	<br>
	合計: $ItemsToBuy.total 円

	<form method="post"
		action="$link.setAction( "/OrderAction" )">
		<input type="submit" value="注文する" />
	</form>

</body>

</html>

createAccount.vm

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
</head>

<body>

	<center>
	<h2>アカウント作成</h2>
	</center>

	<form	action="$link.setAction( "/CreateUser" )"
			method="post">
		氏名: <input type="text" name="name" /><br>
		E-Mail: <input type="text" name="email" /><br>
		ログイン名: <input type="text" name="account" /><br>
		パスワード: <input type="password" name="passwd" /><br>
		パスワード(確認): <input type="password" name="passwd2" /><br>
		<input type="submit" value="アカウント作成" />
		<input type="reset" value="リセット"/>
	</form>
	#if( $messages.exist() )
		<br>
		<font color="red">
			$messages.get( "illegalcreateuser" )
		</font>
		<br>
	#end

	#if( $errors.exist() )
		<br>
		<font color="red">
			$errors.get( "illegalcreateuser" )
		</font>
		<br>
	#end

	<a href="$link.setRelative("/index.vm" )">トップへ</a>

</body>

</html>

index.vm

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
</head>

<body>

	<center>
	<h2>ログイン</h2>
	</center>

	<form	action="$link.setAction( "/Login" )"
			method="post">
		ログイン名: <input type="text" name="account" /><br>
		パスワード: <input type="password" name="passwd" /><br>
		<input type="submit" value="ログイン" />
		<input type="reset" value="リセット"/>
		<br>
		#if( $messages.exist() )
			<font color="red">
				$messages.get( "illegallogin" )
			</font>
		#end
		<br>
		アカウントを作成していない人は
			<a href="$link.setRelative( "/createAccount.vm" )">こちら</a>
	
	</form>

</body>

</html>

Order.vm

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
</head>

<body>

	<center>
	<h2>注文確認</h2>
	</center>

	<br><br>
	
	以下のとおり、注文を受け付けました。
	<br>
	商品:
	<br>
	<table border="1">
	
	#foreach ( $item in $ItemsToBuy.selecteditems )
		#if( $item.selected )
		<tr>
			<td>
				$item.title
			</td>
		
			<td>
				$item.author
			</td>
		</tr>
		<tr>
			<td>
				$item.publisher
			</td>
		
			<td>
				$item.price
			</td>
		</tr>
		#end
	#end
	</table>
	<br>
	<br>
	合計: $ItemsToBuy.total 円
	<br>
	<br>
	<br>
	お客様情報
	<br>
	<br>
	UserID:	$Customer.uid	<br>
	氏名:	$Customer.name	<br>
	E-Mail:	$Customer.email	<br>

	<br>
	<a href="$link.setRelative( "/index.vm" )">トップに戻る</a>
</body>

</html>

sessionError.vm

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=Windows-31J">
</head>

<body>

	<center>
	<h2>セッション エラー</h2>
	</center>
	<br>
	<br>
	セッション情報が不正です。アクセスが不正か、セッションが
	タイムアウトしました。
	<br>
	<br>
	<a href="$link.setRelative( "/index.vm" )">トップ</a>に戻る。	

</body>

</html>

BookStore\src\test\java

(Null)

BookStore\target\classes

(生成的classes,略)

BookStore\target\test-classes

(Null)

BookStore\target

mvn-eclipse-cache.properties

#Temporary index for unavailable sources and javadocs
#Sun Dec 07 21:28:00 JST 2008
junit\:junit\:3.8.1\:javadoc=true
junit\:junit\:3.8.1\:sources=true

(欲知前事如何,请见

代码来自日本的技术图书http://www.shuwasystem.co.jp/products/7980html/2197.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值