小规模应用的开发

init:

initdb

dropdb BookStore

createdb -U okada BookStore

init-table

drop sequence hibernate_sequence;

drop table t_order_detail;
drop table t_order;
drop table t_book;
drop table t_customer;


create sequence hibernate_sequence;

create table t_customer(
	id integer default nextval( 'hibernate_sequence' )
		primary key unique not null,
	uid	text not null unique,
	passwordmd5 text not null,
	name text not null,
	email text not null );


create table t_book(
	id integer default nextval( 'hibernate_sequence' )
		primary key unique not null,
	isbn text not null unique,
	title text not null,
	author text not null,
	publisher text not null,
	price integer not null );



create table t_order(
	id integer default nextval( 'hibernate_sequence' )
		primary key unique not null,
	customer_id_fk integer not null
		constraint order_customer_id_constraint
			references t_customer(id),
	orderday timestamp with time zone not null );
	


create table t_order_detail(
	id integer default nextval( 'hibernate_sequence' )
		primary key unique not null,
	order_id_fk	integer not null
		constraint detail_order_id_constraint
			references t_order(id),
	book_id_fk integer not null
		constraint defail_book_id_constraint
			references t_book(id) );

init-data

delete from t_book;

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-1234-5678-1', '坊ちゃん', '夏目漱石','A出版社', 450 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-1234-5679-2', '三四郎', '夏目漱石','A出版社', 480 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-1234-5670-1', '走れメロス', '太宰治','A出版社', 580 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-1234-5670-2', '富嶽百景', '太宰治','A出版社', 430 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-1230-1234-1', '銀河鉄道の夜', '宮沢賢治','B出版社', 650 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-1230-1234-2', 'セロ弾きのゴーシュ', '宮沢賢治','B出版社', 380 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-1230-2345-1', '伊豆の踊り子', '川端康成','B出版社', 780 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-1230-2345-2', '雪国', '川端康成','B出版社', 700 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-3456-1111-1', '羅生門', '芥川龍之介','C出版社', 580 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-3456-1111-2', '蜘蛛の糸', '芥川龍之介','C出版社', 880 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-3456-2222-1', '大つごもり', '樋口一葉','C出版社', 550 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-3456-2222-2', 'たけくらべ', '樋口一葉','C出版社', 660 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-7980-1256-4', 'Javaフレームワーク入門', '掌田津耶乃','秀和システム',  2940 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-7980-1225-4', 'Eclipse3.1によるJavaアプリケーション開発', '水島和憲','秀和システム', 2940 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-7980-1209-2', 'はじめてのJSP&サーブレットプログラミング', 'アイティーブースト','秀和システム', 2835 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-7980-1187-8', 'Eclipse3+VisualEditorによるJavaプログラミング', 'プロジェクトウィルカ','秀和システム', 2625 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-7980-1086-3', 'UNIXコマンドリファレンス', '松本光春','秀和システム', 1365 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-7980-0680-7', '世界でいちばん簡単なUNIXのe本', '堀江幸生、山内敏昭','秀和システム', 1365 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-6543-1289-1', '世界の中心でUNIXを叫ぶ', '木村次郎','Z出版社', 2280 );

insert into t_book ( isbn, title, author, publisher, price ) values(
	'4-6543-2367-1', '今UNIXにゆきます', '鈴木三郎','Z出版社', 3800 );

hibernate.cfg.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
        <property name="hibernate.connection.password">okada</property>
        <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/BookStore</property>
        <property name="hibernate.connection.username">okada</property>
        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
    </session-factory>
</hibernate-configuration>

src\bookstore\action:

AddToCartItems.java

package bookstore.action;

import java.util.List;

import org.apache.struts.action.ActionForm;

import bookstore.db.BookDB;
import bookstore.pbean.TBook;


public class AddToCartItems extends ActionForm{
	
	private List<TBook> items = null;
	private String[] selecteditems = null;
	
	
	public AddToCartItems(){
		items = BookDB.getBookListAll();
	}
	
	public List<TBook> getItems(){
		return( this.items );
	}
	
	public void setItems( List<TBook> inItems ){
		this.items = inItems;
	}
	
	public String[] getSelecteditems(){
		return( this.selecteditems );
	}
	
	public void setSelecteditems( String[] inSelecteditems ){
		this.selecteditems = inSelecteditems;
	}
}

CartAction.java

package bookstore.action;

import java.util.Arrays;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.actions.DispatchAction;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.hibernate.Query;
import org.hibernate.Session;

import bookstore.db.BookDB;



public class CartAction extends DispatchAction{
	
	public ActionForward addToCart(	ActionMapping mapping,
									ActionForm form,
									HttpServletRequest req,
									HttpServletResponse res ){
		
		HttpSession session = req.getSession();
		session.removeAttribute( "CART" );
		
		AddToCartItems atci = (AddToCartItems)form;
		
		List<String> cart = Arrays.asList( atci.getSelecteditems() );
		
		session.setAttribute( "CART", cart );
		
		return( mapping.findForward( "continue" ) );
	}
	
	
	public ActionForward checkout(ActionMapping mapping, ActionForm form,
			HttpServletRequest req, HttpServletResponse res) {
		HttpSession httpsession = req.getSession(false);
		List<String> cart = (List<String>) httpsession.getAttribute("CART");

		Session session = BookDB.getHibernateSession();

		Query priceQuery = session
				.createQuery("select sum( book.price ) from TBook book where book.isbn in ( :SELECTED_ITEMS )");
		priceQuery.setParameterList("SELECTED_ITEMS", cart.toArray());
		
		Long total = (Long)priceQuery.uniqueResult();

		req.setAttribute("TOTAL", total);

		return (mapping.findForward("tocheck"));
	}

}

src\bookstore\db:

BookDB.java

package bookstore.db;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

import bookstore.pbean.TBook;

public class BookDB{
	
	private static SessionFactory sf = null;
	
	public static List<TBook> getBookListAll(){
		Session session = BookDB.getHibernateSession();
		
		List<TBook> booklist = (List<TBook>)session.createQuery( "from TBook" ).list();
		
		return( booklist );
	}
	
	public static TBook findBookByISBN( String inISBN ){
		Session session = getHibernateSession();
		if( session == null || session.isOpen() == false ){
			session = getHibernateSession();
		}
		
		Query findquery = session.createQuery( "from TBook book where book.isbn like :ISBN" );
		findquery.setString( "ISBN", inISBN );
		
		TBook returnValue = (TBook)findquery.uniqueResult();
		
		return( returnValue );
	}
	
	public static Session getHibernateSession(){

		if( sf == null ){
			sf = (new AnnotationConfiguration())
							.configure( "../hibernate.cfg.xml" )
							.buildSessionFactory();
		}
		return( sf.openSession() );
	}
}

src\bookstore\pbean:

TBook.java

package bookstore.pbean;

// Generated 2009/01/30 0:28:39 by Hibernate Tools 3.2.1.GA

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

import javax.persistence.GeneratedValue;
import org.hibernate.annotations.GenericGenerator;

/**
 * TBook generated by hbm2java
 */
@Entity
@Table(name = "t_book", schema = "public", uniqueConstraints = @UniqueConstraint(columnNames = "isbn"))
public class TBook implements java.io.Serializable {

	private int id;
	private String isbn;
	private String title;
	private String author;
	private String publisher;
	private int price;
	private Set<TOrderDetail> TOrderDetails = new HashSet<TOrderDetail>(0);

	public TBook() {
	}

	public TBook(int id, String isbn, String title, String author,
			String publisher, int price) {
		this.id = id;
		this.isbn = isbn;
		this.title = title;
		this.author = author;
		this.publisher = publisher;
		this.price = price;
	}

	public TBook(int id, String isbn, String title, String author,
			String publisher, int price, Set<TOrderDetail> TOrderDetails) {
		this.id = id;
		this.isbn = isbn;
		this.title = title;
		this.author = author;
		this.publisher = publisher;
		this.price = price;
		this.TOrderDetails = TOrderDetails;
	}

	@Id
	@GeneratedValue(generator="hibernate_sequence")
	@GenericGenerator(name="hibernate_sequence", strategy="native")
	@Column(name = "id", unique = true, nullable = false)
	public int getId() {
		return this.id;
	}

	public void setId(int id) {
		this.id = id;
	}

	@Column(name = "isbn", unique = true, nullable = false)
	public String getIsbn() {
		return this.isbn;
	}

	public void setIsbn(String isbn) {
		this.isbn = isbn;
	}

	@Column(name = "title", nullable = false)
	public String getTitle() {
		return this.title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	@Column(name = "author", nullable = false)
	public String getAuthor() {
		return this.author;
	}

	public void setAuthor(String author) {
		this.author = author;
	}

	@Column(name = "publisher", nullable = false)
	public String getPublisher() {
		return this.publisher;
	}

	public void setPublisher(String publisher) {
		this.publisher = publisher;
	}

	@Column(name = "price", nullable = false)
	public int getPrice() {
		return this.price;
	}

	public void setPrice(int price) {
		this.price = price;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "TBook")
	public Set<TOrderDetail> getTOrderDetails() {
		return this.TOrderDetails;
	}

	public void setTOrderDetails(Set<TOrderDetail> TOrderDetails) {
		this.TOrderDetails = TOrderDetails;
	}

}

TCustomer.java

package bookstore.pbean;

// Generated 2009/01/30 0:28:39 by Hibernate Tools 3.2.1.GA

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

import javax.persistence.GeneratedValue;
import org.hibernate.annotations.GenericGenerator;

/**
 * TCustomer generated by hbm2java
 */
@Entity
@Table(name = "t_customer", schema = "public", uniqueConstraints = @UniqueConstraint(columnNames = "uid"))
public class TCustomer implements java.io.Serializable {

	private int id;
	private String uid;
	private String passwordmd5;
	private String name;
	private String email;
	private Set<TOrder> TOrders = new HashSet<TOrder>(0);

	public TCustomer() {
	}

	public TCustomer(int id, String uid, String passwordmd5, String name,
			String email) {
		this.id = id;
		this.uid = uid;
		this.passwordmd5 = passwordmd5;
		this.name = name;
		this.email = email;
	}

	public TCustomer(int id, String uid, String passwordmd5, String name,
			String email, Set<TOrder> TOrders) {
		this.id = id;
		this.uid = uid;
		this.passwordmd5 = passwordmd5;
		this.name = name;
		this.email = email;
		this.TOrders = TOrders;
	}

	@Id
	@GeneratedValue(generator="hibernate_sequence")
	@GenericGenerator(name="hibernate_sequence", strategy="native")
	@Column(name = "id", unique = true, nullable = false)
	public int getId() {
		return this.id;
	}

	public void setId(int id) {
		this.id = id;
	}

	@Column(name = "uid", unique = true, nullable = false)
	public String getUid() {
		return this.uid;
	}

	public void setUid(String uid) {
		this.uid = uid;
	}

	@Column(name = "passwordmd5", nullable = false)
	public String getPasswordmd5() {
		return this.passwordmd5;
	}

	public void setPasswordmd5(String passwordmd5) {
		this.passwordmd5 = passwordmd5;
	}

	@Column(name = "name", nullable = false)
	public String getName() {
		return this.name;
	}

	public void setName(String name) {
		this.name = name;
	}

	@Column(name = "email", nullable = false)
	public String getEmail() {
		return this.email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "TCustomer")
	public Set<TOrder> getTOrders() {
		return this.TOrders;
	}

	public void setTOrders(Set<TOrder> TOrders) {
		this.TOrders = TOrders;
	}

}

TOrder.java

package bookstore.pbean;

// Generated 2009/01/30 0:28:39 by Hibernate Tools 3.2.1.GA

import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import javax.persistence.GeneratedValue;
import org.hibernate.annotations.GenericGenerator;

/**
 * TOrder generated by hbm2java
 */
@Entity
@Table(name = "t_order", schema = "public")
public class TOrder implements java.io.Serializable {

	private int id;
	private TCustomer TCustomer;
	private Date orderday;
	private Set<TOrderDetail> TOrderDetails = new HashSet<TOrderDetail>(0);

	public TOrder() {
	}

	public TOrder(int id, TCustomer TCustomer, Date orderday) {
		this.id = id;
		this.TCustomer = TCustomer;
		this.orderday = orderday;
	}

	public TOrder(int id, TCustomer TCustomer, Date orderday,
			Set<TOrderDetail> TOrderDetails) {
		this.id = id;
		this.TCustomer = TCustomer;
		this.orderday = orderday;
		this.TOrderDetails = TOrderDetails;
	}

	@Id
	@GeneratedValue(generator="hibernate_sequence")
	@GenericGenerator(name="hibernate_sequence", strategy="native")
	@Column(name = "id", unique = true, nullable = false)
	public int getId() {
		return this.id;
	}

	public void setId(int id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "customer_id_fk", nullable = false)
	public TCustomer getTCustomer() {
		return this.TCustomer;
	}

	public void setTCustomer(TCustomer TCustomer) {
		this.TCustomer = TCustomer;
	}

	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "orderday", nullable = false, length = 35)
	public Date getOrderday() {
		return this.orderday;
	}

	public void setOrderday(Date orderday) {
		this.orderday = orderday;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "TOrder")
	public Set<TOrderDetail> getTOrderDetails() {
		return this.TOrderDetails;
	}

	public void setTOrderDetails(Set<TOrderDetail> TOrderDetails) {
		this.TOrderDetails = TOrderDetails;
	}

}

TOrderDetail.java

package bookstore.pbean;

// Generated 2009/01/30 0:28:39 by Hibernate Tools 3.2.1.GA

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import javax.persistence.GeneratedValue;
import org.hibernate.annotations.GenericGenerator;

/**
 * TOrderDetail generated by hbm2java
 */
@Entity
@Table(name = "t_order_detail", schema = "public")
public class TOrderDetail implements java.io.Serializable {

	private int id;
	private TOrder TOrder;
	private TBook TBook;

	public TOrderDetail() {
	}

	public TOrderDetail(int id, TOrder TOrder, TBook TBook) {
		this.id = id;
		this.TOrder = TOrder;
		this.TBook = TBook;
	}

	@Id
	@GeneratedValue(generator="hibernate_sequence")
	@GenericGenerator(name="hibernate_sequence", strategy="native")
	@Column(name = "id", unique = true, nullable = false)
	public int getId() {
		return this.id;
	}

	public void setId(int id) {
		this.id = id;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "order_id_fk", nullable = false)
	public TOrder getTOrder() {
		return this.TOrder;
	}

	public void setTOrder(TOrder TOrder) {
		this.TOrder = TOrder;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "book_id_fk", nullable = false)
	public TBook getTBook() {
		return this.TBook;
	}

	public void setTBook(TBook TBook) {
		this.TBook = TBook;
	}

}

WebContent:

BookStore.jsp

<%@ page language="java" contentType="text/html;charset=Windows-31J" %>

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>

<html:html>
<head>
</head>

<body>
<html:form action="/cartAction">

	<table border="1">
	<logic:iterate	id="item"
					name="AddToCartActionName" 
					property="items">

	<tr>
		<th rowspan="2">
			
		<html:multibox property="selecteditems">
			<bean:write name="item"  property="isbn"/>
		</html:multibox> 
		</th>
		<td colspan="3">
		<bean:write name="item"  property="title"/>
		</td>
	</tr>
	<tr>
		<td>
		<bean:write name="item"	 property="author" />
		</td>
		<td>
		<bean:write name="item"	 property="publisher" />
		</td>
		<td>
		<bean:write name="item"	 property="price" /> 円
		</td>
	</tr>
	</logic:iterate>
	</table>
	
	<br>

	<html:submit property="cartaction" value="addToCart" />
	<html:submit property="cartaction" value="checkout" />

</html:form>
</body>
</html:html>

Check.jsp

<%@ page language="java" import="java.util.Iterator" %>
<%@ page                 import="java.util.List" %>
<%@ page                 import="bookstore.pbean.TBook" %>
<%@ page                 import="bookstore.db.BookDB" %>
<%@ page contentType="text/html;charset=Windows-31J" %>

<html>
<head>
</head>

<body>

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

	<br><br>
	
	以下が購入する商品と合計です。
	<br>
	<table border="1">
	
	<%
	List<String> listCheckedBook = (List<String>)session.getAttribute( "CART" );
	if( listCheckedBook != null ){
		for( String iterBookISBN : listCheckedBook ){
			TBook book = (TBook)BookDB.findBookByISBN( iterBookISBN );
	%>
		<tr>
			<td>
				<%= book.getTitle() %>
			</td>
			<td>
				<%= book.getAuthor() %>
			</td>
		</tr>
		<tr>
			<td>
				<%= book.getPublisher() %>
			</td>
			<td>
				<%= book.getPrice() %>
			</td>
		</tr>
	<%
		}
	}
	%>
	</table>
	<br>
	<br>
	合計: <%= request.getAttribute( "TOTAL" ) %> 円
</body>

</html>

WebContent\WEB-INF:

hibernate.cfg.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.bytecode.use_reflection_optimizer">false</property>
        <property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
        <property name="hibernate.connection.password">okada</property>
        <property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/BookStore</property>
        <property name="hibernate.connection.username">okada</property>
        <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
        <mapping class="bookstore.pbean.TOrderDetail" />
        <mapping class="bookstore.pbean.TCustomer" />
        <mapping class="bookstore.pbean.TOrder" />
        <mapping class="bookstore.pbean.TBook" />
    </session-factory>
</hibernate-configuration>

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="AddToCartActionName"
					type="bookstore.action.AddToCartItems" />
	</form-beans>
	<action-mappings>
		<action
			path="/cartAction"
			type="bookstore.action.CartAction"
			name="AddToCartActionName"
			parameter="cartaction"
			scope="request">
			<forward name="continue" path="/BookStore.jsp" />
			<forward name="tocheck" path="/Check.jsp" />
		</action>
	</action-mappings>
    
	<message-resources parameter="resources.application"/>
</struts-config>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
	<display-name>Chap10</display-name>

	<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>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Action Servlet Mapping -->
    <servlet-mapping>                                                               
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>                                                              

    <!-- The Welcome File List -->
    <welcome-file-list>
        <welcome-file>BookStore.jsp</welcome-file>
    </welcome-file-list>
</web-app>

WebContent\WEB-INF\lib:

antlr-2.7.6.jar

commons-beanutils-1.7.0.jar

commons-chain-1.1.jar

commons-collections-3.1.jar

commons-digester-1.8.jar

commons-logging-1.0.4.jar

dom4j-1.6.1.jar

ejb3-persistence.jar

hibernate3.jar

hibernate-annotations.jar

hibernate-commons-annotations.jar

javassist-3.4.GA.jar

jta-1.1.jar

postgresql-8.3-603.jdbc3.jar

slf4j-api-1.5.2.jar

slf4j-jdk14-1.5.2.jar

struts-core-1.3.8.jar

struts-extras-1.3.8.jar

struts-taglib-1.3.8.jar

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

你可能感兴趣的:(Hibernate,bean,struts,servlet,出版)