140 likes | 149 Views
Java Server Pages (JSP). A Java Servlets Example. A simple "HelloWorld" servlet, that also prints the current date. import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet {
E N D
A Java Servlets Example • A simple "HelloWorld" servlet, that also prints the current date. import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println("<HTML>"); out.println("<HEAD><TITLE>Hello World</TITLE></HEAD>"); out.println("<BODY>"); out.println("<H1>Hello World</H1>"); out.println("Today is: " + (new java.util.Date().toString()) ); out.println("</BODY></HTML>"); } // doGet } // HelloWorld • In order to run it, do the following: • Place it in a file, HelloWorld.java • Compile it. • Place the resulting HelloWorld.class file in the "servlets" directory. • Run it by pointing browser to: http://server.address/servlets/HelloWorld
A JSP Example • The previous page can be written using JSP as shown below: <HTML> <HEAD> <TITLE>Hello World</TITLE> </HEAD> <BODY> <H1>Hello World</H1> Today is: <%= new java.util.Date().toString() %> </BODY> </HTML> • In order to run it, do the following: • Place it in a file, HelloWorld.jsp in the same directory as your .html files • Run it by pointing browser to: http://server.address/~youraccount/HelloWorld.jsp
Elements of JSP • Whenever a .jsp is requested for the first time, the server does the following: 1. Translates the .jsp page into a servlet2. Compiles the servlet into a class file3. Executes the servlet (response is sent to the client) • Subsequent requests (as long as the .jsp page is unchanged) use the same loaded class file. • Anatomy of a JSP Page • A JSP page is a mixture of standard HTML tags, web page content, and some dynamic content that is specified using JSP constructs. Everything except the JSP constructs is called Template Text.
JSP Constructs: JSP Comments • JSP Comments:Different from HTML comments <!-- an HTML comment --> <%-- a JSP comment --%> • JSP comments are used for documenting JSP code and are not visible client-side (using browser's View Source option) where as HTML comments are visible.
JSP Constructs: JAVA Expressions • Format:<%= some_java_expression %> • Example:<%= new java.util.Date().toString() %> • Output of the expression is placed in the HTML template at the same location.
JSP Constructs: Variables in JAVA Expressions • There are some pre-defined Java variables/objects available for use in expressions (provide access to important servlet functionality): • requestThis is the same object as HttpServletRequest parameter in th get/post methods. Same methods (like, getParameter, getAttribute, etc) can be applied to it. • outThe servlet printwriter. • sessionSame as servlet session object. • Example: <HTML> <HEAD> <TITLE>JSP Expressions: Predefined Objects</TITLE> </HEAD> <BODY> <H1>Using Predefined Objects</H1> <UL> <LI> Your Hostname: <%= request.getRemoteHost() %> <LI> Your Session ID: <%= session.getId() %> <LI> The value of INFO parameter: <%= request.getParameter("INFO") %> </BODY> </HTML>
JSP Constructs: Scriptlets • Scriptlets are arbitrary pieces of Java code inserted in the page using the format:<% some_java_code %> Example 2 <HTML> <HEAD> <TITLE>JSP: Scriptlets 2</TITLE> </HEAD> <% String bgColor = request.getParameter("COLOR"); %> <% if (bgColor == null) { %> <BODY BGCOLOR="FFFFFF" > <% } else { %> <BODY BGCOLOR="<%= bgColor %>" > <% } %> <H1>Example Scriptlet: Conditionally sets background color</H1> <% if (bgColor == null) { %> You did not supply a color, I used white. <% } else { %> Here is the color you requested. <% } %> </BODY> </HTML Example 1 <HTML> <HEAD> <TITLE>JSP: Scriptlets</TITLE> </HEAD> <% String bgColor = request.getParameter("COLOR"); if (bgColor == null) bgColor = "WHITE"; %> <BODY BGCOLOR="<%= bgColor %>" > <H1>Example Scriptlet: Sets background color</H1> </BODY> </HTML>
JSP Constructs: Scriptlets, contd. • Using Arrays: One can easily use scriptlets to loop over arrays. In this example, the user is presented with choice boxes. When s/he presses the submit button, the choices are displayed. • Example <HTML> <BODY BGCOLOR="WHITE"> <FORM ACTION="choices.jsp"> <INPUT type="checkbox" name="music" value="Classical"> Classical<BR> <INPUT type="checkbox" name="music" value="Rock"> Rock<BR> <INPUT type="checkbox" name="music" value="Jazz"> Jazz<BR> <INPUT type="checkbox" name="music" value="Blues"> Blues<BR> <INPUT type="checkbox" name="music" value="DC-GoGo"> DC GoGo<BR> <INPUT type="submit" value="Submit"> </FORM> <% String[] selected = request.getParameterValues("music"); if (selected != null && selected.length != 0) { %> You like the following kinds of music: <UL> <% for (int i = 0; i < selected.length; i++) { out.println("<LI>" + selected[i]); } %> <UL> <% } %> </BODY> </HTML>
JSP Constructs: Declarations • You can define variables and/or methods: <%! some JAVA declarations %> • Example <HTML> <BODY> <%! private int hitCount = 0; String randomColor() { java.util.Random random = new java.util.Random(); int R = (int) (random.nextFloat() * 255); int G = (int) (random.nextFloat() * 255); int B = (int) (random.nextFloat() * 255); return "#" + Integer.toString(R, 16) + Integer.toString(G, 16) + Integer.toString(B, 16); } %> <FONT COLOR="<%= randomColor() %>" > This page has been accessed <%= ++hitCount %> times. </FONT> </BODY> </HTML>
JSP Constructs: Summary • Expressions • Scriptlets • Declarations • Availability of pre-defined objects
JSP Directives • Format: • <%@ directive attribute="value" %> • <%@ directive attr1="value" attr2="value" ... attrN="value" %> • Directives are used to specify the structure of the resulting servlet. There are three directives: page, include, and taglib
JSP: Page Directive • There are 11 specifiable attributes for this directive: import, contentType, isThreadSafe, session, buffer, autoflush, extends, info, errorPage, and language • Example <%@ page language="java" contentType="text/html" %> <%@ page contentType="application/vnd.ms-excel" %> <%@ page import="java.util.*" %> <%@ page import="java.util.*,java.io.*" %> • Directives can be placed anywhere in the document, but are often placed at the very top. <%@ page language="java" contentType="text/html import="java.util.*" %> <HTML> <HEAD> <TITLE>Hello World</TITLE> </HEAD> <BODY> <H1>Hello World</H1> Today is: <%= new Date().toString() %> </BODY> </HTML>
JSP: Other Directives • The include Directive • Is used to include a file in the main document. • There are two versions of this. The first one, shown below, includes the file at translation time. <%@ include file="relative URL of file" %> • The second version, includes the file at request time. <jsp:include page="ralative URL of file" flush=true /> • The taglib directive • This is used to define custom markup tags. Refer to JSP documentation for details on this.