`
zhangjingqiang
  • 浏览: 71853 次
  • 性别: Icon_minigender_1
  • 来自: 东京
社区版块
存档分类
最新评论

中规模应用的开发(二)

    博客分类:
  • Java
阅读更多

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

分享到:
评论

相关推荐

    Buck在大规模iOS开发中的应用实践

    在大规模iOS开发中,Buck构建工具的应用实践逐渐成为行业内的一个热点话题。随着iOS应用项目的增长,无论是从代码量、团队规模、还是构建速度和效率等方面,都对现有的构建系统提出了更高的要求。在这篇关于《BUCK在...

    亚马逊大规模应用机器学习的MLOps实践.pdf

    亚马逊的大规模应用机器学习实践,展示了MLOps在机器学习模型开发和部署中的重要性。MLOps能够提高机器学习模型的质量和稳定性,提高开发效率和部署速度,降低开发成本和维护成本。 知识点: 1. 机器学习的生命...

    《ANSYS_APDL高级工程应用实例分析与二次开发》-周宁-命令流

    《ANSYS APDL高级工程应用实例分析与二次开发》是由周宁编著的一本专业书籍,专注于探讨ANSYS软件中的高级应用技巧,特别是基于APDL(ANSYS参数化设计语言)的工程问题解决方法和二次开发技术。APDL是ANSYS软件的...

    自己开发的简单桌面应用

    标题中的“自己开发的简单桌面应用”表明这是一个个人或独立开发者创建的计算机程序,主要设计为在用户桌面环境中运行。这种应用通常具有特定的功能,旨在解决用户日常操作中的一些问题或者提供某种服务。 描述中的...

    CAD二次开发在饲料加工工艺流程设计中的应用.pdf

    AutoCAD2005作为开发平台,在其上进行二次开发主要通过VBA(Visual Basic for Applications)编程实现,该技术作为Microsoft Office应用程序中的自动化语言,同样适用于AutoCAD平台。二次开发的内容包括但不限于创建...

    服务器端应用开发,适合二次开发vs2015(c#)

    在服务器端应用开发中,C# 语言与Visual Studio 2015(VS2015)的组合是常用的选择,尤其对于那些需要进行二次开发的项目。C# 是一种面向对象的编程语言,由微软公司推出,设计用于.NET框架,支持多种编程范式,包括...

    CATIA应用开发教程.zip_CATIA 二次开发_CATIA二次开发_caa_catia_catia 二次开发

    本教程《CATIA应用开发教程.doc》应该会详细介绍以上这些知识点,并通过实例演示如何进行具体的二次开发操作。学习并掌握这些内容,将使用户具备独立构建CATIA插件的能力,提升工作效率,实现个性化和专业化的设计...

    sql 应用开发 参考手册

    《SQL应用开发参考手册》是郭鑫所著的一本针对SQL语言在实际应用中的开发指南。这本书涵盖了SQL的基础概念、语法、以及在不同场景下的高级应用,旨在帮助开发者更好地理解和运用SQL进行数据处理和数据库管理。 一、...

    Hadoop应用开发与案例实战(慕课版)-课件PPT.rar

    在Hadoop应用开发中,数据预处理是关键步骤,包括数据清洗、转换、归一化等,以确保数据质量和处理效率。 6. 案例分析: 课程中的案例实战部分可能涵盖电商数据分析、日志处理、推荐系统等,通过实际场景的应用,...

    HBase应用开发

    表设计是HBase应用开发中的一个关键环节,需要理解业务表设计的基本原则。设计时要考虑到RowKey的设计、表结构的规划、列族的定义等,这些因素都会对数据的存储效率和访问性能产生影响。 在学习HBase应用开发的过程...

    金蝶k3二次开发平台应用方案

    企业由于行业不同、规模不同、管理者的管理理念不同,导致管理重点有差异,企业管 理呈多样性。传统的管理软件由于其设计水平有限,已很难满足用户的个性化需求,而专项 开发在时间上不可能适应企业管理的多变性, ...

    MapGIS开发平台二次开发.pdf

    MapGIS二次开发服务与资源是基于MapGIS IGSS的二次开发服务与资源,提供了一个高效、可靠、跨平台的开发框架,实现二次开发的应用开发。该平台提供了多种二次开发服务和资源,实现二次开发的快速开发和部署。 ...

    rhino二次开发学习资料

    4. **图形用户界面(GUI)**:在二次开发中,创建直观的用户界面至关重要。Rhino的API允许开发者创建自定义对话框和控件,以增强用户体验。 5. **文件导入导出**:通过二次开发,开发者可以扩展Rhino对不同格式文件...

    Java中间件技术及其应用开发

    同时,了解如何配置、优化和监控这些中间件,以确保系统的稳定性和高效运行,是Java中间件技术及其应用开发中的关键技能。通过深入学习和实践,开发者可以构建出满足高并发、高性能、高可维护性要求的企业级应用。

    MapReduce应用开发

    在华为提供的培训资料中,我们得到了关于MapReduce应用开发的详细说明,包括它的定义、应用场景、开发过程以及一个典型程序——WordCount的实现。 首先,MapReduce定义上可以被理解为三层含义的集合。它是一个基于...

    2020年中国移动应用趋势洞察白皮书——开发与营销篇.pdf

    2. 跨系统开发工具的普及:随着React Native和Flutter等跨平台开发工具的发展,它们在多系统兼容性、节约开发资源、快速部署和保证用户体验方面的优势明显,使得这些工具成为了开发中的新热点。 二、移动应用服务...

    Java Web数据库系统应用开发与实例源代码

    2. **数据库系统**:在Java Web应用中,常见的数据库管理系统如MySQL,它是一个开源、轻量级的关系型数据库,适合中小规模应用。连接MySQL通常使用JDBC(Java Database Connectivity),它是Java平台的标准接口,...

Global site tag (gtag.js) - Google Analytics