Core tag library, 129–130
conditionals
functional area, 135
general-purpose actions
looping and iteration
URL-related actions
Cross-cutting concerns, AOP
BookService interface, 218
directory structure, 221
implementation, 218
LoggingAspect, 219
Cross-platform Java, 11
CRUD application
accessing database
applying script, 381
create( ) action, 380
Ebean server, 379
object-relational mapping (ORM), 379
valid Ebean entity, 380
controller and actions, 374
deleteBook( ) action, 382
Form objects, 376
model creation, 375
routes
deleteBook action, 373
file compilation error, 374
view template
bindFromRequest, 379
book creation form, 378
books( ) action, 378
index.scala.html, 377–378
inputText function, 378
render( ) method, 376
CSS3 media queries, 38
■ D
DAOs, 243
Data access layer
BookController, 196–197
directory structure, 195–196
display categories from database, 198
listing books by category, 199
login using database
executelogin( ) method, 197
USER table, 197–198
Design patterns
antipatterns, 158
composite view
class diagram, 152
parent and embedded subviews, 152
usage of, 152–153
dispatcher view
class diagram, 153
dispatcher, 154
front controller, 154
helper, 154
sequence diagram, 154–155
view, 154
front controller
advantages, 149
centralized access mechanism, 149
class diagram, 150
controller component, 150
dispatcher component, 150
sequence diagram, 151
view component, 150
intercepting filter, 147
advantages, 148
init parameters, 149
response filter configuration, 149
simple response filter, 148
use cases, 148
OO patterns, 157
presentation tier, 146–147
problems in web application
development, 146
Service to Worker
class diagram, 156
dispatcher, 156
dynamic content generation, 155
front controller, 156
Index 437