jsp

48
JSP Features & Syntax Scripting Elements Scripting elements allow Java code to be written directly into the JSP page. It is compiled and available within the page. There are three kinds of scripting elements: declarations expressions scriplets 1.Declarations Declarations are used to define variables and methods -- both instance and static -- that are likely to be repeated. Thus, they correspond to writing code at the Java Class level. They can also be used to overwrite jspInit or Advanced JAVA Lab Manual Dept., of MCA GRIET

Upload: lavanyakodidasu

Post on 19-Nov-2014

233 views

Category:

Documents


5 download

TRANSCRIPT

JSP Features & Syntax

Scripting Elements

Scripting elements allow Java code to be written directly into the JSP page.  It is compiled and available within the page.  There are three kinds of scripting elements:

declarations expressions scriplets

1.Declarations

Declarations are used to define variables and methods -- both instance and static -- that are likely to be repeated.  Thus, they correspond to writing code at the Java Class level. They can also be used to overwrite jspInit or jspDestroy methods that are created when the JSP is compiled.

The basic form is:

<%! Java variable or method %>

Example:

<%! String message; %>

Advanced JAVA Lab Manual Dept., of MCA GRIET

or

<% String message = "Hello, World, from JSP"; %>

2. Expressions

Expressions are references to variables, methods, or composable structures of such.  They are most often used as a way of dynamically inserting a value into a parameter slot. You may also think of them as representing a call to a static method.  They are evaluated at run time and the results inserted into the output stream at the location of the expression.

The basic form is:

<%= Java expression %>

Example:

<h2><font color= " #AA0000 " > <%=message %></font></h2>

Note that expressions do not include a semicolon(;).

3. Scriplets

Scriplets are sections of Java code that are executed in place.  They can be as simple as a declaration of

Advanced JAVA Lab Manual Dept., of MCA GRIET

a variable that is treated as an instance variable, but they can also include loops that mix Java and HTML.

The basic form is:

<% Java code %>

Example:

<% if ( sessionBean.getLoginType() == 0 ) { %>

     <p align="center"><B>Super User</B></p>

<%} else if ( sessionBean.getLoginType() == 1 ) {%>

     <p align="center"><B>Administrative User</B></p>

<%} else if ( sessionBean.getLoginType() == 2 ) {%>

     <p align="center"><B>Author User</B></p>  

<%} else {%>

     <p align="center"><B>Registered User</B></p>

<%} %>

Advanced JAVA Lab Manual Dept., of MCA GRIET

Implicit Objects

Several local variables are available to scriptlets and expressions through the ServletContext.  They include the following:

application config session request response out page pageContext exception

Most are self-explanatory.  Application, which is the ServletContext of the JSP and stores attributes for the duration of the application..  Page is the current jsp page and stores attributes associated wit the current page.  Out is a writer that can be used by scriplets to put information onto the output stream.

Directives

Directives are instructions to the JSP compiler.  The three types of directives are:

Advanced JAVA Lab Manual Dept., of MCA GRIET

page include taglib

Only the include directive will be discussed here.

The include directive instructs the JSP compiler to fetch the file referenced in the directive and insert it into the page at that point.  Thus, it can be used to include standard boilerplate, such as headers and footers.

The basic form is:

<%@ directive %>

Example:

<%@ include file="header.html" %>

If the included file is HTML, it should not repeat any HTML HEAD or BODY tags that may already be defined in the output stream.

Actions

Actions are JSP tags that transfer control to other server objects or perform operations on other objects.  They may also generate output.  They are another means of building view objects within a M - V - C architecture.  There are some half-dozen

Advanced JAVA Lab Manual Dept., of MCA GRIET

action tags. The three that will be discussed here are:

include forward useBean

All are marked by tags that have the following form:

<jsp:action attributes />

Include

The include tag is very similar to the include directive, discussed above.  It allows content to be included in place.  The content may be either static or dynamic. 

Here is an example:

<jsp:include page="header.html" flush="true"/>

Forward

The forward tag transfer control to a static or dynamic resource, usually referenced by a URL, that exists on the same server.

The basic form is:

<jsp:forward page="forward_page.html"/>

Advanced JAVA Lab Manual Dept., of MCA GRIET

Example:

<jsp:forward page="forward_page.html" flush="true"/>

UseBean

The useBean action is by far the most powerful and the most complex of the JSP actions.  It allows a JSP to create an instance or receive an instance of a Java Bean. 

The JSP could provide typical servlet controller functions by passing the request object to the bean and allowing it to extract user parameters and call back-end functions, just like a servlet.  However, supporting those functions in a servlet is generally considered a better practice.  However, rather than transferring result values to another type, such as a Hash table, and passing that object to a JSP, if a back-end process returned a result bean back to a controller servlet, it could simply pass this bean to the relevant JSP.

In fact, so long as the Java server supports it and is properly configured, it permits beans to be passed from servlet to JSP, to another JSP, to another servlet, etc.  This is called chaining and is an

Advanced JAVA Lab Manual Dept., of MCA GRIET

architecture used to provide incrementally processing using filtering principles.

JSP Page Scopes

 All jsp objects exist within a particular scope or context.  There are four jsp scopes:

page request session application

Request and session should be familiar.  Page is the current jsp page.  Application is the current overall application and can include multiple sessions.  Thus, all users sharing a given application, who may be associated with different sessions, would have access to the same set of application-scope resources.

Programs

-------------

1. HelloWorld.jsp

Advanced JAVA Lab Manual Dept., of MCA GRIET

------------------------<HTML><HEAD><TITLE>Hello Program </TITLE></HEAD> <body> <h1>Hello World message from Ganapathi Raju</h1> <!-- This is JSP comment --> <%out.println("Hello World");%> </body><html>

2. a.jsp----------- <body> <% @ page language="Java" %> <% out.println("hello world");%> </body>

Note: example of Declarations of var:- ---------------------------------------------- <%! int a; %> <%! int a=50; %> <%! int a=50,b=100; %> <%! int a=75;String s="Ganesh"; %> <%! int a=50;float f=10.2f;%>

Advanced JAVA Lab Manual Dept., of MCA GRIET

4.decl.jsp--------<HTML><HEAD><TITLE>JSP Declarations</TITLE></HEAD>

<BODY><H1>JSP Declarations</H1>

<%! private int accessCount = 0; %><H2>Accesses to page since server reboot: <%= ++accessCount %></H2>

</BODY></HTML>

5.Loop.jsp-------------

Advanced JAVA Lab Manual Dept., of MCA GRIET

<body> <% for (int i=0;i<5;i++){%> <b>Hello</b><br> <%}%></body>

(or)

<body> <% for (int i=0;i<5;i++){ out.println("<b>Hello</b><br>"); }%></body>

6.Expr1.jsp-------------

<body> <h1>Data in various sizes</h1> <%for(int i=1;i<7;i++){%> <font size=<%=i%>>Hello in size<%=i%> </font> <br> <%}%> </body>

7.Expr2.jsp

Advanced JAVA Lab Manual Dept., of MCA GRIET

-----------------<% String c[]={"red","green","blue","yellow"};%><% for(int i=0;i<c.length;i++){%> <font size=<%=i+1%>Color=<%=c[i]%>>Hello</font> <br> <%}%>

// program with page directive8.Excel.jsp--------<%@ page contentType="application/vnd.ms-excel" %><%-- Note that there are tabs, not spaces, between columns. --%>1997 1998 1999 2000 2001 (Anticipated)12.3 13.4 14.5 15.6 16.7

9.Ex.html----------<body> here specify the format either "excel" or "html" <form name="f1" action="ApplesAndOranges.jsp"> <br><input type="text" name="format" ><br>

Advanced JAVA Lab Manual Dept., of MCA GRIET

<input type="submit"></body>

Ex.jsp-----------<HTML><HEAD><TITLE>Comparing Apples and Oranges</TITLE></HEAD><BODY><CENTER><H2>Comparing Apples and Oranges</H2>

<% String format = request.getParameter("format");if ((format != null) && (format.equals("excel"))) { response.setContentType("application/vnd.ms-excel");} %><TABLE BORDER=1> <TR><TH></TH><TH>Apples<TH>Oranges

Advanced JAVA Lab Manual Dept., of MCA GRIET

<TR><TH>First Quarter<TD>2307<TD>4706 <TR><TH>Second Quarter<TD>2982<TD>5104 <TR><TH>Third Quarter<TD>3011<TD>5220 <TR><TH>Fourth Quarter<TD>3055<TD>5287</TABLE></CENTER></BODY></HTML>

//Program with Method Declaration and call10 met.jsp ------------ <body> <%! public int mysum(int a,int b)

Advanced JAVA Lab Manual Dept., of MCA GRIET

{ return a+b; }

%> <%out.println("<h1>sample method invocation</h1>"); int a=mysum(10,20); out.println("data is "+a);%><br><b> <%out.println(" sum is "+mysum(100,300);%> </b> </body>

// HTML TO JSP INTERACTION.

11. page1.html --------- <body> <form action="rec.jsp"> Name:-<input type="text" name="t1"><br> <input type="submit" name=b1 value="send"> </form> </body>

rec.jsp -----------

Advanced JAVA Lab Manual Dept., of MCA GRIET

<body> <h1>JSP TO RECEIVE DATA FROM HTML</h1> <% String s1=request.getParameter("t1";%> <% if(s1.equal("")) response.sendRedirect("error.jsp");%> <b> Data received is <%=s1%>from html</b> </body>

// 12.JSP to Database Connectity-------------------------------------------------

a) JSP PROGRAM to insert data into the data base using method:-

Html prg:-<html> <head> <title> Insert data into the database </title> </head> <body bgcolor="grey" background="a.jpg"> <form name="f1" action="r.jsp"> <div align="center"> <h2>Inserting Data into the data base</h2><hr>

<table border=0 >

Advanced JAVA Lab Manual Dept., of MCA GRIET

<tr><td>No:- <input type="text" name="t1"></td>

<tr><td>Name:- <input type="text" name="t2"></td>

<tr> <td><input type="submit" value="insert"><td></tr> </div> </form> </body> </html>

JSP prg:-

<body background="a.jpg"><%@ page language="java" contentType="text/html" %><%@ page import ="java.sql.*" %><%! public int insertRec (String a,String b) {try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection c = DriverManager.getConnection("jdbc:odbc:mydsn1");Statement st = c.createStatement();int i = st.executeUpdate("insert into e values("+a+",'"+b+"')");

Advanced JAVA Lab Manual Dept., of MCA GRIET

st.close();c.close();return i;}catch(Exception e){System.out.println("exception "+e);return 0;}} %><% String s1 = request.getParameter("t1"); String s2=request.getParameter("t2"); int i = insertRec(s1,s2);

out.println(i+"record(s) posted to the database"); %></body>

12 b) JSP PROGRAM TO SELECT DATA FROM DATABASE

HTML PRG:-

<html> <head> <title> Read data from data base </title> </head> <body bgcolor="grey" background="a.jpg">

Advanced JAVA Lab Manual Dept., of MCA GRIET

<form name="f2" action="r1.jsp"> <div align="center"> <h2>getting data from database</h2><hr>

<table border=0 > <tr> <td><input type="submit"

value="select"><td></tr> </div> </form> </body> </html>

JSP PRG:-

<html><head><title >Table values are</title></head><body background="a.jpg"><%@ page language="java" contentType="text/html" %><%@ page import ="java.sql.*" %><h1><center> Tables values are</h1><hr><table border="2" cellspacing="10" cellpadding="10"><tr><th>Eno</th><th>Ename</th></tr><%{try

Advanced JAVA Lab Manual Dept., of MCA GRIET

{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection c = DriverManager.getConnection("jdbc:odbc:mydsn1");Statement st = c.createStatement();ResultSet rs=st.executeQuery("select eno,ename from e");while(rs.next()) {System.out.println("1"); %><tr><td><%=rs.getString("eno")%></td><td><%=rs.getString("ename")%><br></td></tr><% }st.close();c.close();}catch(Exception e){System.out.println("exception "+e);}} %></center></table></body>

Advanced JAVA Lab Manual Dept., of MCA GRIET

<%--13. Example on JSP design pattern: Composite Viewused elements are:include directive & jsp:include--%><!--Header.html--><HTML><BODY><TABLE><TR><TD width="20%"><IMG src="IBM-logo.jpg"/></TD><TD>Home|AppServer|Examples|About Us</TD></TR>

<!--Menu.html--><OL> <LI>Home</LI> <LI>AppServer</LI> <LI>Examples</LI> <LI>About Us</LI></OL>

Advanced JAVA Lab Manual Dept., of MCA GRIET

<!--BodyContent.html--><P><CENTER>Sample text placed in body content area</CENTER></P>

<!--Footer.html--><TR><TD><CENTER>Griet</CENTER></TD></TR></TABLE></BODY></HTML>

<!--CompositeView.jsp--><%@ include file="Header.html"%><TR><TD width="20%"><%@ include file="Menu.html"%></TD><TD><%@ include file="BodyContent.html"%></TD></TR><jsp:include page="Footer.html"/>

Advanced JAVA Lab Manual Dept., of MCA GRIET

JSP Programs with Beans--------------------------------

// 14. program shows how to use beans with JSP

//This application combines seperates control layers and presentation layers of MVC.

/*Example on jsp:useBean*/jsp\EmpQuery.jsp\WEB-INF\classes\beans\EmpBean.java

<!--EmpQuery.html--><FORM action="./EmpQuery.jsp">Empno <INPUT type="text" name="empno" value=""><INPUT type="submit" name="submit" value="Submit"></FORM>

Advanced JAVA Lab Manual Dept., of MCA GRIET

<!--EmpQuery.jsp--><jsp:useBean id="emp" class="beans.EmpBean"><jsp:setProperty name="emp" property="empno" value="<%=Integer.parseInt(request.getParameter(\"empno\").trim())%>"/><jsp:getProperty name="emp" property="ename"/><BR><jsp:getProperty name="emp" property="job"/><BR><jsp:getProperty name="emp" property="sal"/><BR></jsp:useBean>

// EmpBean.javaimport java.io.*;public class EmpBean implements Serializable{private int empno;private String ename, job;private double sal;public EmpBean(){}

Advanced JAVA Lab Manual Dept., of MCA GRIET

/*public void setEmpno(int empno){this.empno=empno;}*/public void setEname(String ename){this.ename=ename;}public void setJob(String job){this.job=job;}public void setSal(double sal){this.sal=sal;}public int getEmpno(){return empno;}public String getEname(){return ename;}public String getJob(){

Advanced JAVA Lab Manual Dept., of MCA GRIET

return job;}public double getSal(){return sal;}public void setEmpno(int empno){this.empno=empno;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

java.sql.Connection con=java.sql.DriverManager.getConnection("jdbc:odbc:mydsn", "scott", "tiger");

java.sql.Statement stmt=con.createStatement();

java.sql.ResultSet rs=stmt.executeQuery("select empno, ename, job, sal from emp where empno="+empno);

if(rs.next()){this.ename=rs.getString(2);this.job=rs.getString(3);this.sal=rs.getDouble(4);

Advanced JAVA Lab Manual Dept., of MCA GRIET

}// if()rs.close();stmt.close();con.close();}// trycatch(Exception e){e.printStackTrace();}// catch()}// setEmpno()}// class

<!--15.This application seperates business logic and control layers from presentation layer-->

<!--EmpQuery.html--><FORM action="./EmpQuery1.jsp">Empno <INPUT type="text" name="empno" value=""><INPUT type="submit" name="submit" value="Submit"></FORM>

Advanced JAVA Lab Manual Dept., of MCA GRIET

<!--EmpQuery1.jsp--><jsp:useBean id="emp" class="beans.EmpBean" scope="session"><jsp:setProperty name="emp" property="empno" value='<%=Integer.parseInt(request.getParameter("empno").trim())%>'/><jsp:forward page="EmpResult1.jsp"/></jsp:useBean>

<!--EmpResult1.jsp--><%beans.EmpBean emp=(beans.EmpBean)pageContext.getAttribute("emp",pageContext.SESSION_SCOPE);%><TABLE border="1" align="center"><TR><TH>EMPNO</TH><TH>ENAME</TH><TH>SAL</TH><TH>JOB</TH></TR><TR>

Advanced JAVA Lab Manual Dept., of MCA GRIET

<TD><%=emp.getEmpno()%></TD><TD><%=emp.getEname()%></TD><TD><%=emp.getSal()%></TD><TD><%=emp.getJob()%></TD></TR></TABLE>

// EmpBean.javaimport java.io.*;public class EmpBean implements Serializable{private int empno;private String ename, job;private double sal;public EmpBean(){}/*public void setEmpno(int empno){this.empno=empno;}*/public void setEname(String ename){this.ename=ename;}public void setJob(String job)

Advanced JAVA Lab Manual Dept., of MCA GRIET

{this.job=job;}public void setSal(double sal){this.sal=sal;}public int getEmpno(){return empno;}public String getEname(){return ename;}public String getJob(){return job;}public double getSal(){return sal;}public void setEmpno(int empno){this.empno=empno;try{

Advanced JAVA Lab Manual Dept., of MCA GRIET

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

java.sql.Connection con=java.sql.DriverManager.getConnection("jdbc:odbc:mydsn", "scott", "tiger");

java.sql.Statement stmt=con.createStatement();

java.sql.ResultSet rs=stmt.executeQuery("select empno, ename, job, sal from emp where empno="+empno);

if(rs.next()){this.ename=rs.getString(2);this.job=rs.getString(3);this.sal=rs.getDouble(4);}// if()rs.close();stmt.close();con.close();}// trycatch(Exception e){e.printStackTrace();}// catch()}// setEmpno()}// class

Advanced JAVA Lab Manual Dept., of MCA GRIET

16. Program to implement strict MVC architecture .MVC:View: Presentation logicBusiness logic: validates user I/P data with all required conditionsControl: which controls flow of execution between MVBModel: access DB

Note1: In MVC arch business logic and control layers are combined into one layerNote2: In classic MVC Model 2 arch business logic seperated from control control

Preferable way of utilizing web components in MVC & MVC 2:JSP/HTML - ViewServlets - ControlJavaBeans - Business logic & model

jsp\EmpQuery.htmlEmpResult.jsp\WEB-INF\web.xml.\classes\EmpQueryServlet

Advanced JAVA Lab Manual Dept., of MCA GRIET

.\beans\EmpBean.java

<!--EmpQuery.html--><FORM action="./empQueryServlet">Empno <INPUT type="text" name="empno" value=""><INPUT type="submit" name="submit" value="Submit"></FORM>

<!--EmpResult.jsp--><%beans.EmpBean bean=(beans.EmpBean)session.getAttribute("emp");%><TABLE border="20" align="center"><TR><TD><%=bean.getEmpno()%></TD><TD><%=bean.getEname()%></TD><TD><%=bean.getSal()%></TD><TD><%=bean.getJob()%></TD></TR></TABLE>

Advanced JAVA Lab Manual Dept., of MCA GRIET

// EmpQueryServlet.javaimport javax.servlet.*;import javax.servlet.http.*;import java.io.*;import beans.*;public class EmpQueryServlet extends HttpServlet{public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{int empno=Integer.parseInt(req.getParameter("empno").trim());EmpBean bean=new EmpBean();bean.setEmpno(empno);

req.getSession().setAttribute("emp", bean);getServletContext().getRequestDispatcher("/EmpResult.jsp").forward(req,resp);

}// service()}// class

web.xml---------

Advanced JAVA Lab Manual Dept., of MCA GRIET

<web-app><servlet><servlet-name>empQueryServlet</servlet-name><servlet-class>EmpQueryServlet</servlet-class></servlet><servlet-mapping><servlet-name>empQueryServlet</servlet-name><url-pattern>/empQueryServlet</url-pattern></servlet-mapping></web-app>

Advanced JAVA Lab Manual Dept., of MCA GRIET