...
- Create a new dynamic Web Project with the name Application Client.
- Right click on WEB-INF WebContent and create the following jsp's
This form is the login page for our application. Once the user enters his/her credentials, these are passed to another jsp passCredentials.jsp(checkout the action in the form tag) to verify the authenticity of user credentials. In case the user is new he has to go through the registration process. This statement <a href="http://localhost:8080/ApplicationClient/register.jsp">NewUser</a> is used to route the user to registration page.Code Block title login.jsp borderStyle solid <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Welcome to Apache Geronimo</title> </head> <body bgcolor="white"> <form method="post" action="passCredentials.jsp"> <h2 align="center"><font color="blue">Welcome to Apache Geronimo</font></h2> <h2 align="center"><font color="blue">Enter your credentials</font></h2> Enter your Username <input type="text" name="username" size=20><br> Enter your Password <input type="password" name="password" size=20><br> <input type="submit" value="Login"> <a href="http://localhost:8080/ApplicationClient/register.jsp">NewUser</a> </form> </body> </html>
<%!boolean i; %> is a declaration for a global variable. The other part is a scriptlet which does a JNDI lookup to the remote interface. Later the user credentials are passed to verify function. In case the credentials are correct user is routed to the resources page else he is redirected to login page to re-login.Code Block title passCredentials.jsp borderStyle solid <%@ page import="java.util.Properties,javax.naming.Context,javax.naming.InitialContext,statelessejb.RegisterBeanRemote" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Insert title here</title> </head> <body bgcolor="white"> <%!boolean i; %> <% Properties prop=new Properties(); prop.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory"); prop.put("java.naming.provider.url", "ejbd://localhost:4201"); Context context = new InitialContext(prop); RegisterBeanRemote myejb=(RegisterBeanRemote)context.lookup("RegisterBeanRemote"); String s= request.getParameter("username"); String s1= request.getParameter("password"); i=myejb.verify(s,s1); %> <% if (i==true){ %> <jsp:forward page="/resources.jsp"></jsp:forward> <% } else { %> <jsp:forward page="/login.jsp"></jsp:forward> <% } %> </body> </html>
Tip title Why is the lookup name RegisterBeanRemote?? This will be explained in the deploy an run section
This is the final page of the application which displays the various resources.Code Block title resources.jsp borderStyle solid <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Welcome to Apache Geronimo</title> </head> <body bgcolor="white"> <h3><font color="blue">Welcome to Apache Geronimo Resource Center</font></h3> Apache Geronimo Home Page <a href="http://geronimo.apache.org">Apache Geronimo Home page</a><br> Join our mailing list <a href="http://geronimo.apache.org/mailing-lists.html">Apache Geronimo Mailing List</a><br> Come and Contribute to Apache Geronimo V2.1 Documentation <a href="http://cwiki.apache.org/GMOxDOC21/">Apache Geronimo V2.1 Documentation</a> </body> </html>
This page is the registration page. Once th user fills up the form and press Submit a valform() function is called which validates the field username and password. In case any of them is empty an alert is send which suggests empty fields in the form. If all is fine passVariables.jsp is called.Code Block title register.jsp borderStyle solid <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Welcome to Apache Geronimo</title> </head> <body bgcolor="white"> <script type="text/javascript"> function valForm() { if (this.document.form1.username.value=="" || this.document.form1.username.value=="") { alert("You cannot leave the field blank"); this.document.form1.firstname.focus(); return false; } else { return true; } } </script> <h2 align="center"><font color="blue">Welcome to Apache Geronimo User Registration</font></h2> <form method="post" name="form1" action="passVariables.jsp" onSubmit=" return valForm();"> FirstName <INPUT type="text" name="firstname" SIZE=20><br> LastName <INPUT type="text" name="lastname" SIZE=20 ><br> Sex<br> <input type="radio" name="sex" value="male"> Male <br> <input type="radio" name="sex" value="female"> Female <br> Select a UserName<br> <input type="text" name="username" size=20><br> Select a Password<br> <input type="password" name="password" size=20><br> <br> <input type="submit" value="Submit"> </form> </body> </html>
In this page the fields are retrieved from register.jsp and the register function in the bean class is called to populate the database.Code Block title passVariables.jsp borderStyle solid <%@ page import="java.util.Properties,javax.naming.Context,javax.naming.InitialContext,statelessejb.RegisterBeanRemote" %> <html> <head> <meta http-equiv="Refresh" content="5;URL=http://localhost:8080/ApplicationClient/login.jsp"> <title>Welcome to Apache Geronimo</title> </head> <% Properties prop=new Properties(); prop.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory"); prop.put("java.naming.provider.url", "ejbd://localhost:4201"); Context context = new InitialContext(prop); RegisterBeanRemote myejb=(RegisterBeanRemote)context.lookup("RegisterBeanRemote"); String s= request.getParameter("firstname"); String s1= request.getParameter("lastname"); String s2= request.getParameter("sex"); String s3= request.getParameter("username"); String s4= request.getParameter("password"); myejb.register(s,s1,s2,s3,s4); %> <h3 align="center"><font color="blue">Thank you for registering with Apache Geronimo</font></h3> <h3 align="center"><font color="blue">Redirecting to Login Page</font></h3> </html>
The code <meta http-equiv="Refresh" content="5;URL=http://localhost:8080/ApplicationClient/login.jsp"> suggests to wait for 5 seconds and then move to login.jsp
Code Block title index.jsp borderStyle solid <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <body> <jsp:forward page="/login.jsp" /> </body> </html>
Few more configurations
...