1 / 16

CS4273: Distributed System Technologies and Programming I

CS4273: Distributed System Technologies and Programming I. Lecture 11: JavaServer Pages (JSP). JavaServer Pages (JSP). Why JSP? Get rid of Java programming. Separate presentation from business logic. Reuse predefined components, such as JavaBean, tag libraries. How does JSP work?

nerina
Download Presentation

CS4273: Distributed System Technologies and Programming I

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CS4273: Distributed System Technologies and Programming I Lecture 11: JavaServer Pages (JSP)

  2. JavaServer Pages (JSP) Why JSP? • Get rid of Java programming. • Separate presentation from business logic. • Reuse predefined components, such as JavaBean, tag libraries. How does JSP work? • The entire JSP page gets translated into a Servlet (once) at the first time it is invoked. • It is the Servlet code that gets executed at each request. No interpretation of JSP occurs at request time. The original JSP page is totally ignored at request time. JSP tutorial website: http://www.jsptut.com/ http://java.sun.com/products/jsp/docs.html

  3. Example of a Translated JSP The original JSP <H1>A Random Number</H1> <%= Math.random() %> The resulting Servlet code public void _jspService(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); HttpSession session = request.getSession(true); JspWriter out = response.getWriter(); out.println("<H1>A Random Number</H1>"); out.println(Math.random()); ... }

  4. JSP Notations JSP can include Java code, applets, servlets, JavaBeans, etc. • JSP Expressions: <%= expression %> • JSP Scriptlets (for Java code): <% Java-code %> • JSP Declarations: <%! declarations %> • JSP Directives: <%@ directive %> e.g., <%@ page import = “java.util.*”%> <%@ include file = “banner.html”%>

  5. The First JSP example • JSP files in dir: ~jia/www/java/js/jsp/ • URL for run JSP: http://jserv.cs.cityu.edu.hk:8080/jia/jsp/jspDate.jsp <%-- file: ~jia/www/java/js/jsp/jspDate.jsp--%> <html> <head><title> Simple JSP Test Page</title></head> <body> <h1 align=center>Simple JSP Test Page</h1> <table align=center> <tr> <td> Now, the time is: </td> <td> <%= new java.util.Date() %> </td> </tr> </table> </body></html>

  6. An Example of JSP Scriptlets (Java code) <HTML> <BODY> The time returned from a java utility function: <% // This scriptlet declares and initializes "date" java.util.Date date = new java.util.Date(); out.println( date ); out.println( "<BR>Your machine's address is " ); // request in next line is in servlet style out.println( request.getRemoteHost()); %> </BODY> </HTML>

  7. An Example of JSP Declaration and Directives <%-- the next line is a JSP directive --> <%@ page import="java.util.*" %> <HTML> <BODY> <!-- following is a JSP declaration of function getDate --> <%! Date getDate() { Date theDate = new Date(); return theDate; } %> <!-- the next line has JSP expression --> The time returned from java declared function is: <%= getDate() %> </BODY> </HTML>

  8. <%-- filename: welcome.jsp --%> <html><head> <title>Example of JSP Scriptlet</title> </head> <body> <% // begin scriptlet String name = request.getParameter( "firstName" ); if ( name != null ) { %> <h1>Hello <%= name %>, <br /> Welcome to JavaServer Pages!</h1> <% // continue scriptlet } // end if else { %> <form action = "welcome.jsp" method = "GET"> <p>Type your first name and press Submit</p> <p><input type = "text" name = "firstName" /> <input type = "submit" value = "Submit"/> </p> </form> <% // continue scriptlet } // end else %> <%-- end scriptlet --%> </body> </html> Another Example of Scriptlet

  9. JSP Directives JSP directives are used for specifying page settings at translation time. Three directives: page, include, and taglib. • page directive: define the page setting. e.g., <%@ page import = “java.util.*”%> • include directive: insert a file at translation-time as if it were originally part of the JSP (note. jsp:include inserts a file at request time!). e.g., <%@ include file = “banner.html”%> • taglib directive: specify user-defined tag libraries. e.g., <%@ taglib prefix=”blx” uri=”/blx.tld” %>

  10. JSP Standard Actions JSP actions allow some common tasks in JSP. JSP containers process actions at request time: • <jsp:include>. Include a file at request time (Note. The include directive inserts a file at translation time) e.g., <jsp:include page = “banner.html”> • <jsp:forward>. Forward the processing to another JSP or servlet. This terminates the current JSP’s execution. e.g., <jsp:forward page = “errorProcess.jsp”> • <jsp:plugin>. Allow a browser-object (applets) or html element embedded in jsp. It’s passed to browser without being executed in server! e.g., <jsp:plugin type="applet" code=“myApplet.class” width="475" height="350"></jsp:plugin>

  11. JSP Standard Actions (Cont.) • <jsp:param>. Pass parameters to another JSP or servlet (used together with include, forward, and plugin). • <jsp:useBean>. Specify scope of a JavaBean and assign id. e.g. <jsp:useBean id="numguess" class="num.NumberGuessBean" scope="session"/> The next two actions are used with JavaBean instance: • <jsp:setProperty> • <jsp:getProperty>

  12. <%-- filename: forwardExample.jsp --%> <html><head> <title>Forward request to another JSP</title> </head> <body> <% // begin scriptlet String name = request.getParameter( "firstName" ); if ( name != null ) { %> <jsp:forward page = "forwardJSP.jsp"> <jsp:param name = "date" value = “<%= new java.util.Date() %>”/> </jsp:forward> <% } // end if else { %> <form action = "forwardExample.jsp" method = "GET"> <p>Type your first name and press Submit</p> <p><input type = "text" name = "firstName" /> <input type = "submit" value = "Submit"/></p> </form> <% } // end else %> </body> </html> Example of jsp:forward and jsp:param

  13. Example of JSP: forward and jsp:param (Cont.) <%-- filename: forwardJSP.jsp --%> <html> <head> <title>Processing a jsp:forward request</title> </head> <body> <p> Hello <%= request.getParameter( "firstName" ) %>, <br /> Your request was received <br /> and forwarded at <%= request.getParameter( "date" ) %> </body> </html>

  14. Example of JSP: useBean The program numguess.jsp uses a JavaBean object NumberGuessBean.class, which is in …/js/WEB-INF/classes/num. See NumberGuessBean.java for lib routines. <%@ page import ="num.NumberGuessBean"%> <jsp:useBeanid="numguess" class="num.NumberGuessBean" scope="session"/> <jsp:setProperty name="numguess" property="*"/> <html> <head><title>Number Guess</title></head> <body bgcolor="white"> <% if (numguess.getSuccess()) { %> Congratulations! You got it. And after just <%= numguess.getNumGuesses() %> tries.<p> <% numguess.reset(); %> Would you <a href="numguess.jsp"> try again</a>? <% } else if (numguess.getNumGuesses() == 0) { %> Welcome to the Number Guess game.<p> I‘ve a number between 1 and 100.<p> <form method = GET> What's your guess? <input type=text name = guess> <input type=submit value="Submit"> </form> ….</body> </html>

  15. Example of JSP Tag Library (taglib) Directive taglib allows user defined tags, facilitating the use of large amount of Java libraries in jsp (separate JSP from Java-code implementations). Three files involved for taglib: • JSP file, specifying the use of taglib, e.g., SendMail.jsp: <%@ taglib prefix=“send" uri=“./taglib.tld" %> // “send” is prefix you can use <HTML><BODY> <% String email = request.getParameter( "email" ); %> <send:email host="yoursmtphost.com" from="you@email.com"> <blx:emailTo><%= email %></blx:emailTo> </send:email> • Tag Library Descriptor file (.tld) in XML format, taglib.tld, specify format of lib routines, such as routine names, parameters, etc.: <tag><name>Sendmail</name> <tagclass>com.cj.smtp.Sendmail</tagclass> <teiclass>com.cj.smtp.BoolVariable</teiclass> ………… • Library routines (java class file), sendmail.jar in …WEB-INF/lib (for you only) or jserv:/usr/jt/lib (for all users). See dir setting in http://www.jsptube.com/servlet-tutorials/web-application-directory-structure.html Use “jar –tvf blazix.jar” cmd to see the list of routines in class file.

  16. <%@ page contentType="text/html;charset=utf-8"%> <%@ page import="java.sql.*" %> <HTML><HEAD> <TITLE>JSP JDBC</TITLE></HEAD> <BODY> <center>JSP JDBC</center> <BR><BR> <table border=3 align=center > <% Class.forName("com.mysql.jdbc.Driver"); String url = “jdbc:mysql://jserv.cs.cityu.edu.hk:3306/db_jdemo”; Connection con= DriverManager.getConnection(url, "jdemo","apple1"); Statement stmt=con.createStatement(); String sql="select COF_NAME, PRICE from COFFEES"; ResultSet rs=stmt.executeQuery(sql); while(rs.next()) { out.print("<TR><TD>"+ rs.getString("COF_NAME")+"</TD>"); out.print("<TD>"+ rs.getString("PRICE")+"</TD></TR>"); } %> </table> <BR><HR> <% rs.close(); stmt.close(); con.close(); %> </BODY> </HTML> JSP JDBC Example

More Related