CS 318 - Week 10 Lecture - 4-3-13

JSP - JavaServer Pages

*   allows you to put snippets of Java directly
    into a text-based document (e.g., HTML and XML
    documents)

*   a JSP page is a text-based document
    with static data (HTML, XML, etc.)
    and JSP elements

*   when a client requests a JSP page,
    IF it is not already loaded into memory,
    the JSP is compiled and converted to a servlet --
    and successive requests to the jsp are handled
    by the running resulting servlet

    ^ SO -- JSP pages end up being really rather
    like a FLAVOR of servlet...!

    *   BUT please note: a single JSP is compiled
        into a SINGLE servlet;

	(an application consisting of 10 JSPs would
	compile into 10 servlets -- whereas one
	"hand-written" Java servlet that generated
	10 different pages would be compiled still
	into a single servlet...)

*   nuts and bolts:
    *   the suffix for a JSP page is traditionally .jsp

    *   BECAUSE of HSU's "interesting" JSP/servlet setup,
        and because we are SHARING a JSP container directory,
	THOU SHALT start EVERY .jsp with YOUR HSU USERNAME!!!!!!!

    *   there IS a tool cpjsp which, like cpservlet,
        will copy over your JSP to the required location
	and give the copy the required permission
	to save some effort

*   intro to JSP elements:

    *   JSP comment element

        <%-- comment text --%>

        *   remember, JSP is executed on the application tier --
	    thus, this element is good for comments for
	    the application-tier programmer, since the
	    client tier will NEVER SEE them;

    *   JSP declaration element

        <%! declaration-WITH-SEMICOLON %>

        <%! int i=0; %>
        <%! String file="blah.html"; %>

        *   I *suspect* these declarations become
	    data-field-level in the compiled servlet...

    *   JSP expressom element

        <%= Java-expression %>   <%-- NO SEMICOLON, it's an 
                                      expression!!! --%>

        <%= Math.sqrt(2) %>
        <%= i %>

    *   JSP scriptlets

        <% Java code %>

        <%! String name; %>


        <%-- note: you get an HttpServletRequest request,
	     and HttpServletResponse reponse,
	     and an HttpSession session
	     ALREADY declared and ready for you to use --%>

        <%  
            name = request.getParameter("name");
            if (name == null)
            {
        %>
                <strong> Hello, stranger! </strong>
        <%
            }
            else
            {
        %>
                <strong> Hello, <%= name %>! </strong>
        <%
            }
        %>

*   JSP directive element

    <%@ Java directive %>

    FOR EXAMPLE -- the lovely include directive!!!

    <%@ include file="filename" %>

    for example,

    <%@ include file="St10CommonTop.jsp" %>

    *   server-side includes -- where you include
        common stuff via a file like this --
	can be VERY beneficial,
	for similar reasons that external CSS and
	external JavaScripts are useful...!

*   there are also some JSP-specific elements --
    such as jsp:forward, jsp:-plugin, and more --

    you can have custom tags,

    and there are libraries of custom tags,
    such as:

    JavaServer Pages Standard Tag Library, JSTL,
    which provides a collection of reusable standard
    tags

*   see: 
    St10HelloWorld.jsp
    St10CommonTop.jsp
    St10CommonBottom.jsp
    ...and a few additional examples, too;