CGS 4854 Summer 2012 Web Site Construction and Management
Instructor: Francisco R. Ortega Chapter 5
Slide 3
Todays Lecture Brief review of Log4J Chapter 5 Remember
Mid-Term next class
Slide 4
Mid-Term Mid-Term June 21 st. Chapters 1,2,3 and 4. Possible
review for mid-term June 14 (after quiz 4) or June 19 Extra Credit
for Mid-Term Extra credit question : Regular Expressions (if
covered before the exam) You are allowed to bring two letter size
paper to the exam
Slide 5
ASCII Table (Part 1)
Slide 6
Regular Expressions Match strings of text (wiki) Sequence of
regular expressions is known as a pattern Regular expressions
contain Wildcards Special characters Escape sequences
Slide 7
Regular Expressions 101 Characters match themselves except:
[\^$.|?*+() \ suppresses the meaning of special characters []
starts a character class. We match one from the class. - specifies
a range of characters ^ negates a character class. matches any
single character except line break | matches either the left, or
the right (or)
Slide 8
Character Classes [xyz] : will match x or y or z [a-z] : will
match lowercase letters [a-zA-Z] : will match all letters [a-Z]
:will not match any letters (why?) [A-z] : will match all letters
but additional symbols. Why? [^abc] : Any character except for a,b
or c.
Slide 9
Predefined classes Character classMeaning.Any character except
line termination \dA digit: [0-9] \DA non digit [^0-9] \sA
whitespace character \SA non-whitespace character \wA word
character [a-zA-Z_0-9] \WA non word character
Slide 10
Escape Sequence \. : would match a period [.] : would match a
period \ does not lose special meaning inside square brackets
[\d]
Slide 11
Alternation yes|no yes|no|maybe It will match either yes,no or
maybae. But only one of them.
Slide 12
Grouping and Capturing (pattern) Capturing pattern. Can
retrieve values from \1 thru \9 Example Text: abyes3 [a-z] ([a-z])
(yes|no) \d \1 is equal to b \2 is equal to yes (?:pattern) Only
used for grouping
Slide 13
Ignoring case (?i)yes|no [yY] [eE] [sS] | [Nn] [Oo]
Slide 14
Repetition Repetition SymbolMeaning *Matches zero or more
occurrences of the preceding pattern ?Matches zero or one
occurrences of the preceding pattern +Matches one or more
occurrences of the preceding pattern {m,n}Range of times that the
pattern can repeat. ? Same as {0,1} {m}Range of exactly how many
times that will match the pattern. {m,}Range of at least times that
will match the pattern. + same as {1,}
Slide 15
Regex in java You will need to use two backslashes Regex: \d
Java regex: \\d
Slide 16
Hibernate (wiki) Mapping from Java classes to database tables
Mapping Java data types to SQL data types Data query and retrieval
facilities. Generates the SQL calls Required Validation
Slide 17
Hibernate Required Validation Uses annotations @Pattern(regexp
= , message = Some Message) There is a default message Annotations
@Pattern @NotNull (do not use with primitives) Annotations to be
used with Numbers @Min ( value = 20) @Max (value = 100) @Range(min=
0, max =100) Annotations for Collections will be covered in Ch.
6
Slide 18
Required Validation @Pattern(regex=".*\\S.*", message="cannot
be empty") @NotNull public String getHobby() { return hobby; } If
more than one annotation, then is assume that logical operator is
AND
Creating Error Messages Class that performs validation is:
Validator Only one instance is needed Created from Validator
Factory Only one instance is needed
Slide 23
Creating Error Messages Protected static final ValidatorFactory
validatorFactory = Validation.buildDefaultValidatorFactory();
Protected static final Validator validator =
validatorFactory.getValidator(); Array of validation is created by
calling validators validate method. Set > violations =
validator.validate(data);
Slide 24
Implementing Validation Using the array provided by hibernate
Linear Search Using a Map (HashMap) Insert O(1) Get/Set O(1)
Contain Key Average O(1 + n/k) worst case is O(n) Where have we
seen something similar to the map structure in this class?
Request.getSession().setAttribute(helper,this);
Slide 25
Changes to Helper 1.errorMap 2.setErrors 3.getErrors()
4.clearErrors() All of this can be found in HelperBaseCh5 in the
shared folder.
java.util.Map Example Map myMap = new HashMap "
title="Retrieving the Error Messages Hobby ${helper.errors.hobby}
">
Retrieving the Error Messages Hobby ${helper.errors.hobby}
Slide 33
The Big Picture!
Slide 34
Summary Bean Validation annotations Helper Base (HelperBaseCh5)
Error map and interfaces for the error Controller Helper Modify the
logic for the buttons/actions JSP ${helper.errors.someField}
Slide 35
Post versus Get? Post does not encode data in URL Post has two
additional headers Content-Type Content-Length A blank line follows
content-length and then data is encoded in the request.
Slide 36
Post Request
Slide 37
Using Post Change the form method.
Slide 38
POST Request is only generated when button is clicked It allows
to know if is the first time in the form or not Hide Data No limit
to the amount of data. More secure??? GET Request is created when
Types url into browser Follows Hypertext link Click in button of
form
Simplify initHibernate Static public void initHibernate(boolean
create) { if (create) {
HibernateHelper.createTable(RequestDataPersistent.class); }
HibernateHelper.initSessionFactory(RequestDataPersistent.class)
}
Slide 52
Init controller See initHibernate page 165 If you are not using
xml See initHibernate page 181 If you are using xml In the
Controller public void init() {
ControllerHelper.initHibernate(this); }
Slide 53
Controller
Slide 54
Closing hibernate Configure a listener in web.xml
shared.WebappListener .
Slide 55
Closing hibernate use WebappListener in shared package. Why use
the listener?
Slide 56
WebappListener public class WebappListener implements
ServletContextListener { public void
contextInitialized(ServletContextEvent sce) {} public void
contextDestroyed(ServletContextEvent sce) { try { Enumeration
enumer = DriverManager.getDrivers(); while
(enumer.hasMoreElements()) {
DriverManager.deregisterDriver(enumer.nextElement()); } catch
(java.sql.SQLException se) { se.printStackTrace(); }
shared.HibernateHelper.closeFactory(); }
Slide 57
Persistent Annotations Annotate the bean with @Entity @Id
@GeneratedValue @Transient
Slide 58
@Entity Creates a table based on a bean Import
javax.persistence.Entity; @Entity public class
RequestDataPersistent implements Serializable { }
Slide 59
Primary Key @Id Specifies the primary key. Use @GeneratedValue
if you want automatic assigment. If Primary key is SSN, make sure
is not editable by the user.
Slide 60
Primary Key @Id Import javax.persistance.Id; Import
javax.persitance.GeneratedValue; Protected Long id; @Id @Generated
Value public Log getId() {return id;} private void setId(Long id) {
this.id = id;} ">
Looping in JSP using JSTL ${row.id}, ${row.hobby},
${row.aversion}, ${row.daysPerWeek} {/core:foreEach>
Slide 71
Looping in JSP using JSTL
Slide 72
Using Persistent Data (page 177/178) 1.Add Hibernate Jar Files
2.Initialize Hibernate when controller is loaded into memory 3.Add
the WebappListener to shared Package 4.Add the Statements to the
web.xml file 5.Annotate the bean class as an entity 6.Add an Id
field to the bean (PersistentBase) 7.Add properties to bean
Slide 73
Using Persistent Data (page 177/178) 8.Add statements to
web.xml 9.Add initHibernate method to ControllerHelper 10.Modify
process Method (next slide) 11.In the process page, display the
data from the database using Expression Language
Slide 74
ControllerHelper: PersistentData Modify processMethod (see page
179) public String processMethod(){ if (!isValid(data)) { return
jspLocation(Expired.jsp); } HibernateHelper.updateDB(data); List
list = hibernateHelper.getListData(data.getClass());
Request.setAttribute(database,list); return
jsplocation(Process.jsp); }
Slide 75
PersistentBase Basic description of class follows
Slide 76
initSessionFactory Initialized hibernate for application static
public void initSessionFactory(Properties props, Class... mappings)
static public void initSessionFactory(Class... mappings) Examples
initSessionFactory(props,RequestDataPersistent. class)
initSessionFactory(props,bean1.class,
bean2.class,bean3.class,bean4.class,)
Slide 77
createTable Create tables from specified beans. static public
void createTable(Properties props, Class... mappings) Examples
createTable(props,RequestDataPersistent.class)
createTable(props,bean1.class,
bean2.class,bean3.class,bean4.class,)
Slide 78
closeFactory It closes the Hibernate Factory that was created
with the InitSessionFactory static public void closeFactory()
Slide 79
updateDB Updates database from bean or list of beans static
public void updateDB(Object obj) Single bean static public void
updateDB(java.util.List list) List of beans
Slide 80
saveDB Saves bean to Database. static public void saveDB(Object
obj)
Slide 81
removeDB Removes bean from DB static public void
removeDB(Object obj)
Slide 82
getListData static public java.util.List getListData( Class
classBean, String strKey, Object value) static public
java.util.List getListData( Class classBean, String strKey1, Object
value1, String strKey2, Object value2) static public java.util.List
getListData( Class classBean)
Slide 83
getListData
Slide 84
getFirstMatch static public Object getFirstMatch( Class
classBean, String strKey, Object value) static public Object
getFirstMatch
Slide 85
getKeyData static public Object getKeyData(Class beanClass,
long itemId)
Slide 86
isSessionOpen static public boolean isSessionOpen()