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

被折叠的 条评论
为什么被折叠?



