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;