src\main\java\bookstore\action:
InitAction.java
package bookstore.action; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import bookstore.db.BookDB; import bookstore.pbean.TBook; import bookstore.vbean.VBook; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class InitAction extends Action{ public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res ){ VBook insertBook = null; TBook currentBook = null; List baList = new ArrayList(); Iterator iter = BookDB.getBookListAll().iterator(); while( iter.hasNext() ){ currentBook = (TBook) iter.next(); insertBook = new VBook( currentBook ); baList.add( insertBook ); } req.setAttribute( "BookAllList", baList ); return( mapping.findForward( "bookstore" ) ); } }
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")); } }
CartVeloAction.java
package bookstore.action; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; 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; import bookstore.pbean.TBook; import bookstore.vbean.VBook; import bookstore.vbean.VCheckout; public class CartVeloAction extends DispatchAction{ public ActionForward addToCart( ActionMapping mapping, ActionForm form, HttpServletRequest req, HttpServletResponse res ){ HttpSession session = req.getSession(); CartViewItems atci = (CartViewItems)form; String[] selectedItems = atci.getSelecteditems(); List cart = Arrays.asList( selectedItems ); session.setAttribute( "CART", cart ); req.setAttribute( "BookAllList",createVBook( selectedItems ) ); return( mapping.findForward( "continue" ) ); } private List createVBook( String[] inSelectedItems ){ VBook insertBook = null; TBook currentBook = null; List baList = new ArrayList(); Iterator iter = BookDB.getBookListAll().iterator(); while( iter.hasNext() ){ currentBook = (TBook) iter.next(); insertBook = new VBook( currentBook ); for( int counter = 0; counter < inSelectedItems.length; counter++ ){ if( insertBook.getIsbn() .equals( inSelectedItems[counter] ) ){ insertBook.setSelected( true ); } } baList.add( insertBook ); } return( baList ); } 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()); VCheckout vc = new VCheckout(); vc.setTotal( ((Long)priceQuery.uniqueResult()).intValue() ); List ba = createVCheckSelected( (String[])cart.toArray( new String[cart.size()] ) ); vc.setSelecteditems( ba ); req.setAttribute( "ItemsToBuy", vc ); return (mapping.findForward("tocheck")); } private List createVCheckSelected(String[] inSelectedItems) { VBook insertBook = null; TBook currentBook = null; List baList = new ArrayList(); for (int counter = 0; counter < inSelectedItems.length; counter++) { currentBook = BookDB.findBookByISBN( (String)inSelectedItems[counter]); insertBook = new VBook( currentBook ); insertBook.setSelected(true); baList.add(insertBook); } return (baList); } }
CartViewItems.java
package bookstore.action; import org.apache.struts.action.ActionForm; public class CartViewItems extends ActionForm{ private String[] selecteditems = null; public CartViewItems(){} public String[] getSelecteditems(){ return( this.selecteditems ); } public void setSelecteditems( String[] inSelecteditems ){ this.selecteditems = inSelecteditems; } }
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; } }
src\main\java\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\main\java\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; } }
src\main\java\bookstore\vbean:
VBook.java
package bookstore.vbean; import bookstore.pbean.TBook; public class VBook{ private String isbn; private String title; private String author; private String publisher; private int price; private boolean selected; public VBook(){} public VBook( TBook book ){ this.isbn = book.getIsbn(); this.title = book.getTitle(); this.author = book.getAuthor(); this.publisher = book.getPublisher(); this.price = book.getPrice(); this.selected = false; } public String getIsbn() { return this.isbn; } public void setIsbn(String isbn) { this.isbn = isbn; } public String getTitle() { return this.title; } public void setTitle(String title) { this.title = title; } public String getAuthor() { return this.author; } public void setAuthor(String author) { this.author = author; } public String getPublisher() { return this.publisher; } public void setPublisher(String publisher) { this.publisher = publisher; } public int getPrice() { return this.price; } public void setPrice(int price) { this.price = price; } public boolean isSelected() { return selected; } public void setSelected(boolean selected) { this.selected = selected; } }
VCheckout.java
package bookstore.vbean; import java.util.List; public class VCheckout{ private int total; private List selecteditems; public int getTotal(){ return( this.total ); } public void setTotal( int inTotal ){ this.total = inTotal; } public List getSelecteditems() { return selecteditems; } public void setSelecteditems(List inSelecteditems) { this.selecteditems = inSelecteditems; } }
src\main\webapp\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-bean name="CartViewItemsName" type="bookstore.action.CartViewItems" /> </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 path="/cartAction2" type="bookstore.action.CartVeloAction" name="CartViewItemsName" parameter="cartaction" scope="request"> <forward name="continue" path="/BookStore.vm" /> <forward name="tocheck" path="/Check.vm" /> </action> <action path="/Init" type="bookstore.action.InitAction" scope="request"> <forward name="bookstore" path="/BookStore.vm" /> </action> </action-mappings> <message-resources parameter="ApplicationResources" key="org.apache.struts.action.MESSAGE" /> </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>Chap13 Application</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> <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>
src\main\webapp:
BookStore.html
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J"> </head> <body> <center> <h2>商品一覧</h2> </center> <form name="AddToCartActionName" method="post" action="$link.setAction( "/cartAction2" )"> <table border="1"> #foreach ( $item in $BookAllList ) <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" name="cartaction" value="addToCart"> <input type="submit" name="cartaction" value="checkout"> </form> </body> </html>
BookStore.vm
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J"> </head> <body> <center> <h2>商品一覧</h2> </center> <form name="AddToCartActionName" method="post" action="$link.setAction( "/cartAction2" )"> <table border="1"> #foreach ( $item in $BookAllList ) <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" name="cartaction" value="addToCart"> <input type="submit" name="cartaction" value="checkout"> </form> </body> </html>
Check.html
<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 円 </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 円 </body> </html>
index.jsp
<html> <body> <h2>Hello World!</h2> </body> </html>
target:
mvn-eclipse-cache.properties
#Temporary index for unavailable sources and javadocs #Fri Jan 30 01:42:10 JST 2009 junit\:junit\:3.8.1\:javadoc=true junit\:junit\:3.8.1\:sources=true
\
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>chap13app</groupId> <artifactId>Chap13App</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>Chap13App Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts-core</artifactId> <version>1.3.9</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts-extras</artifactId> <version>1.3.9</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>3.3.1.GA</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-annotations</artifactId> <version>3.4.0.GA</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-tools</artifactId> <version>1.3</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.6</version> </dependency> <dependency> <groupId>postgresql</groupId> <artifactId>postgresql</artifactId> <version>8.3-603.jdbc3</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-jdk14</artifactId> <version>1.5.2</version> </dependency> <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>3.8.0.GA</version> </dependency> </dependencies> <build> <finalName>Chap13App</finalName> </build> </project>
代码来自日本的技术图书 :http://www.shuwasystem.co.jp/products/7980html/2197.html