Java Server Pages v3.1 Workshop Solutions

download Java Server Pages v3.1 Workshop Solutions

of 25

Transcript of Java Server Pages v3.1 Workshop Solutions

  • 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