Modulr 02
Modulr 02
Invoking java code with JSP scripting elements, creating Template Text, Invoking java code from JSP, Limit
Controlling the Structure of generated servlets: The JSP page directive, import attribute, session attribute,isEl
JSP Scripting element are written inside <% %> tags. These code inside <% %> tags
are processed by the JSP engine during translation of the JSP page. Any other text in
the JSP page is considered as HTML code or plain text.
1. Expressions of the form, which are evaluated and inserted into the servlet’s
output.
2. Scriptlets of the form, which are inserted into the servlet’s _jspService
method (called by service).
3. Declarations of the form, which are inserted into the body of the servlet
class, outside any existing methods.
4. Directive is used to provide instructions to the container.
These Objects are the Java objects that the JSP Container makes available to the
developers in each page and the developer can call them directly without being
explicitly declared.
For example you can retrieve HTML form parameter data by using request variable,
which represent the HttpServletRequest object.
<%
String user = request.getParameter(“user”);
%>
The ”out” object is implicit in JSP, associated with JspWriter object
<!DOCTYPE html>
<html>
<head><title>JSP Page</title></head>
<body>
<h1>JSP Expression</h1>
<UL>
<li>Current time: <%= new java.util.Date() %></li>
<li>Server: <%= application.getServerInfo() %></li>
<li>Session ID: <%= session.getId() %></li>
<li> Expression Evaluation: <%= 2 * 6% ></li>
</UL>
</body>
</html>
JSP Servlet
JSP is a web page scripting language that can Servlets are already compiled which also
generate dynamic content creates dynamic web content
JSP runs slower compared to servlet as it Servlets run faster compared to JSP.
takes compilation time to convert into java
Servlets
It’s easier to code in JSP than in Java Its little much code to write here.
Servlets.
We can achieve functionality of JSP at client There are no such methods for servlets.
side by running JavaScript at client side.
"</UL>\n" + "</BODY></HTML>"); } }
<%
String queryData = request.getQueryString(); out.println("Attached GET
%>
<html>
<head><title>Even number program in JSP</title></head>
<body>
<%
for(int i=0;i<=10;i++)
{
if((i%2)==0)
{
out.print("Even number:"+i); out.print("<br>");
}
}
out.println(“<br><br><br>First 10 odd numbers are”);
for(i=0;i<=10;i++)
{
if(i%2!=0)
{
out.println(i);
}
}
%>
</body>
</html>
<body>
<% if (Math.random() < 0.5) { %>
<H1>Have a <I>nice</I> day!</H1>
<% } else { %>
<H1>Have a <I>lousy</I> day!</H1>
<% } %>
</body>
You probably find the bold part a bit confusing, Simply follow the rules for how JSP
code gets converted to servlet code. Once you think about how this example will be
converted to servlet code by the JSP engine, you get the following easily understandable
result.
Overuse of this approach can lead to JSP code that is hard to understand and maintain.
Avoid using it to conditionalize large sections of HTML, and try to keep your JSP
pages as focused on presentation (HTML output) tasks as possible.
Since declarations do not generate output, they are normally used in conjunction with
JSP expressions or scriptlets.
In principle, JSP declarations can contain field (instance variable) definitions, method
definitions, inner class definitions, or even static initializer blocks: anything that is
legal to put inside a class definition but outside any existing methods.
In practice, however, declarations almost always contain field or method definitions.
Example:
<H1>Some Heading</H1>
<%!
private String randomHeading() { return("<H2>" + Math.random() +
}
%>
<%= randomHeading() %>
2.10 Controlling the Structure of generated servlets: The JSP page directive
JSP directive affects the overall structure of the servlet that results from the JSP page.
The jsp directives are messages that tells the web container how to translate a
JSP page into the corresponding servlet.
Following are the two forms to use directives in Jsp
Syntax:
<%@page [attribute_name] =[value]%>
Syntax:
<%@ include file="filename.jsp" %>
Example:
<html>
<body>
<%@ include file= “header.jsp” %> <br>
Contact us at:
<br/>
<%@ include file= “footer.jsp” %>
<br/>
</body>
</html>
o prefix is prepended to the custom tag name. Each library used in a page needs
its own taglib directive with unique prefix.
o uri is a unique identifier in the Tag Library Descriptor (TLD). It’s a unique
name for the tag library the TLD describe.
Example: the following directive signifies that all classes in the java.util
package should be available to use without explicit package identifiers.
<%@ page import="java.util.*" %>
The import attribute is the only page attribute that is allowed to appear
multiple times within the same document.
<html>
<head>
<title>import page directive example</title>
</head>
<body>
Current date: <%= new Date() %>
</body>
</html>
Output
2.12 contentType
The contentType attribute sets the character encoding for the JSP page and for the
generated response page. The default content type is text/html, which is the standard
content type for HTML pages.
A value of true (the default) indicates that the predefined variable session (of type
HttpSession) should be bound to the existing session if one exists;
a new session should be created and bound to session. A value of false means
that no sessions will be used automatically and attempts to access the variable
session will result in errors at the time the JSP page is translated into a servlet.
Output:
Servers can use a larger buffer than you specify, but not a smaller one.
For example, <%@ page buffer="32kb" %> means the document content
should be buffered and not sent to the client until at least 32 kilobytes have been
accumulated or the page is completed.
The default buffer size is server specific, but must be at least 8 kilobytes.
Be cautious about turning off buffering; doing so requires JSP entries that set headers
or status codes to appear at the top of the file, before any HTML content.
The exception thrown will be automatically available to the designated error page by
means of the exception variable.
JSP page to compute speed based upon distance and time parameters.
The page neglects to check if the input parameters are missing or malformed, so an
error could easily occur at run time.
isThreadSafe="true", creates multiple objects for the same JSP file when requested
by multiple clients. Each client is served with a separate _jspService() method (with
only one JSP file loaded).
isThreadSafe="false", allows the container to create one Servlet object for each
client requesting the same JSP.
since java is both the default and the only legal choice.
o
Including files at request Time
o The jsp:include action tag is used to include the content of another resource
it may be jsp, html or servlet.
o The jsp include action tag includes the resource at request time so it is better
for dynamic pages
o Syntax
Action tags
The action tags are used to control the flow between pages and to use Java Bean.
These tags are used to remove or eliminate scriptlet code from JSP page because
scriplet code are technically not recommended.
Standard tags begin with the jsp: prefix
Following are the JSP standard Action tag which are used to perform some specific
task.
JSP Action Description Syntax
Tags
jsp:forward forwards the request and <jsp:forward page=”relativeURL />
response to another
resource.
jsp:include includes another <jsp:include page =“{ page_to _include}”
resource. flush=“true” />
Attribute Description
type Identifies the type of the component. This attribute is required.
code The full name of the class including package notation and the
.class extention. This attribute is required.
codebase The directory names where to find the class file.
This element builds a new bean. It is normally used as follows:
. <jsp:useBean id= "instanceName"
. scope= "page | request | session | application"
. class= "packageName.className"
. type= "packageName.className"
. beanName="packageName.className >
</jsp:useBean>