JSP Final Remarks 09 th March 2006 Bogdan L. Vrusias b.vrusias@surrey.ac.uk Server-Side Web Development 09 th March 2006 Bogdan L. Vrusias 2006 2 Contents Java Collections API and Casting Server-Side Dynamic Construction of JavaScript Login Pattern Example Importing and Using JavaBeans within JavaBeans Server-Side Web Development 09 th March 2006 Bogdan L. Vrusias 2006 3 Java Collection API Array Vector Hashtable ArrayList LinkedList ...
import java.util.*;
Server-Side Web Development 09 th March 2006 Bogdan L. Vrusias 2006 4 Array Example int[] anArray; anArray = new int[10]; for (int i = 0; i < anArray.length; i++) { anArray[i] = i; System.out.print(anArray[i] + " "); }
boolean[] answers = { true, false, true, false };
MyObject[] anObjectArray = new MyObject[5]; Server-Side Web Development 09 th March 2006 Bogdan L. Vrusias 2006 5 Multidimensional Array Example int[][] aMatrix = new int[4][];
for (int i = 0; i < aMatrix.length; i++) { aMatrix[i] = new int[5]; for (int j = 0; j < aMatrix[i].length; j++) { aMatrix[i][j] = i + j; } } for (int i = 0; i < aMatrix.length; i++) { for (int j = 0; j < aMatrix[i].length; j++) { System.out.print(aMatrix[i][j] + " "); } System.out.println(); } Server-Side Web Development 09 th March 2006 Bogdan L. Vrusias 2006 6 Vector Example Vector v = new Vector();
for (int i=0; i < v.size(); i++) System.out.println(v.elementAt(i)); // or v.get(i)
Integer a = (Integer) v.elementAt(1); Server-Side Web Development 09 th March 2006 Bogdan L. Vrusias 2006 7 Hashtable Example Hashtable nums = new Hashtable(); nums.put("one", new Integer(1)); nums.put("two", new Integer(2));
Integer n = (Integer)nums.get("two"); if (n != null) { System.out.println("two = " + n); }
for (Enumeration e = nums.keys(); e.hasMoreElements();) { System.out.println(e.nextElement().toString()); } if (nums.containsKey("one")) {...} Server-Side Web Development 09 th March 2006 Bogdan L. Vrusias 2006 8 Java Type Conversion / Casting If v is a Vector type collection object then:
Getting a String from Vector String s = (String)v.elementAt(x);
Vector of Vector objects Vector v = (Vector)v.elementAt(x);
Getting a String from Vector of Vector objects String s = ((Vector)v.elementAt(x)).elementAt(y).toString(); Server-Side Web Development 09 th March 2006 Bogdan L. Vrusias 2006 9 Server-Side Dynamic Construction of JavaScript Target output (for the client machine): ... <script language="JavaScript"> function doit() { var names = new Array(5); names[0] = "Tony"; names[1] = "Mike"; names[2] = "Sarah"; names[3] = "Helen"; names[4] = "Alex";
for (i = 0; i < names.length; i++) { alert(names[i]); } } </script> ... Server-Side Web Development 09 th March 2006 Bogdan L. Vrusias 2006 10 Server-Side Dynamic Construction of JavaScript JSP processed on the server side: ... <% String[] a = {"Tony", "Mike", "Sarah", "Helen", "Alex"}; %> <script language="JavaScript"> function doit() { var names = new Array(<%= a.length %>); <% for (int i = 0; i < a.length; i++) { %> names[<%=i%>] = "<%=a[i]%>"; <% } %>
for (i = 0; i < names.length; i++) alert(names[i]); } </script> ... Server-Side Web Development 09 th March 2006 Bogdan L. Vrusias 2006 11 Server-Side Dynamic Construction of JavaScript Follow the class demo Server-Side Web Development 09 th March 2006 Bogdan L. Vrusias 2006 12 Login Pattern Example First we create a JavaBean that checks the username and password of a user, and then stores the status of the login.
Usernames and password can be stored either within a database (most common) or within a file that is not accessible externally.
Use the JavaBean within the login page to check the password. If the login is incorrect then keep the user within the login page, otherwise redirect to the desired page.
Each consequent page that should only be accessed by logged in users should first of all (at the top of the page) use the previous login JavaBean to check the status of the login. If the user is logged in then the page is displayed, otherwise the user is redirected to the login page. Server-Side Web Development 09 th March 2006 Bogdan L. Vrusias 2006 13 Login Pattern Example login.jsp securePage.jsp check login loginBean correct incorrect submit form access page get login Server-Side Web Development 09 th March 2006 Bogdan L. Vrusias 2006 14 Login Pattern Example Follow the class demo Server-Side Web Development 09 th March 2006 Bogdan L. Vrusias 2006 15 Importing & Using JavaBeans within JavaBeans To invoke and use a JavaBean from another JavaBean just follow the standard Java approach of calling any other Java Class:
Import the appropriate library (not necessary if the class is in the same package) import webtech.lab5.MyClass;
If the class has a state (is an object) then instantiate it. MyClass mc = new MyClass();
Call the methods within the new object mc.setMethod(abc); String v = mc.getMethod(); Server-Side Web Development 09 th March 2006 Bogdan L. Vrusias 2006 16 Importing & Using JavaBeans within JavaBeans Follow the class demo Server-Side Web Development 09 th March 2006 Bogdan L. Vrusias 2006 17 Closing