View
237
Download
0
Category
Preview:
Citation preview
8/14/2019 Java Server Pages v3.1 Workshop Solutions
1/25
JavaServerPages
Solutions toWorkshops
8/14/2019 Java Server Pages v3.1 Workshop Solutions
2/25
Java Servlets: Solutions to Workshops Page i
2004 SkillBuilders, Inc. V 3.1
Contents
Lesson 2: Using Basic JSP Constructs Workshop...........................................................................1Lesson 4: Include Files in JSP Workshop........................................................................................4Lesson 5: Using JavaBeans with JSPs Workshop...........................................................................6
Lesson 7: Custom Tag Library Basics Workshops ..........................................................................9Lesson 8: Adding Attributes to Custom Tag Workshop .................................................................11Lesson 8: Using PageContext Workshop ......................................................................................14Lesson 9: Using Body Content Workshop .....................................................................................17
8/14/2019 Java Server Pages v3.1 Workshop Solutions
3/25
Jav Server Pages: Solutions to Workshops Page 1
2004 SkillBuilders, Inc. V 3.1
Lesson 2: Using Basic JSPConstructs Workshop
Welcome.jsp
Welcome
Welcome !
We are pleased to have you as a customer!
Here is the information you entered:
Name:
Street address:
City:
State:
Zip:
8/14/2019 Java Server Pages v3.1 Workshop Solutions
4/25
Jav Server Pages: Solutions to Workshops Page 2
2004 SkillBuilders, Inc. V 3.1
0) { %>
Credit Card #:
Note: Since you did not enter a credit card number, all ordersmust be paid in cash on the barrelhead!
register.html
Customer Registration
Customer RegistrationPlease enter the following information so we can process your order:
Name:
Street address:
City:
8/14/2019 Java Server Pages v3.1 Workshop Solutions
5/25
Jav Server Pages: Solutions to Workshops Page 3
2004 SkillBuilders, Inc. V 3.1
State:
Zip:
Credit Card #:
web.xml
8/14/2019 Java Server Pages v3.1 Workshop Solutions
6/25
Jav Server Pages: Solutions to Workshops Page 4
2004 SkillBuilders, Inc. V 3.1
Lesson 4: Include Files in JSPWorkshop
CompanyHeader.jsp
StudentSoft Online SuperStoreIf we don't have it, you don't need it!
Welcome.jsp
Welcome
Welcome !
We are pleased to have you as a customer!
Here is the information you entered:
Name:
Street address:
8/14/2019 Java Server Pages v3.1 Workshop Solutions
7/25
Jav Server Pages: Solutions to Workshops Page 5
2004 SkillBuilders, Inc. V 3.1
City:
State:
Zip:
0) { %>
Credit Card #:
NoCreditCard.html
Note: Since you did not enter a credit card number, all orders
must be paid in cash on the barrelhead!
And we mean it!!!
Register.html same as before
8/14/2019 Java Server Pages v3.1 Workshop Solutions
8/25
Jav Server Pages: Solutions to Workshops Page 6
2004 SkillBuilders, Inc. V 3.1
Lesson 5: Using JavaBeans withJSPs Workshop
CustomerBean.java
/*Customer Bean with these read/write properties:
String userName
String streetString cityString stateString zipString cardNumber
*/
package labs.jspbeans;
public class CustomerBean {private String userName = "";private String street = "";private String city = "";
private String state = "";private String zip = "";private String cardNumber = "";
//================================================
// String userName property//================================================public String getUserName() { return userName; }public void setUserName(String value) {
userName = value;}//================================================
// String street property//================================================public String getStreet() { return street; }public void setStreet(String value) {
street = value;}
8/14/2019 Java Server Pages v3.1 Workshop Solutions
9/25
Jav Server Pages: Solutions to Workshops Page 7
2004 SkillBuilders, Inc. V 3.1
//================================================// String city property//================================================public String getCity() { return city; }public void setCity(String value) {
city = value;}
//================================================// String state property//================================================public String getState() { return state; }public void setState(String value) {
state = value;}
//================================================// String zip property//================================================public String getZip() { return zip; }public void setZip(String value) {
zip = value;}//================================================// String cardNumber property//================================================public String getCardNumber() { return cardNumber; }public void setCardNumber(String value) {
cardNumber = value;
}}
Welcome.jsp
Welcome
Welcome !
We are pleased to have you as a customer!
Here is the information you entered:
Name:
8/14/2019 Java Server Pages v3.1 Workshop Solutions
10/25
Jav Server Pages: Solutions to Workshops Page 8
2004 SkillBuilders, Inc. V 3.1
Street address:
City:
State:
Zip:
0) {%>
Credit Card #:
Unchanged members
CompanyHeader.jspRegister.html
NoCreditCard.html
8/14/2019 Java Server Pages v3.1 Workshop Solutions
11/25
Jav Server Pages: Solutions to Workshops Page 9
2004 SkillBuilders, Inc. V 3.1
Lesson 7: Custom Tag LibraryBasics Workshops
CounterTest.jsp
A Hit Count Tag
This page has been accessed times!
ctlbasic.tld
1.01.1JSP course labsVarious tags for CTL labs
hitcountctlbasic.HitCountTagempty
8/14/2019 Java Server Pages v3.1 Workshop Solutions
12/25
Jav Server Pages: Solutions to Workshops Page 10
2004 SkillBuilders, Inc. V 3.1
HitCountTag.java
package ctlbasic;
import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.TagSupport;
public class HitCountTag extends TagSupport {
private static int _iInstCount;private static int _iCount;
public HitCountTag() {System.out.println("Instantiating CounterTag #" +++_iInstCount);
}
public int doStartTag() throws JspException {
_iCount++;System.out.println("Incrementing counter to " + _iCount);try {
JspWriter out = pageContext.getOut();
out.print(_iCount);}catch(java.io.IOException ex) {
throw new JspException(ex.getMessage());}return SKIP_BODY;
}
}
web.xml
ctlbasic/WEB-INF/tlds/ctlbasic.tld
8/14/2019 Java Server Pages v3.1 Workshop Solutions
13/25
Jav Server Pages: Solutions to Workshops Page 11
2004 SkillBuilders, Inc. V 3.1
Lesson 8: Adding Attributes toCustom Tag Workshop
CounterTest.jsp
A Hit Count Tag
Count for Huey (reset=true):
Count for Dewey (explicit reset=false):
Count for Louie (default reset):
Count for (parameter):
ctladvanced1.tld
1.01.1JSP course labsVarious tags for CTL labs
hitcount
ctladvanced1.HitCountTag
8/14/2019 Java Server Pages v3.1 Workshop Solutions
14/25
Jav Server Pages: Solutions to Workshops Page 12
2004 SkillBuilders, Inc. V 3.1
empty
nametruetrue
resetfalsefalse
HitCountTag.java
package ctladvanced1;
import java.util.Hashtable;
import javax.servlet.jsp.*;import javax.servlet.jsp.tagext.TagSupport;
public class HitCountTag extends TagSupport {private static int _iInstCount;// private static int _iCount;private static Hashtable _htCounters = new Hashtable();
private String _strName;
private boolean _bReset = false;
public HitCountTag() {System.out.println("Instantiating CounterTag #" +++_iInstCount);
}
public void setPageContext(PageContext pc) {super.setPageContext(pc);
_strName = null; _bReset = false;
}
// Name attribute
public void setName(String value) {_strName = value;
}
public void setReset(String value) {_bReset = value.toUpperCase().equals("TRUE");
}
public int doStartTag() throws JspException {
// Get initial count
8/14/2019 Java Server Pages v3.1 Workshop Solutions
15/25
Jav Server Pages: Solutions to Workshops Page 13
2004 SkillBuilders, Inc. V 3.1
int iCount = 0;if(! _bReset && _htCounters.containsKey(_strName)) {
Integer intCount = (Integer) _htCounters.get(_strName);iCount = intCount.intValue();
}
iCount++;
try {JspWriter out = pageContext.getOut();out.print(iCount);
// Put new count back into hashtableInteger intCount = new Integer(iCount);
_htCounters.put(_strName, intCount);
}catch(java.io.IOException ex) {
throw new JspException(ex.getMessage());}return SKIP_BODY;
}}
web.xml
ctlbasic/WEB-INF/tlds/ctlbasic.tld
ctladvanced1/WEB-INF/tlds/ctladvanced1.tld
8/14/2019 Java Server Pages v3.1 Workshop Solutions
16/25
Jav Server Pages: Solutions to Workshops Page 14
2004 SkillBuilders, Inc. V 3.1
Lesson 8: Using PageContextWorkshop
CounterTest.jsp
A Hit Count Tag
Count for Huey (reset=true):
Count for Dewey (explicit reset=false):
Count for Louie (default reset):
Count for (parameter):
ctladvanced2.tld
1.01.1
JSP course labs
8/14/2019 Java Server Pages v3.1 Workshop Solutions
17/25
Jav Server Pages: Solutions to Workshops Page 15
2004 SkillBuilders, Inc. V 3.1
Various tags for CTL labs
hitcountctladvanced2.HitCountTag
empty
nametruetrue
resetfalse
false
HitCountTag.java
package ctladvanced2;
//import java.util.Hashtable;
import javax.servlet.jsp.*;import javax.servlet.jsp.tagext.TagSupport;
public class HitCountTag extends TagSupport {private static int _iInstCount;
// private static int _iCount;// private static Hashtable _htCounters = new Hashtable();
private String _strName;private boolean _bReset = false;
public HitCountTag() {
System.out.println("Instantiating CounterTag #" +++_iInstCount);
}
public void setPageContext(PageContext pc) {super.setPageContext(pc);
_strName = null;
_bReset = false;}
// Name attributepublic void setName(String value) {_strName = value;
}
public void setReset(String value) {_bReset = value.toUpperCase().equals("TRUE");
}
8/14/2019 Java Server Pages v3.1 Workshop Solutions
18/25
Jav Server Pages: Solutions to Workshops Page 16
2004 SkillBuilders, Inc. V 3.1
public int doStartTag() throws JspException {
// Get initial countint iCount = 0;
Integer intCount = (Integer) pageContext.getAttribute(_strName,PageContext.APPLICATION_SCOPE);
if(! _bReset && intCount != null) {// Integer intCount = (Integer) _htCounters.get(_strName);
iCount = intCount.intValue();}
iCount++;try {
JspWriter out = pageContext.getOut();out.print(iCount);
// Put new count back into hashtableintCount = new Integer(iCount);
pageContext.setAttribute(_strName, intCount,PageContext.APPLICATION_SCOPE);}catch(java.io.IOException ex) {
throw new JspException(ex.getMessage());}return SKIP_BODY;
}
}
web.xml
8/14/2019 Java Server Pages v3.1 Workshop Solutions
19/25
Jav Server Pages: Solutions to Workshops Page 17
2004 SkillBuilders, Inc. V 3.1
Lesson 9: Using Body ContentWorkshop
CompanyBean.java
/*Company Bean with these read/write properties:
String name
String motto*/
package ctlbody;
public class CompanyBean {private String name = "";
private String motto = "";
//================================================// String name property//================================================public String getName() { return name; }
public void setName(String value) {name = value;
}
//================================================// String motto property
//================================================public String getMotto() { return motto; }public void setMotto(String value) {
motto = value;}
public String toString() {
return"Name: " + name + '\n' +"Motto: " + motto + '\n';
}}
8/14/2019 Java Server Pages v3.1 Workshop Solutions
20/25
Jav Server Pages: Solutions to Workshops Page 18
2004 SkillBuilders, Inc. V 3.1
CompanyHeader.jsp
Dorothy Com's Online StoreThe lowest prices in Cyberspace!
CompanyTag.java
package ctlbody;
import javax.servlet.jsp.*;import javax.servlet.jsp.tagext.TagSupport;
public class CompanyTag extends TagSupport {
private static boolean _bCreatedBean = false;public static final String BEAN_NAME = "companyBean";
public int doStartTag() throws JspException {
if(_bCreatedBean)return SKIP_BODY;
else {
CompanyBean company = new CompanyBean();pageContext.setAttribute(BEAN_NAME, company,PageContext.APPLICATION_SCOPE);
return EVAL_BODY_INCLUDE;
}}
public int doEndTag() throws JspException {_bCreatedBean = true;
return EVAL_PAGE;}
}
8/14/2019 Java Server Pages v3.1 Workshop Solutions
21/25
Jav Server Pages: Solutions to Workshops Page 19
2004 SkillBuilders, Inc. V 3.1
ctlbody.tld
1.0
1.1JSP course labsVarious tags for CTL labs
company
ctlbody.CompanyTagJSP
namectlbody.NameTag
JSP
mottoctlbody.MottoTagJSP
CustomerBean.java
//*Customer Bean with these read/write properties:
String userNameString streetString cityString state
String zipString cardNumber
*/
package ctlbody;
public class CustomerBean {private String userName = "";private String street = "";private String city = "";private String state = "";private String zip = "";
private String cardNumber = "";
8/14/2019 Java Server Pages v3.1 Workshop Solutions
22/25
Jav Server Pages: Solutions to Workshops Page 20
2004 SkillBuilders, Inc. V 3.1
//================================================// String userName property//================================================public String getUserName() { return userName; }
public void setUserName(String value) {userName = value;
}
//================================================// String street property//================================================public String getStreet() { return street; }public void setStreet(String value) {
street = value;}
//================================================// String city property
//================================================public String getCity() { return city; }public void setCity(String value) {
city = value;}
//================================================// String state property
//================================================public String getState() { return state; }public void setState(String value) {
state = value;}
//================================================
// String zip property//================================================public String getZip() { return zip; }public void setZip(String value) {
zip = value;}
//================================================// String cardNumber property//================================================public String getCardNumber() { return cardNumber; }public void setCardNumber(String value) {
cardNumber = value;
}
}
MottoTag.java
package ctlbody;
import javax.servlet.jsp.*;
8/14/2019 Java Server Pages v3.1 Workshop Solutions
23/25
Jav Server Pages: Solutions to Workshops Page 21
2004 SkillBuilders, Inc. V 3.1
import javax.servlet.jsp.tagext.BodyTagSupport;
public class MottoTag extends BodyTagSupport {public int doAfterBody() throws JspException {
System.out.println("Processing motto");
// Get company bean from application attribute
Object obj = pageContext.getAttribute(CompanyTag.BEAN_NAME,PageContext.APPLICATION_SCOPE);
CompanyBean company = (CompanyBean) obj;
System.out.println("Company bean before assigning motto:");System.out.println(company);
// Get body content as a stringString content = bodyContent.getString();company.setMotto(content);
System.out.println("Company bean after assigning motto:");
System.out.println(company);
return SKIP_BODY;}
}
NameTag.java
package ctlbody;
import javax.servlet.jsp.*;import javax.servlet.jsp.tagext.BodyTagSupport;
public class NameTag extends BodyTagSupport {
public int doAfterBody() throws JspException {System.out.println("Processing motto");// Get company bean from application attributeObject obj = pageContext.getAttribute(CompanyTag.BEAN_NAME,
PageContext.APPLICATION_SCOPE);CompanyBean company = (CompanyBean) obj;
System.out.println("Company bean before assigning name:");System.out.println(company);
// Get body content as a string
String content = bodyContent.getString();company.setName(content);
System.out.println("Company bean after assigning name:");System.out.println(company);
return SKIP_BODY;}
}
8/14/2019 Java Server Pages v3.1 Workshop Solutions
24/25
Jav Server Pages: Solutions to Workshops Page 22
2004 SkillBuilders, Inc. V 3.1
web.xml
ctlbasic/WEB-INF/tlds/ctlbasic.tld
ctladvanced1/WEB-INF/tlds/ctladvanced1.tld
ctladvanced2/WEB-INF/tlds/ctladvanced2.tld
ctlbody/WEB-INF/tlds/ctlbody.tld
welcome.jsp
Welcome
Welcome !
We are pleased to have you as a customer!
Here is the information you entered:
8/14/2019 Java Server Pages v3.1 Workshop Solutions
25/25
Jav Server Pages: Solutions to Workshops Page 23
Name:
Street address:
City:
State:
Zip:
0) {%>
Credit Card #:
Unchanged
Register.htmlNoCreditCard.html
Recommended