├── .gitignore ├── README.md ├── appendixA-bookstore ├── .gitignore ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── apress │ │ └── prospringmvc │ │ └── bookstore │ │ └── web │ │ ├── config │ │ ├── BookstoreWebApplicationInitializer.java │ │ ├── WebMvcContextConfiguration.java │ │ └── WebflowContextConfiguration.java │ │ ├── controller │ │ ├── AuthenticationController.java │ │ ├── BookDetailController.java │ │ ├── MainController.java │ │ ├── ManageBookController.java │ │ ├── ManageBookForm.java │ │ ├── ManageCategoryForm.java │ │ ├── OrderController.java │ │ └── OrderForm.java │ │ ├── interceptor │ │ └── CommonDataHandlerInterceptor.java │ │ └── security │ │ ├── BookstoreSecurityFlowExecutionListener.java │ │ ├── BookstoreUserDetails.java │ │ ├── BookstoreUserDetailsService.java │ │ ├── CloudFoundryHttpServletRequestWrappingFilter.java │ │ └── SecurityContextSupport.java │ ├── resources │ ├── logback.xml │ └── spring │ │ ├── context.xml │ │ ├── spring-security.xml │ │ └── webflow-config.xml │ └── webapp │ ├── WEB-INF │ ├── templates │ │ ├── contentOnly.jsp │ │ ├── footer.jsp │ │ ├── header.jsp │ │ └── template.jsp │ ├── tiles │ │ └── tiles-configuration.xml │ ├── view │ │ ├── public │ │ │ ├── authentication │ │ │ │ └── login.jsp │ │ │ ├── book │ │ │ │ └── detail.jsp │ │ │ ├── createOrders │ │ │ │ ├── createOrders-flow.xml │ │ │ │ ├── selectBooks.jsp │ │ │ │ ├── selectCategory.jsp │ │ │ │ ├── selectDeliveryOptions.jsp │ │ │ │ └── showSelectedBooks.jsp │ │ │ └── main.jsp │ │ └── secured │ │ │ ├── manageBooks │ │ │ └── manageBooks.jsp │ │ │ ├── ordersOverview │ │ │ ├── orderDetail.jsp │ │ │ ├── ordersOverview-flow.xml │ │ │ └── ordersOverview.jsp │ │ │ └── placeOrders │ │ │ └── placeOrders-flow.xml │ └── web.xml │ └── index.jsp ├── bookstore-shared ├── .gitignore ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── apress │ │ └── prospringmvc │ │ └── bookstore │ │ ├── config │ │ ├── InfrastructureContextConfiguration.java │ │ └── TestDataContextConfiguration.java │ │ ├── converter │ │ └── StringToEntityConverter.java │ │ ├── domain │ │ ├── Account.java │ │ ├── Address.java │ │ ├── Book.java │ │ ├── BookSearchCriteria.java │ │ ├── Cart.java │ │ ├── Category.java │ │ ├── Order.java │ │ ├── OrderDetail.java │ │ ├── Permission.java │ │ ├── Role.java │ │ └── support │ │ │ ├── AccountBuilder.java │ │ │ ├── BookBuilder.java │ │ │ ├── CategoryBuilder.java │ │ │ ├── EntityBuilder.java │ │ │ ├── InitialDataSetup.java │ │ │ └── OrderBuilder.java │ │ ├── formatter │ │ ├── DateFormat.java │ │ ├── DateFormatAnnotationFormatterFactory.java │ │ └── DateFormatter.java │ │ ├── repository │ │ ├── AccountRepository.java │ │ ├── BookRepository.java │ │ ├── CategoryRepository.java │ │ ├── JpaAccountRepository.java │ │ ├── JpaBookRepository.java │ │ ├── JpaCategoryRepository.java │ │ ├── JpaOrderRepository.java │ │ └── OrderRepository.java │ │ ├── service │ │ ├── AccountService.java │ │ ├── AccountServiceImpl.java │ │ ├── AuthenticationException.java │ │ ├── BookstoreService.java │ │ ├── BookstoreServiceImpl.java │ │ ├── CategoryService.java │ │ └── CategoryServiceImpl.java │ │ └── validation │ │ ├── AccountValidator.java │ │ └── OrderValidator.java │ └── resources │ ├── META-INF │ └── persistence.xml │ ├── ehcache.xml │ └── logback.xml ├── bookstore-web-resources ├── .gitignore ├── build.gradle └── src │ └── main │ └── resources │ ├── META-INF │ ├── MANIFEST.MF │ └── web-resources │ │ ├── css │ │ └── style.css │ │ ├── images │ │ ├── Thumbs.db │ │ ├── about.gif │ │ ├── banner.gif │ │ ├── big_pic.jpg │ │ ├── blank.gif │ │ ├── books │ │ │ ├── 9780132350884 │ │ │ │ └── book_front_cover.png │ │ │ ├── 9780135974445 │ │ │ │ └── book_front_cover.png │ │ │ ├── 9780201485677 │ │ │ │ └── book_front_cover.png │ │ │ ├── 9780321356680 │ │ │ │ └── book_front_cover.png │ │ │ └── 9781430209737 │ │ │ │ └── book_front_cover.png │ │ ├── border.gif │ │ ├── box_bottom.gif │ │ ├── box_center.gif │ │ ├── box_top.gif │ │ ├── bullet1.gif │ │ ├── bullet2.gif │ │ ├── bullet3.gif │ │ ├── bullet4.gif │ │ ├── bullet5.gif │ │ ├── bullet6.gif │ │ ├── cart.gif │ │ ├── cart_thumb.gif │ │ ├── center_bg.gif │ │ ├── close.gif │ │ ├── closelabel.gif │ │ ├── color1.gif │ │ ├── color2.gif │ │ ├── color3.gif │ │ ├── contact_bt.gif │ │ ├── csscreme.gif │ │ ├── de.gif │ │ ├── footer_bg.gif │ │ ├── footer_logo.gif │ │ ├── fr.gif │ │ ├── gb.gif │ │ ├── header.jpg │ │ ├── left_menu_bullet.gif │ │ ├── loading.gif │ │ ├── logo.gif │ │ ├── new_icon.gif │ │ ├── new_prod_box.gif │ │ ├── next.gif │ │ ├── nextlabel.gif │ │ ├── nl.gif │ │ ├── order_now.gif │ │ ├── prev.gif │ │ ├── prevlabel.gif │ │ ├── prod1.gif │ │ ├── prod2.gif │ │ ├── promo_icon.gif │ │ ├── register_bt.gif │ │ ├── special_icon.gif │ │ ├── thumb1.gif │ │ ├── thumb2.gif │ │ ├── thumb3.gif │ │ └── zoom.gif │ │ └── jquery │ │ └── jquery-1.7.1.min.js │ ├── messages_en.properties │ └── messages_nl.properties ├── build.gradle ├── chapter1-bookstore ├── .gitignore ├── build.gradle └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── apress │ │ │ └── prospringmvc │ │ │ └── bookstore │ │ │ └── web │ │ │ ├── BookstoreWebApplicationInitializer.java │ │ │ ├── IndexController.java │ │ │ └── config │ │ │ └── WebMvcContextConfiguration.java │ ├── resources │ │ └── logback.xml │ └── webapp │ │ ├── WEB-INF │ │ └── views │ │ │ └── index.jsp │ │ └── index.jsp │ └── test │ └── java │ └── com │ └── apress │ └── prospringmvc │ └── bookstore │ └── web │ └── config │ └── ContextLoadingTest.java ├── chapter10-bookstore ├── .gitignore ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── apress │ │ └── prospringmvc │ │ └── bookstore │ │ └── web │ │ ├── AuthenticationSessionListener.java │ │ ├── config │ │ ├── BookstoreWebApplicationInitializer.java │ │ ├── WebMvcContextConfiguration.java │ │ └── WebflowContextConfiguration.java │ │ ├── controller │ │ ├── BookDetailController.java │ │ ├── MainController.java │ │ ├── OrderController.java │ │ └── OrderForm.java │ │ └── interceptor │ │ └── CommonDataHandlerInterceptor.java │ ├── resources │ ├── logback.xml │ └── spring │ │ └── webflow-config.xml │ └── webapp │ ├── WEB-INF │ ├── templates │ │ ├── contentOnly.jsp │ │ ├── footer.jsp │ │ ├── header.jsp │ │ └── template.jsp │ ├── tiles │ │ └── tiles-configuration.xml │ └── view │ │ ├── book │ │ └── detail.jsp │ │ ├── createOrders │ │ ├── createOrders-flow.xml │ │ ├── selectBooks.jsp │ │ ├── selectCategory.jsp │ │ └── selectDeliveryOptions.jsp │ │ ├── main.jsp │ │ └── ordersOverview │ │ └── ordersOverview.jsp │ └── index.jsp ├── chapter11-bookstore ├── .gitignore ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── apress │ │ └── prospringmvc │ │ └── bookstore │ │ └── web │ │ ├── config │ │ ├── BookstoreWebApplicationInitializer.java │ │ ├── WebMvcContextConfiguration.java │ │ └── WebflowContextConfiguration.java │ │ ├── controller │ │ ├── AuthenticationController.java │ │ ├── AuthenticationForm.java │ │ ├── BookDetailController.java │ │ ├── MainController.java │ │ ├── OrderController.java │ │ └── OrderForm.java │ │ └── interceptor │ │ └── CommonDataHandlerInterceptor.java │ ├── resources │ ├── ValidationMessages.properties │ ├── logback.xml │ └── spring │ │ └── webflow-config.xml │ └── webapp │ ├── WEB-INF │ ├── templates │ │ ├── contentOnly.jsp │ │ ├── footer.jsp │ │ ├── header.jsp │ │ └── template.jsp │ ├── tiles │ │ └── tiles-configuration.xml │ └── view │ │ ├── authentication │ │ ├── authentication-flow.xml │ │ └── login.jsp │ │ ├── book │ │ └── detail.jsp │ │ ├── createOrders │ │ ├── createOrders-flow.xml │ │ ├── selectBooks.jsp │ │ ├── selectCategory.jsp │ │ └── selectDeliveryOptions.jsp │ │ ├── main.jsp │ │ ├── ordersOverview │ │ └── ordersOverview.jsp │ │ └── placeOrders │ │ └── placeOrders-flow.xml │ └── index.jsp ├── chapter12-bookstore ├── .gitignore ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── apress │ │ └── prospringmvc │ │ └── bookstore │ │ └── web │ │ ├── config │ │ ├── BookstoreWebApplicationInitializer.java │ │ ├── WebMvcContextConfiguration.java │ │ └── WebflowContextConfiguration.java │ │ ├── controller │ │ ├── AuthenticationController.java │ │ ├── AuthenticationForm.java │ │ ├── BookDetailController.java │ │ ├── MainController.java │ │ ├── OrderController.java │ │ └── OrderForm.java │ │ └── interceptor │ │ └── CommonDataHandlerInterceptor.java │ ├── resources │ ├── logback.xml │ └── spring │ │ └── webflow-config.xml │ └── webapp │ ├── WEB-INF │ ├── templates │ │ ├── contentOnly.jsp │ │ ├── footer.jsp │ │ ├── header.jsp │ │ └── template.jsp │ ├── tiles │ │ └── tiles-configuration.xml │ └── view │ │ ├── authentication │ │ ├── authentication-flow.xml │ │ └── login.jsp │ │ ├── book │ │ └── detail.jsp │ │ ├── createOrders │ │ ├── createOrders-flow.xml │ │ ├── selectBooks.jsp │ │ ├── selectCategory.jsp │ │ ├── selectDeliveryOptions.jsp │ │ └── showSelectedBooks.jsp │ │ ├── main.jsp │ │ ├── ordersOverview │ │ ├── orderDetail.jsp │ │ ├── ordersOverview-flow.xml │ │ └── ordersOverview.jsp │ │ └── placeOrders │ │ └── placeOrders-flow.xml │ └── index.jsp ├── chapter13-bookstore ├── .gitignore ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── apress │ │ └── prospringmvc │ │ └── bookstore │ │ └── web │ │ ├── config │ │ ├── BookstoreWebApplicationInitializer.java │ │ ├── WebMvcContextConfiguration.java │ │ └── WebflowContextConfiguration.java │ │ ├── controller │ │ ├── AuthenticationController.java │ │ ├── BookDetailController.java │ │ ├── MainController.java │ │ ├── ManageBookController.java │ │ ├── ManageBookForm.java │ │ ├── ManageCategoryForm.java │ │ ├── OrderController.java │ │ └── OrderForm.java │ │ ├── interceptor │ │ └── CommonDataHandlerInterceptor.java │ │ └── security │ │ ├── BookstoreSecurityFlowExecutionListener.java │ │ ├── BookstoreUserDetails.java │ │ ├── BookstoreUserDetailsService.java │ │ └── SecurityContextSupport.java │ ├── resources │ ├── logback.xml │ └── spring │ │ ├── spring-security.xml │ │ └── webflow-config.xml │ └── webapp │ ├── WEB-INF │ ├── templates │ │ ├── contentOnly.jsp │ │ ├── footer.jsp │ │ ├── header.jsp │ │ └── template.jsp │ ├── tiles │ │ └── tiles-configuration.xml │ └── view │ │ ├── public │ │ ├── authentication │ │ │ └── login.jsp │ │ ├── book │ │ │ └── detail.jsp │ │ ├── createOrders │ │ │ ├── createOrders-flow.xml │ │ │ ├── selectBooks.jsp │ │ │ ├── selectCategory.jsp │ │ │ ├── selectDeliveryOptions.jsp │ │ │ └── showSelectedBooks.jsp │ │ └── main.jsp │ │ └── secured │ │ ├── manageBooks │ │ └── manageBooks.jsp │ │ ├── ordersOverview │ │ ├── orderDetail.jsp │ │ ├── ordersOverview-flow.xml │ │ └── ordersOverview.jsp │ │ └── placeOrders │ │ └── placeOrders-flow.xml │ └── index.jsp ├── chapter2-bookstore ├── .gitignore ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── apress │ │ └── prospringmvc │ │ └── bookstore │ │ └── web │ │ ├── BookstoreWebApplicationInitializer.java │ │ ├── IndexController.java │ │ └── config │ │ └── WebMvcContextConfiguration.java │ ├── resources │ └── config │ │ ├── web-fragment.xml │ │ └── web.xml │ └── webapp │ ├── WEB-INF │ └── views │ │ └── index.jsp │ └── index.jsp ├── chapter2-samples ├── .gitignore ├── build.gradle └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── apress │ │ │ └── prospringmvc │ │ │ ├── ApplicationContextLogger.java │ │ │ └── moneytransfer │ │ │ ├── annotation │ │ │ ├── ApplicationContextConfiguration.java │ │ │ ├── MoneyTransferServiceImpl.java │ │ │ ├── MoneyTransferSpring.java │ │ │ ├── MoneyTransferSpringFileSystem.java │ │ │ ├── application-context.xml │ │ │ ├── hierarchy │ │ │ │ ├── ChildApplicationContextConfiguration.java │ │ │ │ ├── MoneyTransferSpring.java │ │ │ │ └── ParentApplicationContextConfiguration.java │ │ │ └── profiles │ │ │ │ ├── ApplicationContextConfiguration.java │ │ │ │ ├── MoneyTransferSpring.java │ │ │ │ ├── StubTransactionRepository.java │ │ │ │ └── application-context.xml │ │ │ ├── constructor │ │ │ ├── domain │ │ │ ├── Account.java │ │ │ ├── MoneyTransferTransaction.java │ │ │ └── Transaction.java │ │ │ ├── jndi │ │ │ ├── JndiMoneyTransfer.java │ │ │ └── JndiMoneyTransferServiceImpl.java │ │ │ ├── repository │ │ │ ├── AccountRepository.java │ │ │ ├── MapBasedAccountRepository.java │ │ │ ├── MapBasedTransactionRepository.java │ │ │ └── TransactionRepository.java │ │ │ ├── scanning │ │ │ ├── ApplicationContextConfiguration.java │ │ │ ├── Main.java │ │ │ ├── MoneyTransferServiceImpl.java │ │ │ └── application-context.xml │ │ │ ├── service │ │ │ ├── AbstractMoneyTransferService.java │ │ │ └── MoneyTransferService.java │ │ │ ├── setter │ │ │ ├── ApplicationContextConfiguration.java │ │ │ ├── MoneyTransferServiceImpl.java │ │ │ ├── MoneyTransferSpring.java │ │ │ ├── MoneyTransferStandalone.java │ │ │ └── application-context.xml │ │ │ └── simple │ │ │ ├── SimpleMoneyTransfer.java │ │ │ └── SimpleMoneyTransferServiceImpl.java │ └── resources │ │ └── logback.xml │ └── test │ └── java │ └── com │ └── apress │ └── prospringmvc │ └── moneytransfer │ ├── domain │ └── AccountTests.java │ └── repository │ ├── MapBasedAccountRepositoryTests.java │ └── MapBasedTransactionRepositoryTests.java ├── chapter5-bookstore ├── .gitignore ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── apress │ │ └── prospringmvc │ │ └── bookstore │ │ └── web │ │ ├── BookstoreWebApplicationInitializer.java │ │ ├── config │ │ ├── ViewConfiguration.java │ │ └── WebMvcContextConfiguration.java │ │ └── controller │ │ ├── AccountController.java │ │ ├── BookDetailController.java │ │ ├── BookSearchController.java │ │ ├── LoginController.java │ │ ├── LogoutController.java │ │ └── RegistrationController.java │ └── webapp │ ├── WEB-INF │ ├── templates │ │ ├── footer.jsp │ │ ├── header.jsp │ │ └── template.jsp │ ├── tiles.xml │ └── views │ │ ├── book │ │ ├── detail.jsp │ │ └── search.jsp │ │ ├── customer │ │ ├── account.jsp │ │ └── register.jsp │ │ ├── index.jsp │ │ └── login.jsp │ └── index.jsp ├── chapter6-bookstore ├── .gitignore ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── apress │ │ └── prospringmvc │ │ └── bookstore │ │ └── web │ │ ├── BookstoreWebApplicationInitializer.java │ │ ├── config │ │ ├── ViewConfiguration.java │ │ └── WebMvcContextConfiguration.java │ │ ├── controller │ │ ├── AccountController.java │ │ ├── BookDetailController.java │ │ ├── BookSearchController.java │ │ ├── CartController.java │ │ ├── CheckoutController.java │ │ ├── LoginController.java │ │ ├── LogoutController.java │ │ └── RegistrationController.java │ │ ├── interceptor │ │ ├── CommonDataInterceptor.java │ │ └── SecurityHandlerInterceptor.java │ │ └── method │ │ └── support │ │ ├── SessionAttribute.java │ │ └── SessionAttributeProcessor.java │ └── webapp │ ├── WEB-INF │ ├── templates │ │ ├── footer.jsp │ │ ├── header.jsp │ │ └── template.jsp │ ├── tiles.xml │ └── views │ │ ├── book │ │ ├── detail.jsp │ │ └── search.jsp │ │ ├── cart │ │ └── checkout.jsp │ │ ├── customer │ │ ├── account.jsp │ │ └── register.jsp │ │ ├── index.jsp │ │ └── login.jsp │ └── index.jsp ├── chapter7-bookstore ├── .gitignore ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── apress │ │ └── prospringmvc │ │ └── bookstore │ │ └── web │ │ ├── BookstoreWebApplicationInitializer.java │ │ ├── UploadOrderForm.java │ │ ├── config │ │ ├── ViewConfiguration.java │ │ └── WebMvcContextConfiguration.java │ │ ├── controller │ │ ├── AccountController.java │ │ ├── BookDetailController.java │ │ ├── BookSearchController.java │ │ ├── CartController.java │ │ ├── CheckoutController.java │ │ ├── LoginController.java │ │ ├── LogoutController.java │ │ ├── RegistrationController.java │ │ └── UploadOrderController.java │ │ ├── interceptor │ │ ├── CommonDataInterceptor.java │ │ └── SecurityHandlerInterceptor.java │ │ └── method │ │ └── support │ │ ├── SessionAttribute.java │ │ └── SessionAttributeProcessor.java │ └── webapp │ ├── WEB-INF │ ├── templates │ │ ├── footer.jsp │ │ ├── header.jsp │ │ └── template.jsp │ ├── tiles.xml │ └── views │ │ ├── book │ │ ├── detail.jsp │ │ └── search.jsp │ │ ├── customer │ │ ├── account.jsp │ │ └── register.jsp │ │ ├── index.jsp │ │ └── login.jsp │ └── index.jsp ├── chapter8-bookstore ├── .gitignore ├── build.gradle └── src │ └── main │ ├── java │ └── com │ │ └── apress │ │ └── prospringmvc │ │ └── bookstore │ │ └── web │ │ ├── BookstoreWebApplicationInitializer.java │ │ ├── config │ │ ├── ViewConfiguration.java │ │ └── WebMvcContextConfiguration.java │ │ ├── controller │ │ ├── AccountController.java │ │ ├── BookDetailController.java │ │ ├── BookSearchController.java │ │ ├── CartController.java │ │ ├── CheckoutController.java │ │ ├── LoginController.java │ │ ├── LogoutController.java │ │ ├── OrderController.java │ │ └── RegistrationController.java │ │ ├── interceptor │ │ ├── CommonDataInterceptor.java │ │ └── SecurityHandlerInterceptor.java │ │ ├── method │ │ └── support │ │ │ ├── SessionAttribute.java │ │ │ └── SessionAttributeProcessor.java │ │ ├── servlet │ │ └── SimpleServletHandlerAdapter.java │ │ └── view │ │ ├── OrderExcelView.java │ │ ├── OrderPdfView.java │ │ └── SimpleConfigurableViewResolver.java │ ├── resources │ └── views.properties │ └── webapp │ ├── WEB-INF │ ├── freemarker │ │ └── book │ │ │ └── search.ftl │ ├── templates │ │ ├── footer.jsp │ │ ├── header.jsp │ │ └── template.jsp │ ├── tiles.xml │ ├── velocity │ │ └── book │ │ │ └── search.vm │ ├── views.properties │ ├── views.xml │ ├── views │ │ ├── book │ │ │ ├── detail.jsp │ │ │ └── search.jsp │ │ ├── cart │ │ │ └── checkout.jsp │ │ ├── customer │ │ │ ├── account.jsp │ │ │ └── register.jsp │ │ ├── index.jsp │ │ └── login.jsp │ └── xslt │ │ └── index.xslt │ └── index.jsp ├── chapter9-bookstore ├── .gitignore ├── build.gradle └── src │ ├── main │ ├── java │ │ └── com │ │ │ └── apress │ │ │ └── prospringmvc │ │ │ └── bookstore │ │ │ ├── dao │ │ │ └── DummyDao.java │ │ │ └── web │ │ │ ├── BookstoreWebApplicationInitializer.java │ │ │ ├── config │ │ │ ├── ViewConfiguration.java │ │ │ └── WebMvcContextConfiguration.java │ │ │ ├── controller │ │ │ ├── AccountController.java │ │ │ ├── BookDetailController.java │ │ │ ├── BookSearchController.java │ │ │ ├── CartController.java │ │ │ ├── CheckoutController.java │ │ │ ├── LoginController.java │ │ │ ├── LogoutController.java │ │ │ ├── OrderController.java │ │ │ └── RegistrationController.java │ │ │ ├── interceptor │ │ │ ├── CommonDataInterceptor.java │ │ │ └── SecurityHandlerInterceptor.java │ │ │ ├── method │ │ │ └── support │ │ │ │ ├── SessionAttribute.java │ │ │ │ └── SessionAttributeProcessor.java │ │ │ ├── servlet │ │ │ └── SimpleServletHandlerAdapter.java │ │ │ └── view │ │ │ ├── OrderExcelView.java │ │ │ ├── OrderPdfView.java │ │ │ └── SimpleConfigurableViewResolver.java │ ├── resources │ │ └── views.properties │ └── webapp │ │ ├── WEB-INF │ │ ├── freemarker │ │ │ └── book │ │ │ │ └── search.ftl │ │ ├── templates │ │ │ ├── footer.jsp │ │ │ ├── header.jsp │ │ │ └── template.jsp │ │ ├── tiles.xml │ │ ├── velocity │ │ │ └── book │ │ │ │ └── search.vm │ │ ├── views.properties │ │ ├── views.xml │ │ ├── views │ │ │ ├── book │ │ │ │ ├── detail.jsp │ │ │ │ └── search.jsp │ │ │ ├── cart │ │ │ │ └── checkout.jsp │ │ │ ├── customer │ │ │ │ ├── account.jsp │ │ │ │ └── register.jsp │ │ │ ├── index.jsp │ │ │ └── login.jsp │ │ └── xslt │ │ │ └── index.xslt │ │ └── index.jsp │ └── test │ └── java │ └── com │ └── apress │ └── prospringmvc │ └── bookstore │ ├── basic │ └── BasicUnitTest.java │ ├── repository │ └── JpaBookRepositoryTest.java │ ├── service │ └── AccountServiceTest.java │ └── web │ ├── controller │ ├── LoginControllerTest.java │ └── SpringMvcTestLoginControllerTest.java │ └── frontend │ └── SeleniumLoginFrontendTest.java ├── container └── apache-tomcat-7.0.42 │ ├── LICENSE │ ├── NOTICE │ ├── RELEASE-NOTES │ ├── RUNNING.txt │ ├── bin │ ├── bootstrap.jar │ ├── catalina-tasks.xml │ ├── catalina.bat │ ├── catalina.sh │ ├── commons-daemon-native.tar.gz │ ├── commons-daemon.jar │ ├── configtest.bat │ ├── configtest.sh │ ├── cpappend.bat │ ├── daemon.sh │ ├── digest.bat │ ├── digest.sh │ ├── setclasspath.bat │ ├── setclasspath.sh │ ├── shutdown.bat │ ├── shutdown.sh │ ├── startup.bat │ ├── startup.sh │ ├── tomcat-juli.jar │ ├── tomcat-native.tar.gz │ ├── tool-wrapper.bat │ ├── tool-wrapper.sh │ ├── version.bat │ └── version.sh │ ├── conf │ ├── catalina.policy │ ├── catalina.properties │ ├── context.xml │ ├── logging.properties │ ├── server.xml │ ├── tomcat-users.xml │ └── web.xml │ ├── lib │ ├── annotations-api.jar │ ├── catalina-ant.jar │ ├── catalina-ha.jar │ ├── catalina-tribes.jar │ ├── catalina.jar │ ├── ecj-4.2.2.jar │ ├── el-api.jar │ ├── jasper-el.jar │ ├── jasper.jar │ ├── jsp-api.jar │ ├── servlet-api.jar │ ├── tomcat-api.jar │ ├── tomcat-coyote.jar │ ├── tomcat-dbcp.jar │ ├── tomcat-i18n-es.jar │ ├── tomcat-i18n-fr.jar │ ├── tomcat-i18n-ja.jar │ ├── tomcat-jdbc.jar │ └── tomcat-util.jar │ ├── output.log │ ├── temp │ └── safeToDelete.tmp │ └── webapps │ ├── ROOT │ ├── RELEASE-NOTES.txt │ ├── WEB-INF │ │ └── web.xml │ ├── asf-logo-wide.gif │ ├── asf-logo.png │ ├── bg-button.png │ ├── bg-middle.png │ ├── bg-nav-item.png │ ├── bg-nav.png │ ├── bg-upper.png │ ├── build.xml │ ├── favicon.ico │ ├── index.jsp │ ├── tomcat-power.gif │ ├── tomcat.css │ ├── tomcat.gif │ ├── tomcat.png │ └── tomcat.svg │ ├── docs │ ├── BUILDING.txt │ ├── RELEASE-NOTES.txt │ ├── RUNNING.txt │ ├── WEB-INF │ │ └── web.xml │ ├── aio.html │ ├── api │ │ └── index.html │ ├── appdev │ │ ├── build.xml.txt │ │ ├── deployment.html │ │ ├── index.html │ │ ├── installation.html │ │ ├── introduction.html │ │ ├── processes.html │ │ ├── sample │ │ │ ├── build.xml │ │ │ ├── docs │ │ │ │ └── README.txt │ │ │ ├── index.html │ │ │ ├── sample.war │ │ │ ├── src │ │ │ │ └── mypackage │ │ │ │ │ └── Hello.java │ │ │ └── web │ │ │ │ ├── WEB-INF │ │ │ │ └── web.xml │ │ │ │ ├── hello.jsp │ │ │ │ ├── images │ │ │ │ └── tomcat.gif │ │ │ │ └── index.html │ │ ├── source.html │ │ └── web.xml.txt │ ├── apr.html │ ├── architecture │ │ ├── index.html │ │ ├── overview.html │ │ ├── requestProcess.html │ │ ├── requestProcess │ │ │ ├── requestProcess.pdf │ │ │ └── roseModel.mdl │ │ ├── startup.html │ │ └── startup │ │ │ ├── serverStartup.pdf │ │ │ └── serverStartup.txt │ ├── balancer-howto.html │ ├── building.html │ ├── cgi-howto.html │ ├── changelog.html │ ├── class-loader-howto.html │ ├── cluster-howto.html │ ├── comments.html │ ├── config │ │ ├── ajp.html │ │ ├── cluster-channel.html │ │ ├── cluster-deployer.html │ │ ├── cluster-interceptor.html │ │ ├── cluster-listener.html │ │ ├── cluster-manager.html │ │ ├── cluster-membership.html │ │ ├── cluster-receiver.html │ │ ├── cluster-sender.html │ │ ├── cluster-valve.html │ │ ├── cluster.html │ │ ├── context.html │ │ ├── engine.html │ │ ├── executor.html │ │ ├── filter.html │ │ ├── globalresources.html │ │ ├── host.html │ │ ├── http.html │ │ ├── index.html │ │ ├── jar-scanner.html │ │ ├── listeners.html │ │ ├── loader.html │ │ ├── manager.html │ │ ├── realm.html │ │ ├── resources.html │ │ ├── server.html │ │ ├── service.html │ │ ├── systemprops.html │ │ └── valve.html │ ├── connectors.html │ ├── default-servlet.html │ ├── deployer-howto.html │ ├── developers.html │ ├── elapi │ │ └── index.html │ ├── extras.html │ ├── funcspecs │ │ ├── fs-admin-apps.html │ │ ├── fs-admin-objects.html │ │ ├── fs-admin-opers.html │ │ ├── fs-default.html │ │ ├── fs-jdbc-realm.html │ │ ├── fs-jndi-realm.html │ │ ├── fs-memory-realm.html │ │ ├── index.html │ │ └── mbean-names.html │ ├── html-manager-howto.html │ ├── images │ │ ├── add.gif │ │ ├── asf-logo.gif │ │ ├── code.gif │ │ ├── cors-flowchart.png │ │ ├── design.gif │ │ ├── docs.gif │ │ ├── fix.gif │ │ ├── printer.gif │ │ ├── tomcat.gif │ │ ├── tomcat.svg │ │ ├── update.gif │ │ └── void.gif │ ├── index.html │ ├── introduction.html │ ├── jasper-howto.html │ ├── jdbc-pool.html │ ├── jndi-datasource-examples-howto.html │ ├── jndi-resources-howto.html │ ├── jspapi │ │ └── index.html │ ├── logging.html │ ├── manager-howto.html │ ├── maven-jars.html │ ├── mbeans-descriptor-howto.html │ ├── monitoring.html │ ├── proxy-howto.html │ ├── realm-howto.html │ ├── security-howto.html │ ├── security-manager-howto.html │ ├── servletapi │ │ └── index.html │ ├── setup.html │ ├── ssi-howto.html │ ├── ssl-howto.html │ ├── tribes │ │ ├── developers.html │ │ ├── faq.html │ │ ├── interceptors.html │ │ ├── introduction.html │ │ ├── membership.html │ │ ├── setup.html │ │ ├── status.html │ │ └── transport.html │ ├── virtual-hosting-howto.html │ ├── web-socket-howto.html │ ├── windows-auth-howto.html │ └── windows-service-howto.html │ ├── examples │ ├── WEB-INF │ │ ├── classes │ │ │ ├── CookieExample.class │ │ │ ├── CookieExample.java │ │ │ ├── HelloWorldExample.class │ │ │ ├── HelloWorldExample.java │ │ │ ├── LocalStrings.properties │ │ │ ├── LocalStrings_en.properties │ │ │ ├── LocalStrings_es.properties │ │ │ ├── LocalStrings_fr.properties │ │ │ ├── LocalStrings_pt.properties │ │ │ ├── RequestHeaderExample.class │ │ │ ├── RequestHeaderExample.java │ │ │ ├── RequestInfoExample.class │ │ │ ├── RequestInfoExample.java │ │ │ ├── RequestParamExample.class │ │ │ ├── RequestParamExample.java │ │ │ ├── ServletToJsp.class │ │ │ ├── ServletToJsp.java │ │ │ ├── SessionExample.class │ │ │ ├── SessionExample.java │ │ │ ├── async │ │ │ │ ├── Async0$1.class │ │ │ │ ├── Async0.class │ │ │ │ ├── Async0.java │ │ │ │ ├── Async1$1.class │ │ │ │ ├── Async1.class │ │ │ │ ├── Async1.java │ │ │ │ ├── Async2$1.class │ │ │ │ ├── Async2.class │ │ │ │ ├── Async2.java │ │ │ │ ├── Async3.class │ │ │ │ ├── Async3.java │ │ │ │ ├── AsyncStockServlet.class │ │ │ │ ├── AsyncStockServlet.java │ │ │ │ ├── Stockticker$Stock.class │ │ │ │ ├── Stockticker$TickListener.class │ │ │ │ ├── Stockticker.class │ │ │ │ └── Stockticker.java │ │ │ ├── cal │ │ │ │ ├── Entries.class │ │ │ │ ├── Entries.java │ │ │ │ ├── Entry.class │ │ │ │ ├── Entry.java │ │ │ │ ├── JspCalendar.class │ │ │ │ ├── JspCalendar.java │ │ │ │ ├── TableBean.class │ │ │ │ └── TableBean.java │ │ │ ├── chat │ │ │ │ ├── ChatServlet$MessageSender.class │ │ │ │ ├── ChatServlet.class │ │ │ │ └── ChatServlet.java │ │ │ ├── checkbox │ │ │ │ ├── CheckTest.class │ │ │ │ └── CheckTest.java │ │ │ ├── colors │ │ │ │ ├── ColorGameBean.class │ │ │ │ └── ColorGameBean.java │ │ │ ├── compressionFilters │ │ │ │ ├── CompressionFilter.class │ │ │ │ ├── CompressionFilter.java │ │ │ │ ├── CompressionFilterTestServlet.class │ │ │ │ ├── CompressionFilterTestServlet.java │ │ │ │ ├── CompressionResponseStream.class │ │ │ │ ├── CompressionResponseStream.java │ │ │ │ ├── CompressionServletResponseWrapper.class │ │ │ │ └── CompressionServletResponseWrapper.java │ │ │ ├── dates │ │ │ │ ├── JspCalendar.class │ │ │ │ └── JspCalendar.java │ │ │ ├── error │ │ │ │ ├── Smart.class │ │ │ │ └── Smart.java │ │ │ ├── examples │ │ │ │ ├── ExampleTagBase.class │ │ │ │ ├── ExampleTagBase.java │ │ │ │ ├── FooTag.class │ │ │ │ ├── FooTag.java │ │ │ │ ├── FooTagExtraInfo.class │ │ │ │ ├── FooTagExtraInfo.java │ │ │ │ ├── LogTag.class │ │ │ │ ├── LogTag.java │ │ │ │ ├── ShowSource.class │ │ │ │ ├── ShowSource.java │ │ │ │ ├── ValuesTag.class │ │ │ │ └── ValuesTag.java │ │ │ ├── filters │ │ │ │ ├── ExampleFilter.class │ │ │ │ └── ExampleFilter.java │ │ │ ├── jsp2 │ │ │ │ └── examples │ │ │ │ │ ├── BookBean.class │ │ │ │ │ ├── BookBean.java │ │ │ │ │ ├── FooBean.class │ │ │ │ │ ├── FooBean.java │ │ │ │ │ ├── ValuesBean.class │ │ │ │ │ ├── ValuesBean.java │ │ │ │ │ ├── el │ │ │ │ │ ├── Functions.class │ │ │ │ │ └── Functions.java │ │ │ │ │ └── simpletag │ │ │ │ │ ├── EchoAttributesTag.class │ │ │ │ │ ├── EchoAttributesTag.java │ │ │ │ │ ├── FindBookSimpleTag.class │ │ │ │ │ ├── FindBookSimpleTag.java │ │ │ │ │ ├── HelloWorldSimpleTag.class │ │ │ │ │ ├── HelloWorldSimpleTag.java │ │ │ │ │ ├── RepeatSimpleTag.class │ │ │ │ │ ├── RepeatSimpleTag.java │ │ │ │ │ ├── ShuffleSimpleTag.class │ │ │ │ │ ├── ShuffleSimpleTag.java │ │ │ │ │ ├── TileSimpleTag.class │ │ │ │ │ └── TileSimpleTag.java │ │ │ ├── listeners │ │ │ │ ├── ContextListener.class │ │ │ │ ├── ContextListener.java │ │ │ │ ├── SessionListener.class │ │ │ │ └── SessionListener.java │ │ │ ├── num │ │ │ │ ├── NumberGuessBean.class │ │ │ │ └── NumberGuessBean.java │ │ │ ├── sessions │ │ │ │ ├── DummyCart.class │ │ │ │ └── DummyCart.java │ │ │ ├── util │ │ │ │ ├── HTMLFilter.class │ │ │ │ └── HTMLFilter.java │ │ │ ├── validators │ │ │ │ ├── DebugValidator.class │ │ │ │ └── DebugValidator.java │ │ │ └── websocket │ │ │ │ ├── chat │ │ │ │ ├── ChatWebSocketServlet$1.class │ │ │ │ ├── ChatWebSocketServlet$ChatMessageInbound.class │ │ │ │ ├── ChatWebSocketServlet.class │ │ │ │ └── ChatWebSocketServlet.java │ │ │ │ ├── echo │ │ │ │ ├── EchoMessage$EchoMessageInbound.class │ │ │ │ ├── EchoMessage.class │ │ │ │ ├── EchoMessage.java │ │ │ │ ├── EchoStream$1.class │ │ │ │ ├── EchoStream$EchoStreamInbound.class │ │ │ │ ├── EchoStream.class │ │ │ │ └── EchoStream.java │ │ │ │ └── snake │ │ │ │ ├── Direction.class │ │ │ │ ├── Direction.java │ │ │ │ ├── Location$1.class │ │ │ │ ├── Location.class │ │ │ │ ├── Location.java │ │ │ │ ├── Snake.class │ │ │ │ ├── Snake.java │ │ │ │ ├── SnakeWebSocketServlet$1.class │ │ │ │ ├── SnakeWebSocketServlet$SnakeMessageInbound.class │ │ │ │ ├── SnakeWebSocketServlet.class │ │ │ │ └── SnakeWebSocketServlet.java │ │ ├── jsp │ │ │ ├── applet │ │ │ │ └── Clock2.java │ │ │ ├── debug-taglib.tld │ │ │ └── example-taglib.tld │ │ ├── jsp2 │ │ │ └── jsp2-example-taglib.tld │ │ ├── lib │ │ │ ├── jstl.jar │ │ │ └── standard.jar │ │ ├── tags │ │ │ ├── displayProducts.tag │ │ │ ├── helloWorld.tag │ │ │ ├── panel.tag │ │ │ └── xhtmlbasic.tag │ │ └── web.xml │ ├── index.html │ ├── jsp │ │ ├── async │ │ │ ├── async1.jsp │ │ │ ├── async1.jsp.html │ │ │ ├── async3.jsp │ │ │ ├── async3.jsp.html │ │ │ ├── index.jsp │ │ │ └── index.jsp.html │ │ ├── cal │ │ │ ├── Entries.java.html │ │ │ ├── Entry.java.html │ │ │ ├── JspCalendar.java.html │ │ │ ├── TableBean.java.html │ │ │ ├── cal1.jsp │ │ │ ├── cal1.jsp.html │ │ │ ├── cal2.jsp │ │ │ ├── cal2.jsp.html │ │ │ ├── calendar.html │ │ │ └── login.html │ │ ├── chat │ │ │ ├── index.jsp │ │ │ ├── index.jsp.html │ │ │ ├── login.jsp │ │ │ ├── login.jsp.html │ │ │ ├── post.jsp │ │ │ └── post.jsp.html │ │ ├── checkbox │ │ │ ├── CheckTest.html │ │ │ ├── check.html │ │ │ ├── checkresult.jsp │ │ │ ├── checkresult.jsp.html │ │ │ └── cresult.html │ │ ├── colors │ │ │ ├── ColorGameBean.html │ │ │ ├── clr.html │ │ │ ├── colors.html │ │ │ ├── colrs.jsp │ │ │ └── colrs.jsp.html │ │ ├── dates │ │ │ ├── date.html │ │ │ ├── date.jsp │ │ │ └── date.jsp.html │ │ ├── error │ │ │ ├── er.html │ │ │ ├── err.jsp │ │ │ ├── err.jsp.html │ │ │ ├── error.html │ │ │ ├── errorpge.jsp │ │ │ └── errorpge.jsp.html │ │ ├── forward │ │ │ ├── forward.jsp │ │ │ ├── forward.jsp.html │ │ │ ├── fwd.html │ │ │ ├── one.jsp │ │ │ ├── one.jsp.html │ │ │ └── two.html │ │ ├── images │ │ │ ├── code.gif │ │ │ ├── execute.gif │ │ │ ├── read.gif │ │ │ └── return.gif │ │ ├── include │ │ │ ├── foo.html │ │ │ ├── foo.jsp │ │ │ ├── foo.jsp.html │ │ │ ├── inc.html │ │ │ ├── include.jsp │ │ │ └── include.jsp.html │ │ ├── index.html │ │ ├── jsp2 │ │ │ ├── el │ │ │ │ ├── Functions.java.html │ │ │ │ ├── ValuesBean.java.html │ │ │ │ ├── ValuesTag.java.html │ │ │ │ ├── basic-arithmetic.html │ │ │ │ ├── basic-arithmetic.jsp │ │ │ │ ├── basic-arithmetic.jsp.html │ │ │ │ ├── basic-comparisons.html │ │ │ │ ├── basic-comparisons.jsp │ │ │ │ ├── basic-comparisons.jsp.html │ │ │ │ ├── composite.html │ │ │ │ ├── composite.jsp │ │ │ │ ├── composite.jsp.html │ │ │ │ ├── functions.html │ │ │ │ ├── functions.jsp │ │ │ │ ├── functions.jsp.html │ │ │ │ ├── implicit-objects.html │ │ │ │ ├── implicit-objects.jsp │ │ │ │ └── implicit-objects.jsp.html │ │ │ ├── jspattribute │ │ │ │ ├── FooBean.java.html │ │ │ │ ├── HelloWorldSimpleTag.java.html │ │ │ │ ├── ShuffleSimpleTag.java.html │ │ │ │ ├── TileSimpleTag.java.html │ │ │ │ ├── jspattribute.html │ │ │ │ ├── jspattribute.jsp │ │ │ │ ├── jspattribute.jsp.html │ │ │ │ ├── shuffle.html │ │ │ │ ├── shuffle.jsp │ │ │ │ └── shuffle.jsp.html │ │ │ ├── jspx │ │ │ │ ├── basic.html │ │ │ │ ├── basic.jspx │ │ │ │ ├── basic.jspx.html │ │ │ │ ├── svgexample.html │ │ │ │ ├── textRotate.html │ │ │ │ ├── textRotate.jpg │ │ │ │ ├── textRotate.jspx │ │ │ │ └── textRotate.jspx.html │ │ │ ├── misc │ │ │ │ ├── EchoAttributesTag.java.html │ │ │ │ ├── coda.jspf │ │ │ │ ├── coda.jspf.html │ │ │ │ ├── config.html │ │ │ │ ├── config.jsp │ │ │ │ ├── config.jsp.html │ │ │ │ ├── dynamicattrs.html │ │ │ │ ├── dynamicattrs.jsp │ │ │ │ ├── dynamicattrs.jsp.html │ │ │ │ ├── prelude.jspf │ │ │ │ └── prelude.jspf.html │ │ │ ├── simpletag │ │ │ │ ├── BookBean.java.html │ │ │ │ ├── FindBookSimpleTag.java.html │ │ │ │ ├── Functions.java.html │ │ │ │ ├── HelloWorldSimpleTag.java.html │ │ │ │ ├── RepeatSimpleTag.java.html │ │ │ │ ├── book.html │ │ │ │ ├── book.jsp │ │ │ │ ├── book.jsp.html │ │ │ │ ├── hello.html │ │ │ │ ├── hello.jsp │ │ │ │ ├── hello.jsp.html │ │ │ │ ├── repeat.html │ │ │ │ ├── repeat.jsp │ │ │ │ └── repeat.jsp.html │ │ │ └── tagfiles │ │ │ │ ├── displayProducts.tag.html │ │ │ │ ├── hello.html │ │ │ │ ├── hello.jsp │ │ │ │ ├── hello.jsp.html │ │ │ │ ├── helloWorld.tag.html │ │ │ │ ├── panel.html │ │ │ │ ├── panel.jsp │ │ │ │ ├── panel.jsp.html │ │ │ │ ├── panel.tag.html │ │ │ │ ├── products.html │ │ │ │ ├── products.jsp │ │ │ │ ├── products.jsp.html │ │ │ │ └── xhtmlbasic.tag.html │ │ ├── jsptoserv │ │ │ ├── ServletToJsp.java.html │ │ │ ├── hello.jsp │ │ │ ├── hello.jsp.html │ │ │ ├── jsptoservlet.jsp │ │ │ ├── jsptoservlet.jsp.html │ │ │ └── jts.html │ │ ├── num │ │ │ ├── numguess.html │ │ │ ├── numguess.jsp │ │ │ └── numguess.jsp.html │ │ ├── plugin │ │ │ ├── applet │ │ │ │ ├── Clock2.class │ │ │ │ └── Clock2.java │ │ │ ├── plugin.html │ │ │ ├── plugin.jsp │ │ │ └── plugin.jsp.html │ │ ├── security │ │ │ └── protected │ │ │ │ ├── error.jsp │ │ │ │ ├── error.jsp.html │ │ │ │ ├── index.jsp │ │ │ │ ├── index.jsp.html │ │ │ │ ├── login.jsp │ │ │ │ └── login.jsp.html │ │ ├── sessions │ │ │ ├── DummyCart.html │ │ │ ├── carts.html │ │ │ ├── carts.jsp │ │ │ ├── carts.jsp.html │ │ │ └── crt.html │ │ ├── simpletag │ │ │ ├── foo.html │ │ │ ├── foo.jsp │ │ │ └── foo.jsp.html │ │ ├── snp │ │ │ ├── snoop.html │ │ │ ├── snoop.jsp │ │ │ └── snoop.jsp.html │ │ ├── source.jsp │ │ ├── source.jsp.html │ │ ├── tagplugin │ │ │ ├── choose.html │ │ │ ├── choose.jsp │ │ │ ├── choose.jsp.html │ │ │ ├── foreach.html │ │ │ ├── foreach.jsp │ │ │ ├── foreach.jsp.html │ │ │ ├── howto.html │ │ │ ├── if.html │ │ │ ├── if.jsp │ │ │ ├── if.jsp.html │ │ │ └── notes.html │ │ └── xml │ │ │ ├── xml.html │ │ │ ├── xml.jsp │ │ │ └── xml.jsp.html │ ├── servlets │ │ ├── cookies.html │ │ ├── helloworld.html │ │ ├── images │ │ │ ├── code.gif │ │ │ ├── execute.gif │ │ │ └── return.gif │ │ ├── index.html │ │ ├── reqheaders.html │ │ ├── reqinfo.html │ │ ├── reqparams.html │ │ └── sessions.html │ └── websocket │ │ ├── chat.html │ │ ├── echo.html │ │ ├── index.html │ │ └── snake.html │ ├── host-manager │ ├── META-INF │ │ └── context.xml │ ├── WEB-INF │ │ ├── jsp │ │ │ ├── 401.jsp │ │ │ ├── 403.jsp │ │ │ └── 404.jsp │ │ └── web.xml │ ├── images │ │ ├── add.gif │ │ ├── asf-logo.gif │ │ ├── code.gif │ │ ├── design.gif │ │ ├── docs.gif │ │ ├── fix.gif │ │ ├── tomcat.gif │ │ ├── update.gif │ │ └── void.gif │ ├── index.jsp │ └── manager.xml │ └── manager │ ├── META-INF │ └── context.xml │ ├── WEB-INF │ ├── jsp │ │ ├── 401.jsp │ │ ├── 403.jsp │ │ ├── 404.jsp │ │ ├── sessionDetail.jsp │ │ └── sessionsList.jsp │ └── web.xml │ ├── images │ ├── add.gif │ ├── asf-logo.gif │ ├── code.gif │ ├── design.gif │ ├── docs.gif │ ├── fix.gif │ ├── tomcat.gif │ ├── update.gif │ └── void.gif │ ├── index.jsp │ ├── status.xsd │ └── xform.xsl ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle/ 2 | /.settings/ 3 | /bin/ 4 | /build/ 5 | /.classpath 6 | /.project 7 | /*.iml 8 | /.idea/ 9 | /out/ 10 | /*.ipr 11 | /*.iws 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Pro Spring MVC Code 2 | =================== 3 | 4 | This repository contains the code samples and sample application as build and published in Pro Spring MVC. 5 | 6 | 7 | -------------------------------------------------------------------------------- /appendixA-bookstore/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle/ 2 | /bin/ 3 | /build/ 4 | /*.classpath 5 | /*.project 6 | /*.log 7 | /.settings/ 8 | /*.iml 9 | -------------------------------------------------------------------------------- /appendixA-bookstore/build.gradle: -------------------------------------------------------------------------------- 1 | war { 2 | archiveName = 'appendix-A-swf.war' 3 | } 4 | 5 | dependencies() { 6 | compile "org.springframework.webflow:spring-webflow:$springSwfVersion" 7 | compile "org.springframework.webflow:spring-js:$springSwfVersion" 8 | compile "org.springframework.webflow:spring-binding:$springSwfVersion" 9 | compile "commons-codec:commons-codec:1.6" 10 | compile "org.springframework.security:spring-security-core:$springSecurityVersion" 11 | compile "org.springframework.security:spring-security-web:$springSecurityVersion" 12 | compile "org.springframework.security:spring-security-config:$springSecurityVersion" 13 | compile "org.springframework.security:spring-security-taglibs:$springSecurityVersion" 14 | } 15 | 16 | -------------------------------------------------------------------------------- /appendixA-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/controller/AuthenticationController.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.controller; 2 | 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.servlet.ModelAndView; 6 | 7 | import com.apress.prospringmvc.bookstore.service.BookstoreService; 8 | 9 | /** 10 | * This controller talks to the {@link BookstoreService} to authenticate a user. This controller can be used via Spring 11 | * MVC (request mapping login.html) or as POJO for example via Web Flow 12 | * 13 | * @author Marten Deinum 14 | * @author Koen Serneels 15 | * 16 | */ 17 | @Controller 18 | public class AuthenticationController { 19 | 20 | @RequestMapping("public/authentication/login.htm") 21 | public ModelAndView authentication() { 22 | ModelAndView mov = new ModelAndView(); 23 | mov.setViewName("login"); 24 | return mov; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /appendixA-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/controller/MainController.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.controller; 2 | 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.servlet.ModelAndView; 6 | 7 | /** 8 | * Controller for the homepage 9 | * 10 | * @author Marten Deinum 11 | * @author Koen Serneels 12 | * 13 | */ 14 | @Controller 15 | public class MainController { 16 | @RequestMapping("public/main.htm") 17 | public ModelAndView main() { 18 | ModelAndView mov = new ModelAndView(); 19 | mov.setViewName("main"); 20 | return mov; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /appendixA-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/controller/ManageCategoryForm.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.controller; 2 | 3 | import org.hibernate.validator.constraints.NotEmpty; 4 | 5 | /** 6 | * Form for adding {@link Category} enitities to the system 7 | * 8 | * @See ManageBookController 9 | * @author Marten Deinum 10 | * @author Koen Serneels 11 | * 12 | */ 13 | public class ManageCategoryForm { 14 | 15 | @NotEmpty 16 | private String category; 17 | 18 | public String getCategory() { 19 | return category; 20 | } 21 | 22 | public void setCategory(String category) { 23 | this.category = category; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /appendixA-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/interceptor/CommonDataHandlerInterceptor.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.interceptor; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | import javax.servlet.http.HttpServletResponse; 5 | 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; 8 | 9 | import com.apress.prospringmvc.bookstore.service.BookstoreService; 10 | 11 | /** 12 | * Makes the random books available on the Servlet requet 13 | * 14 | * @author Marten Deinum 15 | * @author Koen Serneels 16 | * 17 | */ 18 | public class CommonDataHandlerInterceptor extends HandlerInterceptorAdapter { 19 | 20 | @Autowired 21 | private BookstoreService bookstoreService; 22 | 23 | @Override 24 | public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 25 | request.setAttribute("randomBooks", this.bookstoreService.findRandomBooks()); 26 | return super.preHandle(request, response, handler); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /appendixA-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/security/SecurityContextSupport.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.security; 2 | 3 | import org.springframework.security.core.context.SecurityContextHolder; 4 | 5 | /** 6 | * Support class for easy access to our custom {@link BookstoreUserDetails} 7 | * 8 | * @author Marten Deinum 9 | * @author Koen Serneels 10 | * 11 | */ 12 | public class SecurityContextSupport { 13 | 14 | public static BookstoreUserDetails getUserDetails() { 15 | return (BookstoreUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /appendixA-bookstore/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 7 | 8 | 9 | 10 | 11 | bookstore.log 12 | 13 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /appendixA-bookstore/src/main/resources/spring/context.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /appendixA-bookstore/src/main/webapp/WEB-INF/templates/contentOnly.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 5 | <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 6 | <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 7 | <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /appendixA-bookstore/src/main/webapp/WEB-INF/templates/footer.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 3 | <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 4 | 5 | 10 | -------------------------------------------------------------------------------- /appendixA-bookstore/src/main/webapp/WEB-INF/view/public/book/detail.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | 3 | 4 | ${book.title} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
Title${book.title}
Description${book.description}
Author${book.author}
Year${book.year}
ISBN${book.isbn}
Price${book.price}
-------------------------------------------------------------------------------- /appendixA-bookstore/src/main/webapp/WEB-INF/view/public/createOrders/showSelectedBooks.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> 3 | <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 4 | <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> 5 | 6 |
7 | 8 | 9 | 10 | 13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
11 | 12 | 14 | 15 |
${book.key.title}${book.value}
29 |
30 | -------------------------------------------------------------------------------- /appendixA-bookstore/src/main/webapp/WEB-INF/view/secured/ordersOverview/orderDetail.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | 3 |

Order detail

4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
Book titleBook descriptionBook price
${orderDetail.book.title}${orderDetail.book.description}${orderDetail.book.price}
25 |
-------------------------------------------------------------------------------- /appendixA-bookstore/src/main/webapp/WEB-INF/view/secured/ordersOverview/ordersOverview-flow.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /appendixA-bookstore/src/main/webapp/WEB-INF/view/secured/placeOrders/placeOrders-flow.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /appendixA-bookstore/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /bookstore-shared/.gitignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | /*.project 3 | /*.classpath 4 | /.settings/ 5 | /bin/ 6 | -------------------------------------------------------------------------------- /bookstore-shared/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-shared/build.gradle -------------------------------------------------------------------------------- /bookstore-shared/src/main/java/com/apress/prospringmvc/bookstore/domain/BookSearchCriteria.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.domain; 2 | 3 | /** 4 | * Object to hold the search criteria to search books. 5 | * 6 | * @author Marten Deinum 7 | * @author Koen Serneels 8 | * 9 | */ 10 | public class BookSearchCriteria { 11 | 12 | private String title; 13 | private Category category; 14 | 15 | public String getTitle() { 16 | return this.title; 17 | } 18 | 19 | public void setTitle(String title) { 20 | this.title = title; 21 | } 22 | 23 | public void setCategory(Category category) { 24 | this.category = category; 25 | } 26 | 27 | public Category getCategory() { 28 | return this.category; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /bookstore-shared/src/main/java/com/apress/prospringmvc/bookstore/domain/support/CategoryBuilder.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.domain.support; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | import com.apress.prospringmvc.bookstore.domain.Category; 6 | 7 | /** 8 | * Builds {@link Category} domain objects 9 | * 10 | * @author Marten Deinum 11 | * @author Koen Serneels 12 | * 13 | */ 14 | @Component 15 | public class CategoryBuilder extends EntityBuilder { 16 | 17 | @Override 18 | void initProduct() { 19 | } 20 | 21 | @Override 22 | Category assembleProduct() { 23 | return this.product; 24 | } 25 | 26 | public CategoryBuilder name(String name) { 27 | this.product = new Category(name); 28 | return this; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /bookstore-shared/src/main/java/com/apress/prospringmvc/bookstore/formatter/DateFormat.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.formatter; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * @author Marten Deinum 10 | * @author Koen Serneels 11 | * 12 | */ 13 | @Target({ ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER }) 14 | @Retention(RetentionPolicy.RUNTIME) 15 | public @interface DateFormat { 16 | 17 | String format() default ""; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /bookstore-shared/src/main/java/com/apress/prospringmvc/bookstore/repository/AccountRepository.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.repository; 2 | 3 | import com.apress.prospringmvc.bookstore.domain.Account; 4 | 5 | /** 6 | * Repository for working with {@link Account} domain objects 7 | * 8 | * @author Marten Deinum 9 | * @author Koen Serneels 10 | * 11 | */ 12 | public interface AccountRepository { 13 | 14 | Account findByUsername(String username); 15 | 16 | Account findById(long id); 17 | 18 | Account save(Account account); 19 | 20 | } 21 | -------------------------------------------------------------------------------- /bookstore-shared/src/main/java/com/apress/prospringmvc/bookstore/repository/BookRepository.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.repository; 2 | 3 | import java.util.List; 4 | 5 | import com.apress.prospringmvc.bookstore.domain.Book; 6 | import com.apress.prospringmvc.bookstore.domain.BookSearchCriteria; 7 | import com.apress.prospringmvc.bookstore.domain.Category; 8 | 9 | /** 10 | * Repository for working with {@link Book} domain objects 11 | * 12 | * @author Marten Deinum 13 | * @author Koen Serneels 14 | * 15 | */ 16 | public interface BookRepository { 17 | 18 | Book findById(long id); 19 | 20 | List findByCategory(Category category); 21 | 22 | List findRandom(int count); 23 | 24 | List findBooks(BookSearchCriteria bookSearchCriteria); 25 | 26 | void storeBook(Book book); 27 | 28 | } 29 | -------------------------------------------------------------------------------- /bookstore-shared/src/main/java/com/apress/prospringmvc/bookstore/repository/CategoryRepository.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.repository; 2 | 3 | import java.util.List; 4 | 5 | import com.apress.prospringmvc.bookstore.domain.Category; 6 | 7 | /** 8 | * Repository for working with {@link Category} domain objects 9 | * 10 | * @author Marten Deinum 11 | * @author Koen Serneels 12 | * 13 | */ 14 | public interface CategoryRepository { 15 | 16 | List findAll(); 17 | 18 | Category findById(long id); 19 | 20 | void storeCategory(Category category); 21 | } 22 | -------------------------------------------------------------------------------- /bookstore-shared/src/main/java/com/apress/prospringmvc/bookstore/repository/OrderRepository.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.repository; 2 | 3 | import java.util.List; 4 | 5 | import com.apress.prospringmvc.bookstore.domain.Account; 6 | import com.apress.prospringmvc.bookstore.domain.Order; 7 | 8 | /** 9 | * Repository for working with {@link Order} domain objects 10 | * 11 | * @author Marten Deinum 12 | * @author Koen Serneels 13 | * 14 | */ 15 | public interface OrderRepository { 16 | 17 | /** 18 | * Find the {@link Order} for the given id. 19 | * 20 | * @param id id of the order to find. 21 | * @return the order belonging to the id. 22 | */ 23 | Order findById(long id); 24 | 25 | /** 26 | * Save the order in the databse. 27 | */ 28 | Order save(Order order); 29 | 30 | /** 31 | * Find the orders for the given {@link Account}. 32 | * @param customer the account 33 | * @return list of orders for the account, never null 34 | */ 35 | List findByAccount(Account account); 36 | 37 | } 38 | -------------------------------------------------------------------------------- /bookstore-shared/src/main/java/com/apress/prospringmvc/bookstore/service/AccountService.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.service; 2 | 3 | import com.apress.prospringmvc.bookstore.domain.Account; 4 | 5 | /** 6 | * Contract for services that work with an {@link Account}. 7 | * 8 | * @author Marten Deinum 9 | * @author Koen Serneels 10 | * 11 | */ 12 | public interface AccountService { 13 | 14 | Account save(Account account); 15 | 16 | /** 17 | * Handles the login logic. If the {@link Account} can be retrieved and the password is correct we get the 18 | * {@link Account}. In all other cases we get a {@link AuthenticationException}. 19 | * @param username the username 20 | * @param password the password 21 | * @return the account 22 | * @throws AuthenticationException if account not found or incorrect password 23 | */ 24 | Account login(String username, String password) throws AuthenticationException; 25 | 26 | Account getAccount(String username); 27 | } 28 | -------------------------------------------------------------------------------- /bookstore-shared/src/main/java/com/apress/prospringmvc/bookstore/service/AuthenticationException.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.service; 2 | 3 | import org.springframework.http.HttpStatus; 4 | import org.springframework.web.bind.annotation.ResponseStatus; 5 | 6 | /** 7 | * Thrown when username or password are incorect 8 | * 9 | * @author Marten Deinum 10 | * @author Koen Serneels 11 | * 12 | */ 13 | @ResponseStatus(value = HttpStatus.FORBIDDEN) 14 | public class AuthenticationException extends Exception { 15 | 16 | private String code; 17 | 18 | public AuthenticationException(String message, String code) { 19 | super(message); 20 | this.code = code; 21 | } 22 | 23 | public String getCode() { 24 | return this.code; 25 | } 26 | 27 | } -------------------------------------------------------------------------------- /bookstore-shared/src/main/java/com/apress/prospringmvc/bookstore/service/CategoryService.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.service; 2 | 3 | import java.util.List; 4 | 5 | import com.apress.prospringmvc.bookstore.domain.Category; 6 | 7 | /** 8 | * Contract for services that work with an {@link Category}. 9 | * 10 | * @author Marten Deinum 11 | * @author Koen Serneels 12 | * 13 | */ 14 | public interface CategoryService { 15 | 16 | Category findById(long id); 17 | 18 | List findAll(); 19 | 20 | void addCategory(Category category); 21 | 22 | } 23 | -------------------------------------------------------------------------------- /bookstore-shared/src/main/resources/META-INF/persistence.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | org.hibernate.ejb.HibernatePersistence 8 | ENABLE_SELECTIVE 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /bookstore-shared/src/main/resources/ehcache.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 8 | 9 | 12 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /bookstore-shared/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 7 | 8 | 9 | 10 | 11 | bookstore.log 12 | 13 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /bookstore-web-resources/.gitignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | /bin/ 3 | /.settings/ 4 | /*.project 5 | /*.classpath 6 | /*.iml 7 | -------------------------------------------------------------------------------- /bookstore-web-resources/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/build.gradle -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/MANIFEST.MF: -------------------------------------------------------------------------------- 1 | Manifest-Version: 1.0 2 | Class-Path: 3 | 4 | -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/Thumbs.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/Thumbs.db -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/about.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/about.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/banner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/banner.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/big_pic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/big_pic.jpg -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/blank.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/books/9780132350884/book_front_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/books/9780132350884/book_front_cover.png -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/books/9780135974445/book_front_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/books/9780135974445/book_front_cover.png -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/books/9780201485677/book_front_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/books/9780201485677/book_front_cover.png -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/books/9780321356680/book_front_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/books/9780321356680/book_front_cover.png -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/books/9781430209737/book_front_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/books/9781430209737/book_front_cover.png -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/border.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/border.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/box_bottom.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/box_bottom.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/box_center.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/box_center.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/box_top.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/box_top.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/bullet1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/bullet1.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/bullet2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/bullet2.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/bullet3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/bullet3.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/bullet4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/bullet4.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/bullet5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/bullet5.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/bullet6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/bullet6.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/cart.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/cart.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/cart_thumb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/cart_thumb.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/center_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/center_bg.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/close.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/close.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/closelabel.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/closelabel.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/color1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/color1.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/color2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/color2.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/color3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/color3.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/contact_bt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/contact_bt.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/csscreme.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/csscreme.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/de.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/de.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/footer_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/footer_bg.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/footer_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/footer_logo.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/fr.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/fr.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/gb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/gb.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/header.jpg -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/left_menu_bullet.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/left_menu_bullet.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/loading.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/logo.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/new_icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/new_icon.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/new_prod_box.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/new_prod_box.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/next.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/next.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/nextlabel.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/nextlabel.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/nl.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/nl.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/order_now.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/order_now.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/prev.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/prev.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/prevlabel.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/prevlabel.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/prod1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/prod1.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/prod2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/prod2.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/promo_icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/promo_icon.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/register_bt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/register_bt.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/special_icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/special_icon.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/thumb1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/thumb1.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/thumb2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/thumb2.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/thumb3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/thumb3.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/META-INF/web-resources/images/zoom.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/META-INF/web-resources/images/zoom.gif -------------------------------------------------------------------------------- /bookstore-web-resources/src/main/resources/messages_nl.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/bookstore-web-resources/src/main/resources/messages_nl.properties -------------------------------------------------------------------------------- /chapter1-bookstore/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle/ 2 | /bin/ 3 | /build/ 4 | /*.classpath 5 | /*.project 6 | /*.log 7 | /.settings/ 8 | /*.iml 9 | /*.springBeans 10 | -------------------------------------------------------------------------------- /chapter1-bookstore/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/chapter1-bookstore/build.gradle -------------------------------------------------------------------------------- /chapter1-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/IndexController.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web; 2 | 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.servlet.ModelAndView; 6 | 7 | /** 8 | * Controller shows the index page. 9 | * 10 | * @author Marten Deinum 11 | * @author Koen Serneels 12 | */ 13 | @Controller 14 | public class IndexController { 15 | 16 | @RequestMapping(value = "/index.htm") 17 | public ModelAndView indexPage() { 18 | ModelAndView mav = new ModelAndView("/WEB-INF/views/index.jsp"); 19 | mav.addObject("theModelKey", "Spring says HI!"); 20 | return mav; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /chapter1-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/config/WebMvcContextConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.config; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | import com.apress.prospringmvc.bookstore.web.IndexController; 7 | 8 | /** 9 | * Spring MVC configuration 10 | * 11 | * @author Marten Deinum 12 | * @author Koen Serneels 13 | * 14 | */ 15 | @Configuration 16 | public class WebMvcContextConfiguration { 17 | 18 | @Bean 19 | public IndexController indexController() { 20 | return new IndexController(); 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /chapter1-bookstore/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 7 | 8 | 9 | 10 | 11 | pizzas-r-us.log 12 | 13 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /chapter1-bookstore/src/main/webapp/WEB-INF/views/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Bookstore | Home 6 | 7 | 8 | 9 |

How exciting! Our first bookstore page!

10 |

The model says ${theModelKey}

11 | 12 | -------------------------------------------------------------------------------- /chapter1-bookstore/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | <% 2 | response.sendRedirect("index.htm"); 3 | %> -------------------------------------------------------------------------------- /chapter1-bookstore/src/test/java/com/apress/prospringmvc/bookstore/web/config/ContextLoadingTest.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.config; 2 | 3 | import static org.junit.Assert.assertNotNull; 4 | 5 | import org.junit.Test; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | import org.springframework.context.ApplicationContext; 8 | import org.springframework.test.context.ContextConfiguration; 9 | import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests; 10 | import org.springframework.test.context.support.AnnotationConfigContextLoader; 11 | 12 | @ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = { WebMvcContextConfiguration.class }) 13 | public class ContextLoadingTest extends AbstractJUnit4SpringContextTests { 14 | 15 | @Autowired 16 | private ApplicationContext context; 17 | 18 | @Test 19 | public void testLoading() { 20 | assertNotNull(this.context); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /chapter10-bookstore/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle/ 2 | /bin/ 3 | /build/ 4 | /*.classpath 5 | /*.project 6 | /*.log 7 | /.settings/ 8 | /*.iml 9 | -------------------------------------------------------------------------------- /chapter10-bookstore/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies() { 2 | compile "org.springframework.webflow:spring-webflow:$springSwfVersion" 3 | compile "org.springframework.webflow:spring-js:$springSwfVersion" 4 | compile "org.springframework.webflow:spring-binding:$springSwfVersion" 5 | } 6 | 7 | -------------------------------------------------------------------------------- /chapter10-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/controller/MainController.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.controller; 2 | 3 | import javax.servlet.http.HttpSession; 4 | 5 | import org.springframework.stereotype.Controller; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RequestMethod; 8 | import org.springframework.web.servlet.ModelAndView; 9 | 10 | /** 11 | * Controller for the homepage 12 | * 13 | * @author Marten Deinum 14 | * @author Koen Serneels 15 | * 16 | */ 17 | @Controller 18 | public class MainController { 19 | @RequestMapping("index.htm") 20 | public ModelAndView main() { 21 | ModelAndView mov = new ModelAndView(); 22 | mov.setViewName("main"); 23 | return mov; 24 | } 25 | 26 | @RequestMapping(value = "/logout", method = RequestMethod.GET) 27 | public String logout(HttpSession session) { 28 | session.invalidate(); 29 | return "redirect:/index.htm"; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /chapter10-bookstore/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 7 | 8 | 9 | 10 | 11 | bookstore.log 12 | 13 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /chapter10-bookstore/src/main/webapp/WEB-INF/templates/contentOnly.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 5 | <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 6 | <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 7 | <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /chapter10-bookstore/src/main/webapp/WEB-INF/templates/footer.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 3 | <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 4 | 5 | 10 | -------------------------------------------------------------------------------- /chapter10-bookstore/src/main/webapp/WEB-INF/view/book/detail.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | 3 | 4 | ${book.title} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
Title${book.title}
Description${book.description}
Author${book.author}
Year${book.year}
ISBN${book.isbn}
Price${book.price}
-------------------------------------------------------------------------------- /chapter10-bookstore/src/main/webapp/WEB-INF/view/createOrders/selectCategory.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 3 | <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 4 | <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 |
11 | 12 |
15 | 16 |
17 | 18 | 19 |
20 |
21 | 22 | -------------------------------------------------------------------------------- /chapter10-bookstore/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /chapter11-bookstore/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle/ 2 | /bin/ 3 | /build/ 4 | /*.classpath 5 | /*.project 6 | /*.log 7 | /.settings/ 8 | /*.iml 9 | -------------------------------------------------------------------------------- /chapter11-bookstore/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies() { 2 | compile "org.springframework.webflow:spring-webflow:$springSwfVersion" 3 | compile "org.springframework.webflow:spring-js:$springSwfVersion" 4 | compile "org.springframework.webflow:spring-binding:$springSwfVersion" 5 | } 6 | 7 | -------------------------------------------------------------------------------- /chapter11-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/controller/AuthenticationForm.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.controller; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * Simple form for holding username and password 7 | * 8 | * @author Marten Deinum 9 | * @author Koen Serneels 10 | * 11 | */ 12 | public class AuthenticationForm implements Serializable { 13 | 14 | private String username; 15 | private String password; 16 | 17 | public String getUsername() { 18 | return username; 19 | } 20 | 21 | public void setUsername(String username) { 22 | this.username = username; 23 | } 24 | 25 | public String getPassword() { 26 | return password; 27 | } 28 | 29 | public void setPassword(String password) { 30 | this.password = password; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /chapter11-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/controller/MainController.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.controller; 2 | 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.servlet.ModelAndView; 6 | 7 | /** 8 | * Controller for the homepage 9 | * 10 | * @author Marten Deinum 11 | * @author Koen Serneels 12 | * 13 | */ 14 | @Controller 15 | public class MainController { 16 | @RequestMapping("index.htm") 17 | public ModelAndView main() { 18 | ModelAndView mov = new ModelAndView(); 19 | mov.setViewName("main"); 20 | return mov; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /chapter11-bookstore/src/main/resources/ValidationMessages.properties: -------------------------------------------------------------------------------- 1 | javax.validation.constraints.Max.message=naar de zak -------------------------------------------------------------------------------- /chapter11-bookstore/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 7 | 8 | 9 | 10 | 11 | bookstore.log 12 | 13 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /chapter11-bookstore/src/main/webapp/WEB-INF/templates/contentOnly.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 5 | <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 6 | <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 7 | <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /chapter11-bookstore/src/main/webapp/WEB-INF/templates/footer.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 3 | <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 4 | 5 | 10 | -------------------------------------------------------------------------------- /chapter11-bookstore/src/main/webapp/WEB-INF/view/authentication/authentication-flow.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /chapter11-bookstore/src/main/webapp/WEB-INF/view/book/detail.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | 3 | 4 | ${book.title} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
Title${book.title}
Description${book.description}
Author${book.author}
Year${book.year}
ISBN${book.isbn}
Price${book.price}
-------------------------------------------------------------------------------- /chapter11-bookstore/src/main/webapp/WEB-INF/view/placeOrders/placeOrders-flow.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /chapter11-bookstore/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /chapter12-bookstore/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle/ 2 | /bin/ 3 | /build/ 4 | /*.classpath 5 | /*.project 6 | /*.log 7 | /.settings/ 8 | /*.iml 9 | -------------------------------------------------------------------------------- /chapter12-bookstore/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies() { 2 | compile "org.springframework.webflow:spring-webflow:$springSwfVersion" 3 | compile "org.springframework.webflow:spring-js:$springSwfVersion" 4 | compile "org.springframework.webflow:spring-binding:$springSwfVersion" 5 | compile "commons-codec:commons-codec:1.6" 6 | } 7 | 8 | -------------------------------------------------------------------------------- /chapter12-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/controller/AuthenticationForm.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.controller; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * Simple form for holding username and password 7 | * 8 | * @author Marten Deinum 9 | * @author Koen Serneels 10 | * 11 | */ 12 | 13 | public class AuthenticationForm implements Serializable { 14 | 15 | private String username; 16 | private String password; 17 | 18 | public String getUsername() { 19 | return username; 20 | } 21 | 22 | public void setUsername(String username) { 23 | this.username = username; 24 | } 25 | 26 | public String getPassword() { 27 | return password; 28 | } 29 | 30 | public void setPassword(String password) { 31 | this.password = password; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /chapter12-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/controller/MainController.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.controller; 2 | 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.servlet.ModelAndView; 6 | 7 | /** 8 | * Controller for the homepage 9 | * 10 | * @author Marten Deinum 11 | * @author Koen Serneels 12 | * 13 | */ 14 | @Controller 15 | public class MainController { 16 | @RequestMapping("index.htm") 17 | public ModelAndView main() { 18 | ModelAndView mov = new ModelAndView(); 19 | mov.setViewName("main"); 20 | return mov; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /chapter12-bookstore/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 7 | 8 | 9 | 10 | 11 | bookstore.log 12 | 13 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /chapter12-bookstore/src/main/webapp/WEB-INF/templates/contentOnly.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 5 | <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 6 | <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 7 | <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /chapter12-bookstore/src/main/webapp/WEB-INF/templates/footer.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 3 | <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 4 | 5 | 10 | -------------------------------------------------------------------------------- /chapter12-bookstore/src/main/webapp/WEB-INF/view/book/detail.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | 3 | 4 | ${book.title} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
Title${book.title}
Description${book.description}
Author${book.author}
Year${book.year}
ISBN${book.isbn}
Price${book.price}
-------------------------------------------------------------------------------- /chapter12-bookstore/src/main/webapp/WEB-INF/view/createOrders/showSelectedBooks.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> 3 | <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 4 | <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> 5 | 6 |
7 | 8 | 9 | 10 | 13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
11 | 12 | 14 | 15 |
${book.key.title}${book.value}
29 |
30 | -------------------------------------------------------------------------------- /chapter12-bookstore/src/main/webapp/WEB-INF/view/ordersOverview/orderDetail.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | 3 |

Order detail

4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
Book titleBook descriptionBook price
${orderDetail.book.title}${orderDetail.book.description}${orderDetail.book.price}
25 |
-------------------------------------------------------------------------------- /chapter12-bookstore/src/main/webapp/WEB-INF/view/ordersOverview/ordersOverview-flow.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /chapter12-bookstore/src/main/webapp/WEB-INF/view/placeOrders/placeOrders-flow.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /chapter12-bookstore/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /chapter13-bookstore/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle/ 2 | /bin/ 3 | /build/ 4 | /*.classpath 5 | /*.project 6 | /*.log 7 | /.settings/ 8 | /*.iml 9 | /*.jks 10 | -------------------------------------------------------------------------------- /chapter13-bookstore/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies() { 2 | compile "org.springframework.webflow:spring-webflow:$springSwfVersion" 3 | compile "org.springframework.webflow:spring-js:$springSwfVersion" 4 | compile "org.springframework.webflow:spring-binding:$springSwfVersion" 5 | compile "commons-codec:commons-codec:1.6" 6 | compile "org.springframework.security:spring-security-core:$springSecurityVersion" 7 | compile "org.springframework.security:spring-security-web:$springSecurityVersion" 8 | compile "org.springframework.security:spring-security-config:$springSecurityVersion" 9 | compile "org.springframework.security:spring-security-taglibs:$springSecurityVersion" 10 | compile "org.springframework.security:spring-security-openid:$springSecurityVersion" 11 | } 12 | 13 | -------------------------------------------------------------------------------- /chapter13-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/controller/AuthenticationController.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.controller; 2 | 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.servlet.ModelAndView; 6 | 7 | import com.apress.prospringmvc.bookstore.service.BookstoreService; 8 | 9 | /** 10 | * This controller talks to the {@link BookstoreService} to authenticate a user. This controller can be used via Spring 11 | * MVC (request mapping login.html) or as POJO for example via Web Flow 12 | * 13 | * @author Marten Deinum 14 | * @author Koen Serneels 15 | * 16 | */ 17 | @Controller 18 | public class AuthenticationController { 19 | 20 | @RequestMapping("public/authentication/login.htm") 21 | public ModelAndView authentication() { 22 | ModelAndView mov = new ModelAndView(); 23 | mov.setViewName("login"); 24 | return mov; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /chapter13-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/controller/MainController.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.controller; 2 | 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.servlet.ModelAndView; 6 | 7 | /** 8 | * Controller for the homepage 9 | * 10 | * @author Marten Deinum 11 | * @author Koen Serneels 12 | * 13 | */ 14 | @Controller 15 | public class MainController { 16 | @RequestMapping("public/main.htm") 17 | public ModelAndView main() { 18 | ModelAndView mov = new ModelAndView(); 19 | mov.setViewName("main"); 20 | return mov; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /chapter13-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/controller/ManageCategoryForm.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.controller; 2 | 3 | import org.hibernate.validator.constraints.NotEmpty; 4 | 5 | /** 6 | * Form for adding {@link Category} enitities to the system 7 | * 8 | * @See ManageBookController 9 | * @author Marten Deinum 10 | * @author Koen Serneels 11 | * 12 | */ 13 | public class ManageCategoryForm { 14 | 15 | @NotEmpty 16 | private String category; 17 | 18 | public String getCategory() { 19 | return category; 20 | } 21 | 22 | public void setCategory(String category) { 23 | this.category = category; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /chapter13-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/security/SecurityContextSupport.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.security; 2 | 3 | import org.springframework.security.core.context.SecurityContextHolder; 4 | 5 | /** 6 | * Support class for easy access to our custom {@link BookstoreUserDetails} 7 | * 8 | * @author Marten Deinum 9 | * @author Koen Serneels 10 | * 11 | */ 12 | public class SecurityContextSupport { 13 | 14 | public static BookstoreUserDetails getUserDetails() { 15 | return (BookstoreUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /chapter13-bookstore/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 7 | 8 | 9 | 10 | 11 | bookstore.log 12 | 13 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /chapter13-bookstore/src/main/webapp/WEB-INF/templates/contentOnly.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 4 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 5 | <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 6 | <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 7 | <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /chapter13-bookstore/src/main/webapp/WEB-INF/templates/footer.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 3 | <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 4 | 5 | 10 | -------------------------------------------------------------------------------- /chapter13-bookstore/src/main/webapp/WEB-INF/view/public/book/detail.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | 3 | 4 | ${book.title} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
Title${book.title}
Description${book.description}
Author${book.author}
Year${book.year}
ISBN${book.isbn}
Price${book.price}
-------------------------------------------------------------------------------- /chapter13-bookstore/src/main/webapp/WEB-INF/view/public/createOrders/showSelectedBooks.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> 3 | <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> 4 | <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> 5 | 6 |
7 | 8 | 9 | 10 | 13 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
11 | 12 | 14 | 15 |
${book.key.title}${book.value}
29 |
30 | -------------------------------------------------------------------------------- /chapter13-bookstore/src/main/webapp/WEB-INF/view/secured/ordersOverview/orderDetail.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | 3 |

Order detail

4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
Book titleBook descriptionBook price
${orderDetail.book.title}${orderDetail.book.description}${orderDetail.book.price}
25 |
-------------------------------------------------------------------------------- /chapter13-bookstore/src/main/webapp/WEB-INF/view/secured/ordersOverview/ordersOverview-flow.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /chapter13-bookstore/src/main/webapp/WEB-INF/view/secured/placeOrders/placeOrders-flow.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /chapter13-bookstore/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /chapter2-bookstore/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle/ 2 | /bin/ 3 | /build/ 4 | /*.classpath 5 | /*.project 6 | /*.log 7 | /.settings/ 8 | /*.springBeans 9 | /*.iml 10 | -------------------------------------------------------------------------------- /chapter2-bookstore/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies() { compile "org.springframework:spring-test:$springVersion" } -------------------------------------------------------------------------------- /chapter2-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/IndexController.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web; 2 | 3 | import org.springframework.stereotype.Controller; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.servlet.ModelAndView; 6 | 7 | /** 8 | * Controller shows the index page. 9 | * 10 | * @author Marten Deinum 11 | * @author Koen Serneels 12 | */ 13 | @Controller 14 | public class IndexController { 15 | 16 | @RequestMapping(value = "/index.htm") 17 | public ModelAndView indexPage() { 18 | return new ModelAndView("/WEB-INF/views/index.jsp"); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /chapter2-bookstore/src/main/resources/config/web-fragment.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | bookstore 8 | org.springframework.web.servlet.DispatcherServlet 9 | 1 10 | 11 | 12 | 13 | bookstore 14 | /* 15 | 16 | 17 | -------------------------------------------------------------------------------- /chapter2-bookstore/src/main/resources/config/web.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | bookstore 9 | org.springframework.web.servlet.DispatcherServlet 10 | 1 11 | 12 | 13 | 14 | bookstore 15 | /* 16 | 17 | 18 | -------------------------------------------------------------------------------- /chapter2-bookstore/src/main/webapp/WEB-INF/views/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Home 5 | 6 | 7 |

Welcome!

8 | 9 |

Welcome to the Book Store

10 | 11 | 12 | -------------------------------------------------------------------------------- /chapter2-bookstore/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | <% 2 | response.sendRedirect("index.htm"); 3 | %> -------------------------------------------------------------------------------- /chapter2-samples/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle/ 2 | /bin/ 3 | /build/ 4 | /*.classpath 5 | /*.project 6 | /*.log 7 | /.settings/ 8 | /*.iml 9 | -------------------------------------------------------------------------------- /chapter2-samples/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies { 2 | compile 'javax.inject:javax.inject:1' 3 | compile "org.springframework:spring-test:$springVersion" 4 | } -------------------------------------------------------------------------------- /chapter2-samples/src/main/java/com/apress/prospringmvc/moneytransfer/annotation/application-context.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /chapter2-samples/src/main/java/com/apress/prospringmvc/moneytransfer/annotation/hierarchy/ChildApplicationContextConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.moneytransfer.annotation.hierarchy; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | import com.apress.prospringmvc.moneytransfer.annotation.MoneyTransferServiceImpl; 7 | import com.apress.prospringmvc.moneytransfer.service.MoneyTransferService; 8 | 9 | /** 10 | * 11 | * @author Marten Deinum 12 | * @author Koen Serneels 13 | */ 14 | @Configuration 15 | public class ChildApplicationContextConfiguration { 16 | 17 | @Bean 18 | public MoneyTransferService moneyTransferService() { 19 | return new MoneyTransferServiceImpl(); 20 | } 21 | 22 | } 23 | -------------------------------------------------------------------------------- /chapter2-samples/src/main/java/com/apress/prospringmvc/moneytransfer/annotation/profiles/StubTransactionRepository.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.moneytransfer.annotation.profiles; 2 | 3 | import java.util.HashSet; 4 | import java.util.Set; 5 | 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | 9 | import com.apress.prospringmvc.moneytransfer.domain.Account; 10 | import com.apress.prospringmvc.moneytransfer.domain.Transaction; 11 | import com.apress.prospringmvc.moneytransfer.repository.TransactionRepository; 12 | 13 | /** 14 | * 15 | * @author Marten Deinum 16 | * @author Koen Serneels 17 | */ 18 | public class StubTransactionRepository implements TransactionRepository { 19 | 20 | private final Logger logger = LoggerFactory.getLogger(StubTransactionRepository.class); 21 | 22 | @Override 23 | public void store(Transaction transaction) { 24 | this.logger.info("Stored: {}", transaction); 25 | } 26 | 27 | @Override 28 | public Set find(Account account) { 29 | return new HashSet(); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /chapter2-samples/src/main/java/com/apress/prospringmvc/moneytransfer/domain/MoneyTransferTransaction.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.moneytransfer.domain; 2 | 3 | import java.math.BigDecimal; 4 | 5 | /** 6 | * 7 | * @author Marten Deinum 8 | * @author Koen Serneels 9 | */ 10 | public class MoneyTransferTransaction extends Transaction { 11 | 12 | private final Account target; 13 | 14 | public MoneyTransferTransaction(final Account source, final Account target, final BigDecimal amount) { 15 | super(source, amount); 16 | this.target = target; 17 | } 18 | 19 | public Account getTarget() { 20 | return this.target; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /chapter2-samples/src/main/java/com/apress/prospringmvc/moneytransfer/repository/AccountRepository.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.moneytransfer.repository; 2 | 3 | import com.apress.prospringmvc.moneytransfer.domain.Account; 4 | 5 | /** 6 | * 7 | * @author Marten Deinum 8 | * @author Koen Serneels 9 | */ 10 | public interface AccountRepository { 11 | 12 | Account find(String number); 13 | 14 | } 15 | -------------------------------------------------------------------------------- /chapter2-samples/src/main/java/com/apress/prospringmvc/moneytransfer/repository/TransactionRepository.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.moneytransfer.repository; 2 | 3 | import java.util.Set; 4 | 5 | import com.apress.prospringmvc.moneytransfer.domain.Account; 6 | import com.apress.prospringmvc.moneytransfer.domain.Transaction; 7 | 8 | /** 9 | * Repository to store and retrieve {@code Transaction}s. 10 | * 11 | * @author Marten Deinum 12 | * @author Koen Serneels 13 | * 14 | */ 15 | public interface TransactionRepository { 16 | 17 | void store(Transaction transaction); 18 | 19 | Set find(Account account); 20 | 21 | } 22 | -------------------------------------------------------------------------------- /chapter2-samples/src/main/java/com/apress/prospringmvc/moneytransfer/scanning/ApplicationContextConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.moneytransfer.scanning; 2 | 3 | import org.springframework.context.annotation.ComponentScan; 4 | import org.springframework.context.annotation.Configuration; 5 | 6 | /** 7 | * 8 | * @author Marten Deinum 9 | * @author Koen Serneels 10 | */ 11 | @Configuration 12 | @ComponentScan(basePackages = { "com.apress.prospringmvc.moneytransfer.scanning", 13 | "com.apress.prospringmvc.moneytransfer.repository" }) 14 | public class ApplicationContextConfiguration { 15 | } 16 | -------------------------------------------------------------------------------- /chapter2-samples/src/main/java/com/apress/prospringmvc/moneytransfer/scanning/application-context.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /chapter2-samples/src/main/java/com/apress/prospringmvc/moneytransfer/service/MoneyTransferService.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.moneytransfer.service; 2 | 3 | import java.math.BigDecimal; 4 | 5 | import com.apress.prospringmvc.moneytransfer.domain.Transaction; 6 | 7 | /** 8 | * Service contract for transfering money from one account to another. 9 | * 10 | * @author Marten Deinum 11 | * @author Koen Serneels 12 | * 13 | */ 14 | public interface MoneyTransferService { 15 | 16 | /** 17 | * Transfer a amount of money from the source to target account 18 | * @param source source account number 19 | * @param target target account number 20 | * @param amount the amount to transfer 21 | * @return the {@link Transaction} created 22 | */ 23 | Transaction transfer(String source, String target, BigDecimal amount); 24 | 25 | } 26 | -------------------------------------------------------------------------------- /chapter2-samples/src/main/java/com/apress/prospringmvc/moneytransfer/simple/SimpleMoneyTransfer.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.moneytransfer.simple; 2 | 3 | import java.math.BigDecimal; 4 | 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | 8 | import com.apress.prospringmvc.moneytransfer.domain.Transaction; 9 | 10 | /** 11 | * 12 | * @author Marten Deinum 13 | * @author Koen Serneels 14 | */ 15 | public class SimpleMoneyTransfer { 16 | 17 | private static final Logger logger = LoggerFactory.getLogger(SimpleMoneyTransfer.class); 18 | 19 | public static void main(String[] args) { 20 | SimpleMoneyTransferServiceImpl service = new SimpleMoneyTransferServiceImpl(); 21 | 22 | Transaction transaction = service.transfer("123456", "654321", new BigDecimal("250.00")); 23 | 24 | logger.info("Money Transfered: {}", transaction); 25 | 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /chapter2-samples/src/main/resources/logback.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 7 | 8 | 9 | 10 | 11 | pizzas-r-us.log 12 | 13 | %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /chapter5-bookstore/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle/ 2 | /bin/ 3 | /build/ 4 | /*.classpath 5 | /*.project 6 | /*.log 7 | /.settings/ 8 | /*.springBeans 9 | /*.iml 10 | -------------------------------------------------------------------------------- /chapter5-bookstore/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/chapter5-bookstore/build.gradle -------------------------------------------------------------------------------- /chapter5-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/config/ViewConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.config; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.web.servlet.view.tiles2.TilesConfigurer; 6 | import org.springframework.web.servlet.view.tiles2.TilesViewResolver; 7 | 8 | /** 9 | * Spring MVC configuration for the View Technologies. 10 | * 11 | * @author Marten Deinum 12 | * @author Koen Serneels 13 | * 14 | */ 15 | @Configuration 16 | public class ViewConfiguration { 17 | 18 | @Bean 19 | public TilesConfigurer tilesConfigurer() { 20 | return new TilesConfigurer(); 21 | } 22 | 23 | @Bean 24 | public TilesViewResolver tilesViewResolver() { 25 | TilesViewResolver tilesViewResolver = new TilesViewResolver(); 26 | tilesViewResolver.setOrder(2); 27 | return tilesViewResolver; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /chapter5-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/controller/LogoutController.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.controller; 2 | 3 | import javax.servlet.http.HttpSession; 4 | 5 | import org.springframework.stereotype.Controller; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RequestMethod; 8 | 9 | /** 10 | * Controller to handle logout. 11 | * 12 | * @author Marten Deinum 13 | * @author Koen Serneels 14 | * 15 | */ 16 | @Controller 17 | public class LogoutController { 18 | 19 | @RequestMapping(value = "/logout", method = RequestMethod.GET) 20 | public String logout(HttpSession session) { 21 | session.invalidate(); 22 | return "redirect:/index.htm"; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /chapter5-bookstore/src/main/webapp/WEB-INF/templates/footer.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 3 | <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 4 | 5 | 10 | -------------------------------------------------------------------------------- /chapter5-bookstore/src/main/webapp/WEB-INF/tiles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /chapter5-bookstore/src/main/webapp/WEB-INF/views/book/detail.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | 3 | 4 | ${book.title} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
Title${book.title}
Description${book.description}
Author${book.author}
Year${book.year}
ISBN${book.isbn}
Price${book.price}
-------------------------------------------------------------------------------- /chapter5-bookstore/src/main/webapp/WEB-INF/views/index.jsp: -------------------------------------------------------------------------------- 1 |

Welcome to the Book Store

-------------------------------------------------------------------------------- /chapter5-bookstore/src/main/webapp/WEB-INF/views/login.jsp: -------------------------------------------------------------------------------- 1 | <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@taglib prefix="spring" uri="http://www.springframework.org/tags" %> 3 | 4 | 5 |
6 | ${exception.message} 7 |
8 |
9 |
" method="post"> 10 |
11 | Login 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 |
Username
Password
23 |
24 |
25 | -------------------------------------------------------------------------------- /chapter5-bookstore/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | <% 2 | response.sendRedirect("index.htm"); 3 | %> -------------------------------------------------------------------------------- /chapter6-bookstore/.gitignore: -------------------------------------------------------------------------------- 1 | /.settings/ 2 | /bin/ 3 | /.classpath 4 | /.project 5 | /build/ 6 | /*.log 7 | -------------------------------------------------------------------------------- /chapter6-bookstore/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/chapter6-bookstore/build.gradle -------------------------------------------------------------------------------- /chapter6-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/config/ViewConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.config; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.web.servlet.view.tiles2.TilesConfigurer; 6 | import org.springframework.web.servlet.view.tiles2.TilesViewResolver; 7 | 8 | /** 9 | * Spring MVC configuration for the View Technologies. 10 | * 11 | * @author Marten Deinum 12 | * @author Koen Serneels 13 | * 14 | */ 15 | @Configuration 16 | public class ViewConfiguration { 17 | 18 | @Bean 19 | public TilesConfigurer tilesConfigurer() { 20 | return new TilesConfigurer(); 21 | } 22 | 23 | @Bean 24 | public TilesViewResolver tilesViewResolver() { 25 | TilesViewResolver tilesViewResolver = new TilesViewResolver(); 26 | tilesViewResolver.setOrder(2); 27 | return tilesViewResolver; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /chapter6-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/controller/LogoutController.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.controller; 2 | 3 | import javax.servlet.http.HttpSession; 4 | 5 | import org.springframework.stereotype.Controller; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RequestMethod; 8 | 9 | /** 10 | * Controller to handle logout. 11 | * 12 | * @author Marten Deinum 13 | * @author Koen Serneels 14 | * 15 | */ 16 | @Controller 17 | public class LogoutController { 18 | 19 | @RequestMapping(value = "/logout", method = RequestMethod.GET) 20 | public String logout(HttpSession session) { 21 | session.invalidate(); 22 | return "redirect:/index.htm"; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /chapter6-bookstore/src/main/webapp/WEB-INF/templates/footer.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 3 | <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 4 | 5 | 10 | -------------------------------------------------------------------------------- /chapter6-bookstore/src/main/webapp/WEB-INF/tiles.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /chapter6-bookstore/src/main/webapp/WEB-INF/views/book/detail.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | 3 | 4 | ${book.title} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
Title${book.title}
Description${book.description}
Author${book.author}
Year${book.year}
ISBN${book.isbn}
Price${book.price}
-------------------------------------------------------------------------------- /chapter6-bookstore/src/main/webapp/WEB-INF/views/index.jsp: -------------------------------------------------------------------------------- 1 |

Welcome to the Book Store

-------------------------------------------------------------------------------- /chapter6-bookstore/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /chapter7-bookstore/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle/ 2 | /bin/ 3 | /build/ 4 | /*.classpath 5 | /*.project 6 | /*.log 7 | /.settings/ 8 | /*.iml 9 | -------------------------------------------------------------------------------- /chapter7-bookstore/build.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/chapter7-bookstore/build.gradle -------------------------------------------------------------------------------- /chapter7-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/UploadOrderForm.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web; 2 | 3 | import org.springframework.web.multipart.MultipartFile; 4 | 5 | /** 6 | * Form for handling file uploads. 7 | * 8 | * @author Marten Deinum 9 | * @author Koen Serneels 10 | * 11 | */ 12 | public class UploadOrderForm { 13 | 14 | private MultipartFile order; 15 | 16 | public MultipartFile getOrder() { 17 | return this.order; 18 | } 19 | 20 | public void setOrder(MultipartFile order) { 21 | this.order = order; 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /chapter7-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/config/ViewConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.config; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.web.servlet.view.tiles2.TilesConfigurer; 6 | import org.springframework.web.servlet.view.tiles2.TilesViewResolver; 7 | 8 | /** 9 | * Spring MVC configuration for the View Technologies. 10 | * 11 | * @author Marten Deinum 12 | * @author Koen Serneels 13 | * 14 | */ 15 | @Configuration 16 | public class ViewConfiguration { 17 | 18 | @Bean 19 | public TilesConfigurer tilesConfigurer() { 20 | return new TilesConfigurer(); 21 | } 22 | 23 | @Bean 24 | public TilesViewResolver tilesViewResolver() { 25 | TilesViewResolver tilesViewResolver = new TilesViewResolver(); 26 | tilesViewResolver.setOrder(2); 27 | return tilesViewResolver; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /chapter7-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/controller/LogoutController.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.controller; 2 | 3 | import javax.servlet.http.HttpSession; 4 | 5 | import org.springframework.stereotype.Controller; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RequestMethod; 8 | 9 | /** 10 | * Controller to handle logout. 11 | * 12 | * @author Marten Deinum 13 | * @author Koen Serneels 14 | * 15 | */ 16 | @Controller 17 | public class LogoutController { 18 | 19 | @RequestMapping(value = "/logout", method = RequestMethod.GET) 20 | public String logout(HttpSession session) { 21 | session.invalidate(); 22 | return "redirect:/index.htm"; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /chapter7-bookstore/src/main/webapp/WEB-INF/templates/footer.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 3 | <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 4 | 5 | 10 | -------------------------------------------------------------------------------- /chapter7-bookstore/src/main/webapp/WEB-INF/tiles.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /chapter7-bookstore/src/main/webapp/WEB-INF/views/book/detail.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | 3 | 4 | ${book.title} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
Title${book.title}
Description${book.description}
Author${book.author}
Year${book.year}
ISBN${book.isbn}
Price${book.price}
-------------------------------------------------------------------------------- /chapter7-bookstore/src/main/webapp/WEB-INF/views/index.jsp: -------------------------------------------------------------------------------- 1 |

Welcome to the Book Store

-------------------------------------------------------------------------------- /chapter7-bookstore/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | <% 2 | response.sendRedirect("index.htm"); 3 | %> -------------------------------------------------------------------------------- /chapter8-bookstore/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle/ 2 | /bin/ 3 | /build/ 4 | /*.classpath 5 | /*.project 6 | /*.log 7 | /.settings/ 8 | /*.iml 9 | /*.springBeans 10 | -------------------------------------------------------------------------------- /chapter8-bookstore/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies() { 2 | compile 'org.freemarker:freemarker:2.3.18' 3 | compile 'org.apache.velocity:velocity:1.7' 4 | } -------------------------------------------------------------------------------- /chapter8-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/controller/LogoutController.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.controller; 2 | 3 | import javax.servlet.http.HttpSession; 4 | 5 | import org.springframework.stereotype.Controller; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RequestMethod; 8 | 9 | /** 10 | * Controller to handle logout. 11 | * 12 | * @author Marten Deinum 13 | * @author Koen Serneels 14 | * 15 | */ 16 | @Controller 17 | public class LogoutController { 18 | 19 | @RequestMapping(value = "/logout", method = RequestMethod.GET) 20 | public String logout(HttpSession session) { 21 | session.invalidate(); 22 | return "redirect:/index.htm"; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /chapter8-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/view/SimpleConfigurableViewResolver.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.view; 2 | 3 | import java.util.HashMap; 4 | import java.util.Locale; 5 | import java.util.Map; 6 | 7 | import org.springframework.web.servlet.View; 8 | import org.springframework.web.servlet.ViewResolver; 9 | 10 | /** 11 | * Very simple implementation of a {@link ViewResolver}. 12 | * 13 | * It uses an internal {@link Map} to link the name of a view to a concrete {@link View} implementation. 14 | * 15 | * @author Marten Deinum 16 | * @author Koen Serneels 17 | * 18 | */ 19 | public class SimpleConfigurableViewResolver implements ViewResolver { 20 | 21 | private Map views = new HashMap(); 22 | 23 | @Override 24 | public View resolveViewName(String viewName, Locale locale) throws Exception { 25 | return this.views.get(viewName); 26 | } 27 | 28 | public void setViews(Map views) { 29 | this.views = views; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /chapter8-bookstore/src/main/resources/views.properties: -------------------------------------------------------------------------------- 1 | index.(class)=org.springframework.web.servlet.view.JstlView 2 | index.url=/WEB-INF/views/index.jsp -------------------------------------------------------------------------------- /chapter8-bookstore/src/main/webapp/WEB-INF/templates/footer.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 3 | <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 4 | 5 | 10 | -------------------------------------------------------------------------------- /chapter8-bookstore/src/main/webapp/WEB-INF/tiles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /chapter8-bookstore/src/main/webapp/WEB-INF/views.properties: -------------------------------------------------------------------------------- 1 | index.(class)=org.springframework.web.servlet.view.JstlView 2 | index.url=/WEB-INF/views/index.jsp -------------------------------------------------------------------------------- /chapter8-bookstore/src/main/webapp/WEB-INF/views.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /chapter8-bookstore/src/main/webapp/WEB-INF/views/book/detail.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | 3 | 4 | ${book.title} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
Title${book.title}
Description${book.description}
Author${book.author}
Year${book.year}
ISBN${book.isbn}
Price${book.price}
-------------------------------------------------------------------------------- /chapter8-bookstore/src/main/webapp/WEB-INF/views/index.jsp: -------------------------------------------------------------------------------- 1 |

Welcome to the Book Store

-------------------------------------------------------------------------------- /chapter8-bookstore/src/main/webapp/WEB-INF/xslt/index.xslt: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | Home 9 | 10 | 11 |

Welcome!

12 | 13 |

Welcome to the Bookstore

14 | 15 | 16 |
17 |
-------------------------------------------------------------------------------- /chapter8-bookstore/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /chapter9-bookstore/.gitignore: -------------------------------------------------------------------------------- 1 | /.gradle/ 2 | /bin/ 3 | /build/ 4 | /*.classpath 5 | /*.project 6 | /*.log 7 | /.settings/ 8 | /*.iml 9 | /*.springBeans 10 | -------------------------------------------------------------------------------- /chapter9-bookstore/build.gradle: -------------------------------------------------------------------------------- 1 | dependencies() { 2 | compile 'org.freemarker:freemarker:2.3.18' 3 | compile 'org.apache.velocity:velocity:1.7' 4 | 5 | testCompile 'org.mockito:mockito-all:1.9.5' 6 | testCompile 'net.sourceforge.jwebunit:jwebunit-core:3.0' 7 | testCompile 'net.sourceforge.jwebunit:jwebunit-htmlunit-plugin:3.0' 8 | testCompile 'net.sourceforge.htmlunit:htmlunit:2.9' 9 | //No longer required, included in the latest spring-test builds 10 | //testCompile 'org.springframework:spring-test-mvc:1.0.0.BUILD-SNAPSHOT' 11 | testCompile 'org.seleniumhq.selenium:selenium-java:2.33.0' 12 | testCompile 'org.seleniumhq.selenium:selenium-firefox-driver:2.33.0' 13 | testCompile 'org.seleniumhq.selenium:selenium-htmlunit-driver:2.33.0' 14 | } 15 | -------------------------------------------------------------------------------- /chapter9-bookstore/src/main/java/com/apress/prospringmvc/bookstore/dao/DummyDao.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.dao; 2 | 3 | /** 4 | * Represents a dummy implementation of a typical DAO. An instance of this 5 | * class will be used to illustrate basic unit testing. 6 | * 7 | * @see BasicUnitTest 8 | * 9 | * @author Marten Deinum 10 | * @author Koen Serneels 11 | */ 12 | import java.util.ArrayList; 13 | import java.util.List; 14 | 15 | public class DummyDao { 16 | 17 | private List database; 18 | 19 | public DummyDao(List database) { 20 | this.database = database; 21 | } 22 | 23 | public void delete(String element) { 24 | database.remove(element); 25 | } 26 | 27 | public void add(String element) { 28 | database.add(element); 29 | } 30 | 31 | public List find(String queryWord) { 32 | List result = new ArrayList(); 33 | for (String element : database) { 34 | if (element.contains(queryWord)) { 35 | result.add(element); 36 | } 37 | } 38 | return result; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /chapter9-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/config/ViewConfiguration.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.config; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.web.servlet.view.tiles2.TilesConfigurer; 6 | import org.springframework.web.servlet.view.tiles2.TilesViewResolver; 7 | 8 | /** 9 | * Spring MVC configuration for the View Technologies. 10 | * 11 | * @author Marten Deinum 12 | * @author Koen Serneels 13 | * 14 | */ 15 | @Configuration 16 | public class ViewConfiguration { 17 | 18 | @Bean 19 | public TilesConfigurer tilesConfigurer() { 20 | return new TilesConfigurer(); 21 | } 22 | 23 | @Bean 24 | public TilesViewResolver tilesViewResolver() { 25 | TilesViewResolver tilesViewResolver = new TilesViewResolver(); 26 | tilesViewResolver.setOrder(2); 27 | return tilesViewResolver; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /chapter9-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/controller/LogoutController.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.controller; 2 | 3 | import javax.servlet.http.HttpSession; 4 | 5 | import org.springframework.stereotype.Controller; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import org.springframework.web.bind.annotation.RequestMethod; 8 | 9 | /** 10 | * Controller to handle logout. 11 | * 12 | * @author Marten Deinum 13 | * @author Koen Serneels 14 | * 15 | */ 16 | @Controller 17 | public class LogoutController { 18 | 19 | @RequestMapping(value = "/logout", method = RequestMethod.GET) 20 | public String logout(HttpSession session) { 21 | session.invalidate(); 22 | return "redirect:/index.htm"; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /chapter9-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/servlet/SimpleServletHandlerAdapter.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.servlet; 2 | 3 | import javax.servlet.Servlet; 4 | import javax.servlet.http.HttpServletRequest; 5 | import javax.servlet.http.HttpServletResponse; 6 | 7 | import org.springframework.web.servlet.HandlerAdapter; 8 | import org.springframework.web.servlet.ModelAndView; 9 | 10 | public class SimpleServletHandlerAdapter implements HandlerAdapter { 11 | 12 | @Override 13 | public boolean supports(Object handler) { 14 | return (handler instanceof Servlet); 15 | } 16 | 17 | @Override 18 | public ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler) 19 | throws Exception { 20 | 21 | ((Servlet) handler).service(request, response); 22 | return null; 23 | } 24 | 25 | @Override 26 | public long getLastModified(HttpServletRequest request, Object handler) { 27 | return -1; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /chapter9-bookstore/src/main/java/com/apress/prospringmvc/bookstore/web/view/SimpleConfigurableViewResolver.java: -------------------------------------------------------------------------------- 1 | package com.apress.prospringmvc.bookstore.web.view; 2 | 3 | import java.util.HashMap; 4 | import java.util.Locale; 5 | import java.util.Map; 6 | 7 | import org.springframework.web.servlet.View; 8 | import org.springframework.web.servlet.ViewResolver; 9 | 10 | /** 11 | * Very simple implementation of a {@link ViewResolver}. It uses an internal {@link Map} to link the name of a view to a concrete {@link View} implementation. 12 | * 13 | * @author Marten Deinum 14 | * @author Koen Serneels 15 | * 16 | */ 17 | public class SimpleConfigurableViewResolver implements ViewResolver { 18 | 19 | private Map views = new HashMap(); 20 | 21 | @Override 22 | public View resolveViewName(String viewName, Locale locale) throws Exception { 23 | return this.views.get(viewName); 24 | } 25 | 26 | public void setViews(Map views) { 27 | this.views = views; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /chapter9-bookstore/src/main/resources/views.properties: -------------------------------------------------------------------------------- 1 | index.(class)=org.springframework.web.servlet.view.JstlView 2 | index.url=/WEB-INF/views/index.jsp -------------------------------------------------------------------------------- /chapter9-bookstore/src/main/webapp/WEB-INF/templates/footer.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | <%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %> 3 | <%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %> 4 | 5 | 10 | -------------------------------------------------------------------------------- /chapter9-bookstore/src/main/webapp/WEB-INF/tiles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /chapter9-bookstore/src/main/webapp/WEB-INF/views.properties: -------------------------------------------------------------------------------- 1 | index.(class)=org.springframework.web.servlet.view.JstlView 2 | index.url=/WEB-INF/views/index.jsp -------------------------------------------------------------------------------- /chapter9-bookstore/src/main/webapp/WEB-INF/views.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /chapter9-bookstore/src/main/webapp/WEB-INF/views/book/detail.jsp: -------------------------------------------------------------------------------- 1 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 2 | 3 | 4 | ${book.title} 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
Title${book.title}
Description${book.description}
Author${book.author}
Year${book.year}
ISBN${book.isbn}
Price${book.price}
-------------------------------------------------------------------------------- /chapter9-bookstore/src/main/webapp/WEB-INF/views/index.jsp: -------------------------------------------------------------------------------- 1 |

Welcome to the Book Store

-------------------------------------------------------------------------------- /chapter9-bookstore/src/main/webapp/WEB-INF/xslt/index.xslt: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | Home 9 | 10 | 11 |

Welcome!

12 | 13 |

Welcome to the Bookstore

14 | 15 | 16 |
17 |
-------------------------------------------------------------------------------- /chapter9-bookstore/src/main/webapp/index.jsp: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/bin/bootstrap.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/bin/bootstrap.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/bin/commons-daemon-native.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/bin/commons-daemon-native.tar.gz -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/bin/commons-daemon.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/bin/commons-daemon.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/bin/tomcat-juli.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/bin/tomcat-juli.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/bin/tomcat-native.tar.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/bin/tomcat-native.tar.gz -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/annotations-api.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/annotations-api.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/catalina-ant.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/catalina-ant.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/catalina-ha.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/catalina-ha.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/catalina-tribes.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/catalina-tribes.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/catalina.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/catalina.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/ecj-4.2.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/ecj-4.2.2.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/el-api.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/el-api.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/jasper-el.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/jasper-el.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/jasper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/jasper.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/jsp-api.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/jsp-api.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/servlet-api.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/servlet-api.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/tomcat-api.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/tomcat-api.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/tomcat-coyote.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/tomcat-coyote.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/tomcat-dbcp.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/tomcat-dbcp.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/tomcat-i18n-es.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/tomcat-i18n-es.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/tomcat-i18n-fr.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/tomcat-i18n-fr.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/tomcat-i18n-ja.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/tomcat-i18n-ja.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/tomcat-jdbc.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/tomcat-jdbc.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/lib/tomcat-util.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/lib/tomcat-util.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/temp/safeToDelete.tmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/temp/safeToDelete.tmp -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/ROOT/asf-logo-wide.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/ROOT/asf-logo-wide.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/ROOT/asf-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/ROOT/asf-logo.png -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/ROOT/bg-button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/ROOT/bg-button.png -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/ROOT/bg-middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/ROOT/bg-middle.png -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/ROOT/bg-nav-item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/ROOT/bg-nav-item.png -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/ROOT/bg-nav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/ROOT/bg-nav.png -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/ROOT/bg-upper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/ROOT/bg-upper.png -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/ROOT/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/ROOT/favicon.ico -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/ROOT/tomcat-power.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/ROOT/tomcat-power.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/ROOT/tomcat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/ROOT/tomcat.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/ROOT/tomcat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/ROOT/tomcat.png -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/docs/appdev/sample/docs/README.txt: -------------------------------------------------------------------------------- 1 | Licensed to the Apache Software Foundation (ASF) under one or more 2 | contributor license agreements. See the NOTICE file distributed with 3 | this work for additional information regarding copyright ownership. 4 | The ASF licenses this file to You under the Apache License, Version 2.0 5 | (the "License"); you may not use this file except in compliance with 6 | the License. You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | 16 | This is a dummy README file for the sample 17 | web application. 18 | -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/docs/appdev/sample/sample.war: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/docs/appdev/sample/sample.war -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/docs/appdev/sample/web/images/tomcat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/docs/appdev/sample/web/images/tomcat.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/docs/architecture/requestProcess/requestProcess.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/docs/architecture/requestProcess/requestProcess.pdf -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/docs/architecture/startup/serverStartup.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/docs/architecture/startup/serverStartup.pdf -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/docs/images/add.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/docs/images/add.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/docs/images/asf-logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/docs/images/asf-logo.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/docs/images/code.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/docs/images/code.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/docs/images/cors-flowchart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/docs/images/cors-flowchart.png -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/docs/images/design.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/docs/images/design.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/docs/images/docs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/docs/images/docs.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/docs/images/fix.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/docs/images/fix.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/docs/images/printer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/docs/images/printer.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/docs/images/tomcat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/docs/images/tomcat.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/docs/images/update.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/docs/images/update.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/docs/images/void.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/docs/images/void.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/CookieExample.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/CookieExample.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/HelloWorldExample.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/HelloWorldExample.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/RequestHeaderExample.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/RequestHeaderExample.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/RequestInfoExample.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/RequestInfoExample.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/RequestParamExample.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/RequestParamExample.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/ServletToJsp.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/ServletToJsp.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/SessionExample.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/SessionExample.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Async0$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Async0$1.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Async0.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Async0.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Async1$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Async1$1.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Async1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Async1.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Async2$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Async2$1.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Async2.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Async2.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Async3.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Async3.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/AsyncStockServlet.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Stockticker$Stock.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Stockticker$Stock.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Stockticker$TickListener.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Stockticker$TickListener.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Stockticker.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/async/Stockticker.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/cal/Entries.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/cal/Entries.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/cal/Entry.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/cal/Entry.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/cal/JspCalendar.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/cal/JspCalendar.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/cal/TableBean.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/cal/TableBean.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/chat/ChatServlet$MessageSender.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/chat/ChatServlet$MessageSender.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/chat/ChatServlet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/chat/ChatServlet.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/checkbox/CheckTest.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/checkbox/CheckTest.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/colors/ColorGameBean.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/colors/ColorGameBean.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilter.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/dates/JspCalendar.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/dates/JspCalendar.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/error/Smart.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/error/Smart.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/examples/ExampleTagBase.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/examples/FooTag.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/examples/FooTag.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/examples/FooTagExtraInfo.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/examples/LogTag.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/examples/LogTag.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/examples/ShowSource.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/examples/ShowSource.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/examples/ValuesTag.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/examples/ValuesTag.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/filters/ExampleFilter.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/filters/ExampleFilter.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/BookBean.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/FooBean.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/ValuesBean.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/el/Functions.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/EchoAttributesTag.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/FindBookSimpleTag.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/HelloWorldSimpleTag.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/RepeatSimpleTag.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/ShuffleSimpleTag.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/ShuffleSimpleTag.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/TileSimpleTag.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/jsp2/examples/simpletag/TileSimpleTag.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/listeners/ContextListener.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/listeners/ContextListener.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/listeners/SessionListener.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/listeners/SessionListener.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/num/NumberGuessBean.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/num/NumberGuessBean.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/sessions/DummyCart.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/sessions/DummyCart.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/util/HTMLFilter.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/util/HTMLFilter.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/validators/DebugValidator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/validators/DebugValidator.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet$1.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet$ChatMessageInbound.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet$ChatMessageInbound.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/chat/ChatWebSocketServlet.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/echo/EchoMessage$EchoMessageInbound.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/echo/EchoMessage$EchoMessageInbound.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/echo/EchoMessage.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/echo/EchoMessage.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream$1.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream$EchoStreamInbound.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream$EchoStreamInbound.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/echo/EchoStream.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/snake/Direction.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/snake/Direction.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/snake/Direction.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Licensed to the Apache Software Foundation (ASF) under one or more 3 | * contributor license agreements. See the NOTICE file distributed with 4 | * this work for additional information regarding copyright ownership. 5 | * The ASF licenses this file to You under the Apache License, Version 2.0 6 | * (the "License"); you may not use this file except in compliance with 7 | * the License. You may obtain a copy of the License at 8 | * 9 | * http://www.apache.org/licenses/LICENSE-2.0 10 | * 11 | * Unless required by applicable law or agreed to in writing, software 12 | * distributed under the License is distributed on an "AS IS" BASIS, 13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | * See the License for the specific language governing permissions and 15 | * limitations under the License. 16 | */ 17 | package websocket.snake; 18 | 19 | public enum Direction { 20 | NONE, NORTH, SOUTH, EAST, WEST 21 | } 22 | -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/snake/Location$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/snake/Location$1.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/snake/Location.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/snake/Location.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/snake/Snake.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/snake/Snake.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet$1.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet$SnakeMessageInbound.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet$SnakeMessageInbound.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/classes/websocket/snake/SnakeWebSocketServlet.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/lib/jstl.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/lib/jstl.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/lib/standard.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/lib/standard.jar -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/WEB-INF/tags/helloWorld.tag: -------------------------------------------------------------------------------- 1 | 17 | Hello, world! 18 | -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/jsp/async/async3.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Licensed to the Apache Software Foundation (ASF) under one or more 3 | contributor license agreements. See the NOTICE file distributed with 4 | this work for additional information regarding copyright ownership. 5 | The ASF licenses this file to You under the Apache License, Version 2.0 6 | (the "License"); you may not use this file except in compliance with 7 | the License. You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | --%> 17 | <%@page session="false"%> 18 | Output from async3.jsp 19 | Type is <%=request.getDispatcherType()%> 20 | Completed async 3 request at <%=new java.sql.Date(System.currentTimeMillis())%> -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/jsp/forward/one.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Licensed to the Apache Software Foundation (ASF) under one or more 3 | contributor license agreements. See the NOTICE file distributed with 4 | this work for additional information regarding copyright ownership. 5 | The ASF licenses this file to You under the Apache License, Version 2.0 6 | (the "License"); you may not use this file except in compliance with 7 | the License. You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | --%> 17 | 18 | 19 | 20 | 21 | 22 | VM Memory usage < 50%. 23 | -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/jsp/forward/two.html: -------------------------------------------------------------------------------- 1 | 2 | 18 | 19 | 20 | 21 | 22 | VM Memory usage > 50%. 23 | -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/jsp/images/code.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/jsp/images/code.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/jsp/images/execute.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/jsp/images/execute.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/jsp/images/read.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/jsp/images/read.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/jsp/images/return.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/jsp/images/return.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/jsp/include/foo.html: -------------------------------------------------------------------------------- 1 | 17 | To get the current time in ms 18 | -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/jsp/include/foo.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Licensed to the Apache Software Foundation (ASF) under one or more 3 | contributor license agreements. See the NOTICE file distributed with 4 | this work for additional information regarding copyright ownership. 5 | The ASF licenses this file to You under the Apache License, Version 2.0 6 | (the "License"); you may not use this file except in compliance with 7 | the License. You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | --%> 17 | 18 | 19 | 20 | 21 | <%= System.currentTimeMillis() %> 22 | -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/jsp/include/foo.jsp.html: -------------------------------------------------------------------------------- 1 |
 2 | <%--
 3 |  Licensed to the Apache Software Foundation (ASF) under one or more
 4 |   contributor license agreements.  See the NOTICE file distributed with
 5 |   this work for additional information regarding copyright ownership.
 6 |   The ASF licenses this file to You under the Apache License, Version 2.0
 7 |   (the "License"); you may not use this file except in compliance with
 8 |   the License.  You may obtain a copy of the License at
 9 | 
10 |       http://www.apache.org/licenses/LICENSE-2.0
11 | 
12 |   Unless required by applicable law or agreed to in writing, software
13 |   distributed under the License is distributed on an "AS IS" BASIS,
14 |   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 |   See the License for the specific language governing permissions and
16 |   limitations under the License.
17 | --%>
18 | 
19 | <body bgcolor="white">
20 | <font color="red">
21 | 
22 | <%= System.currentTimeMillis() %>
23 | 
24 | -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/jsp/jsp2/jspx/textRotate.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/jsp/jsp2/jspx/textRotate.jpg -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/jsp/jsp2/misc/coda.jspf: -------------------------------------------------------------------------------- 1 | 17 |
18 |
19 | This banner included with <include-coda> 20 |
21 |
22 | -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/jsp/jsp2/misc/coda.jspf.html: -------------------------------------------------------------------------------- 1 |
 2 | <!--
 3 |   Licensed to the Apache Software Foundation (ASF) under one or more
 4 |   contributor license agreements.  See the NOTICE file distributed with
 5 |   this work for additional information regarding copyright ownership.
 6 |   The ASF licenses this file to You under the Apache License, Version 2.0
 7 |   (the "License"); you may not use this file except in compliance with
 8 |   the License.  You may obtain a copy of the License at
 9 | 
10 |       http://www.apache.org/licenses/LICENSE-2.0
11 | 
12 |   Unless required by applicable law or agreed to in writing, software
13 |   distributed under the License is distributed on an "AS IS" BASIS,
14 |   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 |   See the License for the specific language governing permissions and
16 |   limitations under the License.
17 | -->
18 | <hr>
19 | <center>
20 | This banner included with &lt;include-coda&gt;
21 | </center>
22 | <hr>
23 | 
24 | -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/jsp/jsp2/misc/prelude.jspf: -------------------------------------------------------------------------------- 1 | 17 |
18 |
19 | This banner included with <include-prelude> 20 |
21 |
22 | -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/jsp/jsp2/tagfiles/helloWorld.tag.html: -------------------------------------------------------------------------------- 1 |
 2 | <!--
 3 |  Licensed to the Apache Software Foundation (ASF) under one or more
 4 |   contributor license agreements.  See the NOTICE file distributed with
 5 |   this work for additional information regarding copyright ownership.
 6 |   The ASF licenses this file to You under the Apache License, Version 2.0
 7 |   (the "License"); you may not use this file except in compliance with
 8 |   the License.  You may obtain a copy of the License at
 9 | 
10 |       http://www.apache.org/licenses/LICENSE-2.0
11 | 
12 |   Unless required by applicable law or agreed to in writing, software
13 |   distributed under the License is distributed on an "AS IS" BASIS,
14 |   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 |   See the License for the specific language governing permissions and
16 |   limitations under the License.
17 | -->
18 | Hello, world!
19 | 
20 | -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/jsp/jsptoserv/jsptoservlet.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Licensed to the Apache Software Foundation (ASF) under one or more 3 | contributor license agreements. See the NOTICE file distributed with 4 | this work for additional information regarding copyright ownership. 5 | The ASF licenses this file to You under the Apache License, Version 2.0 6 | (the "License"); you may not use this file except in compliance with 7 | the License. You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | --%> 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/jsp/plugin/applet/Clock2.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/jsp/plugin/applet/Clock2.class -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/jsp/source.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Licensed to the Apache Software Foundation (ASF) under one or more 3 | contributor license agreements. See the NOTICE file distributed with 4 | this work for additional information regarding copyright ownership. 5 | The ASF licenses this file to You under the Apache License, Version 2.0 6 | (the "License"); you may not use this file except in compliance with 7 | the License. You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | --%> 17 | <%@ taglib uri="http://tomcat.apache.org/example-taglib" 18 | prefix="eg" %> 19 | 20 | 21 | -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/servlets/images/code.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/servlets/images/code.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/servlets/images/execute.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/servlets/images/execute.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/examples/servlets/images/return.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/examples/servlets/images/return.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/host-manager/images/add.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/host-manager/images/add.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/host-manager/images/asf-logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/host-manager/images/asf-logo.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/host-manager/images/code.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/host-manager/images/code.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/host-manager/images/design.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/host-manager/images/design.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/host-manager/images/docs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/host-manager/images/docs.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/host-manager/images/fix.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/host-manager/images/fix.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/host-manager/images/tomcat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/host-manager/images/tomcat.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/host-manager/images/update.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/host-manager/images/update.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/host-manager/images/void.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/host-manager/images/void.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/host-manager/index.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Licensed to the Apache Software Foundation (ASF) under one or more 3 | contributor license agreements. See the NOTICE file distributed with 4 | this work for additional information regarding copyright ownership. 5 | The ASF licenses this file to You under the Apache License, Version 2.0 6 | (the "License"); you may not use this file except in compliance with 7 | the License. You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | --%> 17 | <% response.sendRedirect(response.encodeRedirectURL(request.getContextPath() + 18 | "/html")); %> -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/manager/images/add.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/manager/images/add.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/manager/images/asf-logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/manager/images/asf-logo.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/manager/images/code.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/manager/images/code.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/manager/images/design.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/manager/images/design.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/manager/images/docs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/manager/images/docs.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/manager/images/fix.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/manager/images/fix.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/manager/images/tomcat.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/manager/images/tomcat.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/manager/images/update.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/manager/images/update.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/manager/images/void.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/container/apache-tomcat-7.0.42/webapps/manager/images/void.gif -------------------------------------------------------------------------------- /container/apache-tomcat-7.0.42/webapps/manager/index.jsp: -------------------------------------------------------------------------------- 1 | <%-- 2 | Licensed to the Apache Software Foundation (ASF) under one or more 3 | contributor license agreements. See the NOTICE file distributed with 4 | this work for additional information regarding copyright ownership. 5 | The ASF licenses this file to You under the Apache License, Version 2.0 6 | (the "License"); you may not use this file except in compliance with 7 | the License. You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | --%> 17 | <% response.sendRedirect(response.encodeRedirectURL(request.getContextPath() + 18 | "/html")); %> -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mdeinum/pro-spring-mvc-code/5c43c727d7be58c355ef1748338bab1fbca63693/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sat Sep 24 15:39:14 BST 2011 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=http\://services.gradle.org/distributions/gradle-1.6-bin.zip 7 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'bookstore' 2 | 3 | def String[] modules = [ 4 | 'bookstore-shared', 5 | 'bookstore-web-resources', 6 | 'chapter1-bookstore', 7 | 'chapter2-bookstore', 8 | 'chapter2-samples', 9 | 'chapter5-bookstore', 10 | 'chapter6-bookstore', 11 | 'chapter7-bookstore', 12 | 'chapter8-bookstore', 13 | 'chapter9-bookstore', 14 | 'chapter10-bookstore', 15 | 'chapter11-bookstore', 16 | 'chapter12-bookstore', 17 | 'chapter13-bookstore', 18 | 'appendixA-bookstore' 19 | ] 20 | 21 | include modules 22 | --------------------------------------------------------------------------------