21
The J2EE BookShop A detailed walk through of the J2EE BookShop

The J2EE BookShop A detailed walk through of the J2EE BookShop

  • View
    223

  • Download
    3

Embed Size (px)

Citation preview

Page 1: The J2EE BookShop A detailed walk through of the J2EE BookShop

The J2EE BookShop

A detailed walk through of the J2EE BookShop

Page 2: The J2EE BookShop A detailed walk through of the J2EE BookShop

Functional Requirements - repetition The Bookshop is a web shop where the

customer can do the following Customers should log into the system Customers should be able to browse through all

available books Customers should be able to view detailed

information about a particular book

Page 3: The J2EE BookShop A detailed walk through of the J2EE BookShop

Functional Requirments - repetition

Customers should be able to add and remove books from their shopping cart

When customers want to checkout their order, they should supply shipping information

When checking out, the order should be written in the ORDER table and the different books in the ORDER_ITEMS table

Page 4: The J2EE BookShop A detailed walk through of the J2EE BookShop

Technical Requirments - repetition Use MVC, Model View Controller The result return from beans or servlet should

be XML that’s transformed to HTML with XSLT (use the JSTL tag library). Never print HTML in the beans or the Servlets. Output in JSPs are acceptable

Try use a Custom tag, for example to return the shopping cart

Page 5: The J2EE BookShop A detailed walk through of the J2EE BookShop

Fundamental design ideas

The book shop uses these fundamental design ideas Model View Controller (MVC) is used as the base All requests should be handled by a single

controller servlet Standard J2EE Security is used to secure the site

We don’t implement the security, we only tell the system to use it

All dynamic content should be returned to the view as XML

All XML is transformed into XHTML with XSLT

Page 6: The J2EE BookShop A detailed walk through of the J2EE BookShop

Fundamental design ideas

Static layout can be performed in the JSP pages for simplicity

Only control logic in the controller servlet All business logic in Java Beans All presentation logic in JSPs and XSLT The shopping cart is accessed through a

Custom Tag

Page 7: The J2EE BookShop A detailed walk through of the J2EE BookShop

Fundamental design ideas

Environment variables (like JDBC Url and the different JSP pages) should be configurable at deploy time, i.e. should be defined in web.xml

Page 8: The J2EE BookShop A detailed walk through of the J2EE BookShop

web.xml

One servlet Named Shop and mapped as /shop se.upright.education.uu.pvk.assignmenttwo.servle

ts.ShopServlet Five init-param entries

JDBC_URL CHECKOUT_PAGE SHOW_PAGE THANKYOU_PAGEDETAIL_PAGE

Page 9: The J2EE BookShop A detailed walk through of the J2EE BookShop

web.xml

Three Tag Libraries JSTL – core

c.tld JSTL – xml

x.tld BookShop

bookshop.tld

Page 10: The J2EE BookShop A detailed walk through of the J2EE BookShop

web.xml

The URL-pattern /* is secured Only users in the role tomcat is allowed Form-login is used

login.jsp is the login form login_error.jsp is the error page in case of a login

failure

Page 11: The J2EE BookShop A detailed walk through of the J2EE BookShop

web.xml

<security-constraint> <web-resource-collection> <web-resource-name>TheShop</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>tomcat</role-name> </auth-constraint> <user-data-constraint> <transport-guarantee>NONE</transport-guarantee> </user-data-constraint> </security-constraint> <login-config> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/login.jsp</form-login-page> <form-error-page>/login_error.jsp</form-error-page> </form-login-config> </login-config>

Page 12: The J2EE BookShop A detailed walk through of the J2EE BookShop

Database access

All database access is handled by two beans BookListBean OrderBean

The book list is only fetched once and then added to the application context Bad performance to get the list for each request Unnecessary memory usage if each user have a

book list of their own Read-only data

Page 13: The J2EE BookShop A detailed walk through of the J2EE BookShop

BookBean

A JavaBean that represent one book All properties of the book available with

getXXX() and setXXX() methods getXml() returns the book in XML format

Page 14: The J2EE BookShop A detailed walk through of the J2EE BookShop

BookListBean

The implementation of the book list A Collection with BookBeans is the actual list When created, the BookListBean() connects

to the database and fetches all books getXml() returns the entire book list as XML getXml() uses BookBean.getXml() to build it’s

XML representation

Page 15: The J2EE BookShop A detailed walk through of the J2EE BookShop

ShoppingBean

The implementation of the shopping cart Each user should have his own instance of

the shopping cart addBook(book, quantity) adds a book to the

cart If the exists in the cart, only increase the quantity

removeBook(id, quantity) removes a book If the quantity to remove is more or equal to the

present, remove the book, otherwise decrease the quantity in the cart

Page 16: The J2EE BookShop A detailed walk through of the J2EE BookShop

ShoppingBean

getCart() returns the Collection that holds the actual cart

getXml() returns the shopping cart as XML clear() removes all books from the cart

Page 17: The J2EE BookShop A detailed walk through of the J2EE BookShop

OrderBean

Used to create a new order based on the shopping cart and the shipping information entered by the user

The order is written to the ORDER-table The different books are written to the ORDER_ITEM

table Explicit transaction handling is used

Inserting an order is one operation Each book is one operation All operations in one transaction, i.e. write the order and all

books, or write nothing

Page 18: The J2EE BookShop A detailed walk through of the J2EE BookShop

ShopingCartTag

The implementation of the Custom tag to output the shopping cart

Uses ShoppingBean.getXml() to get the cart

Page 19: The J2EE BookShop A detailed walk through of the J2EE BookShop

XML – the book

<book> <id>1</id> <title>Javaprogramming</title> <authorname>Fredrik</authorname> <authorsurname>Alund</authorsurname> <price>23</price> <pages>234</pages> <description>Bla bla bla</description> </book>

Page 20: The J2EE BookShop A detailed walk through of the J2EE BookShop

XML – the book list

<booklist> <book> <id>1</id> <title>Javaprogramming</title> <authorname>Fredrik</authorname> <authorsurname>Alund</authorsurname> <price>23</price> <pages>234</pages> <description>Bla bla bla</description> </book> <book> <id>2</id> <title>Javaprogramming2</title> <authorname>Kalle</authorname> <authorsurname>Svensson</authorsurname> <price>234</price> <pages>100</pages> <description>Bla bla bla</description> </book> </booklist>

Page 21: The J2EE BookShop A detailed walk through of the J2EE BookShop

XSL files

booklist_xsl.xslt Format the book list BookListBean.getXml()

bookdetail_xsl.xslt Format the details about a particular book BookBean.getXml()

shoppingcart_xsl.xslt The shopping cart shown in the show page ShoppingBean.getXml()

shoppingcart_checkout_xsl.xslt The shopping cart shown in the checkout page ShoppingBean.getXml()