jspfaqs - for merge
Post on 09-Apr-2018
218 Views
Preview:
TRANSCRIPT
-
8/7/2019 jspfaqs - for merge
1/21
What is a output comment?
A:A comment that is sent to the client in the viewable page source.The JSP enginehandles an output comment as uninterpreted HTML text, returning the comment in
the HTML output sent to the client. You can see the comment by viewing the pagesource from your Web browser.
JSP
Example 1
Displays in the page source:
TOP
Q:What is a Hidden Comment?
A:A comments that documents the JSP page but is not sent to the client. The JSPengine ignores a hidden comment, and does not process any code within hiddencomment tags. A hidden comment is not sent to the client, either in the displayed
JSP page or the HTML page source. The hidden comment is useful when you wantto hide or "comment out" part of your JSP page.
You can use any characters in the body of the comment except the closing --%>combination. If you need to use --%> in your comment, you can escape it by
typing --%\>. JSP
Examples
A Hidden Comment
TOP
Q:What is a Expression?
A:An expression tag contains a scripting language expression that is evaluated,converted to a String, and inserted where the expression appears in the JSP file.
Because the value of an expression is converted to a String, you can use anexpression within text in a JSP file. Like
You cannot use a semicolon to end an expressionTOP
1
http://allapplabs.com/interview_questions/jsp_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions.htm#top%23top -
8/7/2019 jspfaqs - for merge
2/21
Q:What is a Declaration?A:A declaration declares one or more variables or methods for use later in the JSP
source file.
A declaration must contain at least one complete declarative statement. You can
declare any number of variables or methods within one declaration tag, as long asthey are separated by semicolons. The declaration must be valid in the scripting
language used in the JSP file.
TOP
Q:What is a Scriptlet?
A:A scriptlet can contain any number of language statements, variable or methoddeclarations, or expressions that are valid in the page scripting language.Within
scriptlet tags, you can
1.Declare variables or methods to use later in the file (see also Declaration).
2.Write expressions valid in the page scripting language (see also Expression).
3.Use any of the JSP implicit objects or any object declared with a
tag.You must write plain text, HTML-encoded text, or other JSP tags outside the
scriptlet.
Scriptlets are executed at request time, when the JSP engine processes the client
request. If the scriptlet produces output, the output is stored in the out object,from which you can display it.
TOP
Q:What are implicit objects? List them?A:Certain objects that are available for the use in JSP documents without being
declared first. These objects are parsed by the JSP engine and inserted into thegenerated servlet. The implicit objects re listed below
request
response
pageContext
session
application out
config
page
exceptionTOP
2
http://allapplabs.com/interview_questions/jsp_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions.htm#top%23top -
8/7/2019 jspfaqs - for merge
3/21
Q:Difference between forward and sendRedirect?A:When you invoke a forward request, the request is sent to another resource on
the server, without the client being informed that a different resource is going toprocess the request. This process occurs completly with in the web container.
When a sendRedirtect method is invoked, it causes the web container to return tothe browser indicating that a new URL should be requested. Because the browser
issues a completly new request any object that are stored as request attributesbefore the redirect occurs will be lost. This extra round trip a redirect is slower
than forward.TOP
Q:What are the different scope valiues for the ?A:The different scope values for are
1. page
2. request3.session
4.application
TOP
Q:Explain the life-cycle mehtods in JSP?
A:THe generated servlet class for a JSP page implements the HttpJspPage interfaceof the javax.servlet.jsp package. Hte HttpJspPage interface extends the JspPage
interface which inturn extends the Servlet interface of the javax.servlet package.the generated servlet class thus implements all the methods of the these three
interfaces. The JspPage interface declares only two mehtods - jspInit() and
jspDestroy() that must be implemented by all JSP pages regardless of the client-
server protocol. However the JSP specification has provided the HttpJspPageinterfaec specifically for the JSp pages serving HTTP requests. This interface
declares one method _jspService().
The jspInit()- The container calls the jspInit() to initialize te servlet instance.It iscalled before any other method, and is called only once for a servlet instance.
The _jspservice()- The container calls the _jspservice() for each request, passing
it the request and the response objects.The jspDestroy()- The container calls this when it decides take the instance out of
service. It is the last method called n the servlet instance.How do I prevent the output of my JSP or Servlet pages from being
cached by the browser?A:You will need to set the appropriate HTTP header attributes to prevent the
dynamic content output by the JSP page from being cached by the browser. Justexecute the following scriptlet at the beginning of your JSP pages to prevent them
from being cached at the browser. You need both the statements to take care ofsome of the older browser versions.
-
8/7/2019 jspfaqs - for merge
4/21
%>
[ Received from Sumit Dhamija ] TOP
Q:How does JSP handle run-time exceptions?
A:You can use the errorPage attribute of the page directive to have uncaught run-time exceptions automatically forwarded to an error processing page. For
example: redirects the browser to the JSP page
error.jsp if an uncaught exception is encountered during request processing.Within error.jsp, if you indicate that it is an error-processing page, via the
directive: Throwable object describing theexception may be accessed within the error page via the exception implicit object.
Note: You must always use a relative URL as the value for the errorPage attribute.[ Received from Sumit Dhamija ] TOP
Q:How can I implement a thread-safe JSP page? What are the advantages
and Disadvantages of using it?A:You can make your JSPs thread-safe by having them implement the
SingleThreadModel interface. This is done by adding the directive within your JSP page. With this, instead of a single
instance of the servlet generated for your JSP page loaded in memory, you willhave N instances of the servlet loaded and initialized, with the service method of
each instance effectively synchronized. You can typically control the number ofinstances (N) that are instantiated for all servlets implementing
SingleThreadModel through the admin screen for your JSP engine. Moreimportantly, avoid using the tag for variables. If you do use this tag, then you
should set isThreadSafe to true, as mentioned above. Otherwise, all requests tothat page will access those variables, causing a nasty race condition.
SingleThreadModel is not recommended for normal use. There are many pitfalls,including the example above of not being able to use . You should try
really hard to make them thread-safe the old fashioned way: by making themthread-safe .
[ Received from Sumit Dhamija ] TOP
Q:How do I use a scriptlet to initialize a newly instantiated bean?
A:A jsp:useBean action may optionally have a body. If the body is specified, itscontents will be automatically invoked when the specified bean is instantiated.
Typically, the body will contain scriptlets or jsp:setProperty tags to initialize thenewly instantiated bean, although you are not restricted to using those alone.
The following example shows the today property of the Foo bean initialized tothe current date when it is instantiated. Note that here, we make use of a JSPexpression within the jsp:setProperty action.
-
8/7/2019 jspfaqs - for merge
5/21
%>" / >
[ Received from Sumit Dhamija ] TOP
Q:How can I prevent the word "null" from appearing in my HTML input textfields when I populate them with a resultset that has null values?
A:You could make a simple wrapper function, like
then use it inside your JSP form, like
[ Received from Sumit Dhamija ] TOP
Q:What's a better approach for enabling thread-safe servlets and JSPs?
SingleThreadModel Interface or Synchronization?A:Although the SingleThreadModel technique is easy to use, and works well for low
volume sites, it does not scale well. If you anticipate your users to increase in thefuture, you may be better off implementing explicit synchronization for your
shared data. The key however, is to effectively minimize the amount of code thatis synchronzied so that you take maximum advantage of multithreading.
Also, note that SingleThreadModel is pretty resource intensive from the server\'sperspective. The most serious issue however is when the number of concurrent
requests exhaust the servlet instance pool. In that case, all the unserviced
requests are queued until something becomes free - which results in poorperformance. Since the usage is non-deterministic, it may not help much even if
you did add more memory and increased the size of the instance pool.
[ Received from Sumit Dhamija ] TOP
Q:How can I enable session tracking for JSP pages if the browser hasdisabled cookies?
5
http://allapplabs.com/interview_questions/jsp_interview_questions_2.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions_2.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions_2.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions_2.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions_2.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions_2.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions_2.htm#top%23top -
8/7/2019 jspfaqs - for merge
6/21
A:We know that session tracking uses cookies by default to associate a sessionidentifier with a unique user. If the browser does not support cookies, or if cookies
are disabled, you can still enable session tracking using URL rewriting. URLrewriting essentially includes the session ID within the link itself as a name/value
pair. However, for this to be effective, you need to append the session ID for eachand every link that is part of your servlet response. Adding the session ID to a link
is greatly simplified by means of of a couple of methods: response.encodeURL()associates a session ID with a given URL, and if you are using redirection,response.encodeRedirectURL() can be used by giving the redirected URL as input.
Both encodeURL() and encodeRedirectedURL() first determine whether cookies are
supported by the browser; if so, the input URL is returned unchanged since thesession ID will be persisted as a cookie.
Consider the following example, in which two JSP files, say hello1.jsp and
hello2.jsp, interact with each other. Basically, we create a new session withinhello1.jsp and place an object within this session. The user can then traverse to
hello2.jsp by clicking on the link present within the page. Within hello2.jsp, wesimply extract the object that was earlier placed in the session and display its
contents. Notice that we invoke the encodeURL() within hello1.jsp on the link used
to invoke hello2.jsp; if cookies are disabled, the session ID is automaticallyappended to the URL, allowing hello2.jsp to still retrieve the session object. Trythis example first with cookies enabled. Then disable cookie support, restart the
brower, and try again. Each time you should see the maintenance of the sessionacross pages. Do note that to get this example to work with cookies disabled at
the browser, your JSP engine has to support URL rewriting.
hello1.jsp
hello2.jsp
hello2.jsp
[ Received from Vishal Khasgiwala ]
What is the difference b/w variable declared inside a declaration
part and variable declared in scriplet part?A:Variable declared inside declaration part is treated as a global variable.that means
after convertion jsp file into servlet that variable will be in outside of servicemethod or it will be declared as instance variable.And the scope is available to
complete jsp and to complete in the converted servlet class.where as if u declare avariable inside a scriplet that variable will be declared inside a service method and
the scope is with in the service method.
6
-
8/7/2019 jspfaqs - for merge
7/21
[ Received from Neelam Gangadhar] TOP
Q:Is there a way to execute a JSP from the comandline or from my own
application?A:There is a little tool called JSPExecutor that allows you to do just that. The
developers (Hendrik Schreiber & Peter Rossbach
) aim was not to write a full blown servlet engine, but to providemeans to use JSP for generating source code or reports. Therefore most HTTP-
specific features (headers, sessions, etc) are not implemented, i.e. no reponselineor header is generated. Nevertheless you can use it to precompile JSP for your
Explain the life cycle methods of a Servlet.A:The javax.servlet.Servlet interface defines the three methods known as life-cycle
method. public void init(ServletConfig config) throws ServletException
public void service( ServletRequest req, ServletResponse res) throwsServletException, IOException
public void destroyFirst the servlet is constructed, then initialized wih the init() method.
Any request from client are handled initially by the service() method beforedelegating to the doXxx() methods in the case of HttpServlet.
The servlet is removed from service, destroyed with the destroy() methid, then
garbaged collected and finalized.
TOP
Q:What is the difference between the getRequestDispatcher(String path)
method of javax.servlet.ServletRequest interface and
javax.servlet.ServletContext interface?A:The getRequestDispatcher(String path) method of javax.servlet.ServletRequest
interface accepts parameter the path to the resource to be included or forwardedto, which can be relative to the request of the calling servlet. If the path begins
with a "/" it is interpreted as relative to the current context root.
The getRequestDispatcher(String path) method of javax.servlet.ServletContext
interface cannot accepts relative paths. All path must sart with a "/" and areinterpreted as relative to curent context root.
TOP
Q:Explain the directory structure of a web application.A:The directory structure of a web application consists of two parts.
A private directory called WEB-INFA public resource directory which contains public resource folder.
WEB-INF folder consists of
1. web.xml2. classes directory
3. lib directory
TOP
Q:What are the common mechanisms used for session tracking?A:Cookies
7
http://allapplabs.com/interview_questions/jsp_interview_questions_3.htm#top%23tophttp://allapplabs.com/interview_questions/servlet_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/servlet_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/servlet_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/jsp_interview_questions_3.htm#top%23tophttp://allapplabs.com/interview_questions/servlet_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/servlet_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/servlet_interview_questions.htm#top%23top -
8/7/2019 jspfaqs - for merge
8/21
SSL sessionsURL- rewriting
TOP
Q:Explain ServletContext.
A:ServletContext interface is a window for a servlet to view it's environment. A
servlet can use this interface to get information such as initialization parametersfor the web applicationor servlet container's version. Every web application has
one and only one ServletContext and is accessible to all active resource of thatapplication.
TOP
Q:What is preinitialization of a servlet?A:A container doesnot initialize the servlets ass soon as it starts up, it initializes a
servlet when it receives a request for that servlet first time. This is called lazyloading. The servlet specification defines the element, which
can be specified in the deployment descriptor to make the servlet container loadand initialize the servlet as soon as it starts up. The process of loading a servlet
before any request comes in is called preloading or preinitializing a servlet. [ Received from Amit Bhoir ] TOP
Q:What is the difference between Difference between doGet() and
doPost()?A:A doGet() method is limited with 2k of data to be sent, and doPost() method
doesn't have this limitation. A request string for doGet() looks like the following:
http://www.allapplabs.com/svt1?p1=v1&p2=v2&...&pN=vNdoPost() method call doesn't need a long text tail after a servlet name in a
request. All parameters are stored in a request itself, not in a request string, and
it's impossible to guess the data transmitted to a servlet only looking at a requeststring.
[ Received from Amit Bhoir ] TOP
Q:What is the difference between HttpServlet and GenericServlet?A:A GenericServlet has a service() method aimed to handle requests. HttpServlet
extends GenericServlet and adds support for doGet(), doPost(), doHead() methods(HTTP 1.0) plus doPut(), doOptions(), doDelete(), doTrace() methods (HTTP 1.1).
Both these classes are abstract.
[ Received from Amit Bhoir ] TOP
Q:What is the difference between ServletContext and ServletConfig?
A:ServletContext: Defines a set of methods that a servlet uses to communicatewith its servlet container, for example, to get the MIME type of a file, dispatch
requests, or write to a log file.The ServletContext object is contained within theServletConfig object, which the Web server provides the servlet when the servlet
is initialized
ServletConfig: The object created after a servlet is instantiated and its default
constructor is read. It is created to pass initialization information to the servlet.[ Received from Sivagopal Balivada ]
8
http://allapplabs.com/interview_questions/servlet_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/servlet_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/servlet_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/servlet_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/servlet_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/servlet_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/servlet_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/servlet_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/servlet_interview_questions.htm#top%23tophttp://allapplabs.com/interview_questions/servlet_interview_questions.htm#top%23top -
8/7/2019 jspfaqs - for merge
9/21
RE: How does a servlet communicate with a JSP page?
A Servlet can communicate with JSP by using the RequestDispatchermechanism.RequestDispatching is the process hand overing the request to another webcomponent,and this component takes the response of generating the response.Thismechanism or interface having two methods1)forward()2)include()First we need to get the rerference of the component,and then we need to use thecorresponding methods according to our requirement...Ex...RequestDispatcher rd=request.getRequestDispatcher("/Home.jsp");rd.forward(request,response);
How can I Set and delete a cooking from Jsp page?
A cookie, mycookie, can be deleted using the following scriptlet:
How to handle runtime exceptions in Jsp?
we can use the errorPage attribute of the page directive to have uncaught runtimeexceptions automatically forwarded to an error processing page. For example:
redirects the browser to the JSP page error.jsp if an uncaught exception is encounteredduring request processing. Within error.jsp, if you indicate that it is an error-processing
page, via the directive:
the Throwable object describing the exception may be accessed within the error page via
the exception implicit object.
Note: You must always use a relative URL as the value for the errorPage attribute
How do I include static files within a JSP page?
Static resources should always be included using the JSP include directive. This way, the
inclusion is performed just once during the translation phase.
9
http://www.geekinterview.com/question_details/2209http://www.geekinterview.com/question_details/2209 -
8/7/2019 jspfaqs - for merge
10/21
Can a JSP page process HTML FORM data?
Can you make use of a ServletOutputStream object from within a JSP page?No. You are supposed to make use of only a JSPWriter object (given to you in the form of the implicit objectout) for replying to clients. A JSPWriter can be viewed as a buffered version of the stream
Can I invoke a JSP error page from a servlet?Yes, you can invoke the JSP error page and pass the exception object to it from within a
servlet. The trick is to create a request dispatcher for the JSP error page, and pass the
exception object as a
How do I perform browser redirection from a JSP page?
You can use the response implicit object to redirect the browser to a different resource,
as:
response.sendRedirect("http://www.foo.com/path/error.html");
You can also physically alter the Location HTTP header attribute, as shown below:
How do I have the JSP-generated servlet subclass my own custom servlet class, insteadof the default?One should be very careful when having JSP pages extend custom servlet classes as
opposed to the default one generated by the JSP engine. In doing so, you may lose out on
any advanced optimization that may be provided by the JSPengine. In any case, your newsuperclass has to fulfill the contract with the JSPngine by: Implementing the HttpJspPage
interface, if the protocol used is HTTP, or implementing JspPage otherwise Ensuring that
all the methods in the Servlet interface are declared final Additionally, your servletsuperclass also needs to do the following:
The service() method has to invoke the _jspService() method
The init() method has to invoke the jspInit() method
The destroy() method has to invoke jspDestroy()If any of the above conditions are not satisfied, the JSP engine may throw a translation
error. Once the superclass has been developed, you can have your JSP extend it as
follows:
10
-
8/7/2019 jspfaqs - for merge
11/21
-
8/7/2019 jspfaqs - for merge
12/21
Custom tags and beans accomplish the same goals -- encapsulating complex behavior into simple
and accessible forms. There are several differences:
Custom tags can manipulate JSP content; beans cannot.
Complex operations can be reduced to a significantly simpler form with custom tags than with
beans. Custom tags require quite a bit more work to set up than do beans.
Custom tags usually define relatively self-contained behavior, whereas beans are often defined in
one servlet and used in a different servlet or JSP page.
Custom tags are available only in JSP 1.1 and later, but beans can be used in all JSP 1.x versions
What is the difference between RequestDispatcher's forward(ServletRequest request,
ServletResponse response) method and HttpServletResponse's sendRedirect(String location)
method
The forward method of RequestDispatcher will forward the ServletRequest andServletResponse that it is passed to the path that was specified in
getRequestDispatcher(String path). The response will not be sent back to the clientand so the client will not know about this change of resource on the server. This
method is useful for communicating between server resources, (servlet to servlet).Because the request and response are forwarded to another resource all request
parameters are maintained and available for use. Since the client does not knowabout this forward on the server, no history of it will be stored on the client, so using
the back and forward buttons will not work. This method is faster than usingsendRedirect as no network round trip to the server and back is required.
An example using forward:protected void doGet(HttpServletRequest request, HttpServletResponse
response)throws ServletException, IOException {
RequestDispatcher rd = request.getRequestDispatcher("pathToResource");
rd.forward(request, response);
}
The sendRedirect(String path) method of HttpServletResponse will tell the client that
it should send a request to the specified path. So the client will build a new requestand submit it to the server, because a new request is being submitted all previous
parameters stored in the request will be unavailable. The client's history will beupdated so the forward and back buttons will work. This method is useful for
redirecting to pages on other servers and domains.
An example using sendRedirect:protected void doGet(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
response.sendRedirect("pathToResource");
}
12
-
8/7/2019 jspfaqs - for merge
13/21
What is the scope of ? Does it get passed to
jsp:forwarded pages? Does it get passed to jsp:included pages?
The errorPage="SomePage" attribute can be present in either the JSP that includes
or forwards to another JSP OR in the included or forwarded JSP OR in both the
parent/calling JSP and the JSPs included/forwarded. In all these cases the attribute
will work.
The control will 'not be' redirected to the errorPage specified from these JSP pages,
in case the exception is explicitly caught in them.
To redirect the control to the errorPage either do not catch an exception in the JSP
page OR throw an exception explicitly.
What's the Difference between Forward and Include?
The action enables you to forward the request to a static HTML file, a
servlet, or another JSP.
The JSP that contains the action stops processing, clears its buffer,
and forwards the request to the target resource. Note that the calling JSP should not
write anything to the response prior to the action.
You can also pass additional parameters to the target resource using the
tag.
13
-
8/7/2019 jspfaqs - for merge
14/21
In this example, test.jsp can access the value of name1 using
request.getParameter("name1").
To "include" another resource with a JSP, you have two options: the include directive
and the include action.
The include directive executes when the JSP is compiled, which parses any JSP
elements in the included file for a static result that is the same for every instance of
that JSP. The syntax for the include directive is .
The include action, on the other hand, executes for each client request of the JSP,
which means the file is not parsed but included in place. This provides the capability
to dynamically change not only the content that you want to include, but also the
output of that content. The syntax for the include action is . Note that the flush attribute must always be
included (in JSP 1.1) to force a flush of the buffer in the output stream.
You can also pass parameters to the included file using the same process as the
action:
emember that template.jsp can access the value of name1 using
request.getParameter("name1").
14
-
8/7/2019 jspfaqs - for merge
15/21
Why should I use the tag, instead of just instantiating beans directly
inside scriptlets?
The arguments in favor of using the useBean tag are:
The tag syntax is arguably less intimidating to HTML designers.
useBean has a "scope" parameter that automatically determines whether the bean
should be stored as a local variable, a request variable, a session variable, or an
application attribute. If you were to create beans explicitly you'd have to do it 4
different ways for the 4 different scopes.
If the variable is persistent (session or application), useBean initializes it if
necessary, but fetches the variable if it already exists.
The tags are potentially more portable to future versions of the JSP spec, or
alternate implementations (for example, a hypothetical JSP engine that stores
variables in a database, or shares them across server processes).
How can I print the stack trace of an Exception out to my JSP page?
To print a stack trace out to your JSP page, you need to wrap the implicit object 'out'in a printWriter and pass the object to the printStackTrace method in Exception. ie:
15
-
8/7/2019 jspfaqs - for merge
16/21
Why do I get the error "IllegalStateException" when using the RequestDispatcher?
When you use RequestDispatcher.forward or RequestDispatcher.include to call
another servlet, you must pay very close attention to a fairly tricky detail of the
servlet "chain of command."
When a servlet is first called, the response object is fresh and new: its headers have
not been set, its buffers are empty, and no data has been written to the client.
However, as soon as either the status code or any of the headers have been written
-- or potentially written -- to the client, or when data has been -- or may have been
-- written to the body stream, then you may be susceptible to the
IllegalStateException error. The problem that this exception is signalling is the new
data that you are (or may be) writing is inconsistent with the data that's already
been set and then irretrivably sent ("committed") to the client. Two common variants
of this exception are "java.lang.IllegalStateException: Header already sent" and
"java.lang.IllegalStateException: Cannot forward as Output Stream or Writer has
already been obtained". "Header already sent" means that one or more headers have
been committed to the client, so you can't set that header again.
"Output Stream or Writer has already been obtained" means that since the calling
servlet has already called response.getWriter() or response.getOutputStream(), that
contaminates the data stream, since the response has been (or may have been)
written to already, making it unsuitable for forwarding.
What are the advantages of using beanName in the jsp:useBean syntax?
What are the advantages of using beanName in the jsp:useBean syntax?
The beanName tag uses Beans.instantiate() method to instantiate a bean. This
method can instantiate a bean from either a class or a serialized template. The value
of beanName can be either a fully qualified class name or an expression that
evaluates to a fully qualified class name. This value is passed to Beans.instantiate()
16
-
8/7/2019 jspfaqs - for merge
17/21
method which checks whether this is a class or a serialized template. In case of a
serialized template, a class loader is called. The instantiated bean is then cast to the
type specified by type attribute.
Is it possible to give different session timeouts for different groups of users? I think
session timeouts are set in the server and is the same for all users...meaning if you
dont use something the web app for 30 mins yr session expires...and it is the same
for all users?
Ans: The session timeout set in the web.xml is common for all sessions in theapplication. But you can override that for a "particluar" session, by using the
HttpSession.setMaxInactiveInterval(int secs)on your session instance.
So, for your requirement, you can check that if a particular user belongs to the John-Q group, change his session timeout using the above method or else the default
session timeout of 30 min remains.
Is the HTTP Session maintained even when the network connection goes down? Can
the same browser instance resume a previous session after re-establishing the
network connection
Ans: In the Servlets API, HttpSessions are implemented as objects in memory on
the web app server. Therefore, the session will be maintained on ther server as longas the server is running (or until it "times out" after the max inactive interval has
passed). Even if the server "goes offline" and then "goes online," the session will bemaintained if the web app server process is still running (and the session has not
timed out). Session cookies are sent to the browser to allow the browser to identifyitself to the server, thereby allowing the server to "look up" the user's session. The
session cookies are deleted when the browser process exits, so if the user "goesoffline" and then "goes online" and makes a request, the session cookie will still be
available--assuming the same browser process. However, even if the cookie isavailable and sent to the server, if the session has timed out, the session is not
available (the user would get a new session with a call to request.getSession()).
Are Page scoped variables available across multiple requests to the same page? If
this is not the case, what is the difference between request scope and page scope for
JSP? Also, is this data available even when something like a query string is changed?
Answer
17
-
8/7/2019 jspfaqs - for merge
18/21
No, the page scope has a life that ends with the end of the page, but it does notpropagate to other page (included or forwarded).
The request scope life ends when the response is send back to the client, and its
visibility is to all the pages that are included or forwarded.
How can I retrieve an expired session?
I don't think there's a way of doing that. Once the session has expired, the session
object is flagged for garbage collection and later destroyed
Is it possible to call a custom tag from another custom tag? If so how?
AnswerYou can have nested tags and the value of a tag attribute also may be evaluated by
JSP engine. Please see bodycontent and rtexprvalue element in the followingexample of a tld file.
..
...
JSP
name
false
true
...
...
Does Buffer size affects the performance in any way? I am using buffer sizeas 100kb.will it in anyway affect the performance? If yes what is the
optimum size that can be used? If no why?
I would say that it depends on the pages you normally handle. Bigger buffers are
normally faster but they use a bigger amount of memory that, in a Servlet/JSPsystem could have a negative impact on server's performances.
Default value should be 8K, and except few cases, I've always considered it areasonable value. I change it only when I have to send out very big pages.
Can I instantiate the same JavaBean multiple times within a JSP page by
associating each instance with a different scope?
AnswerYes, you can instantiate the same bean within a page multiple times by associating
them with different scopes. Needless to say, the bean's "id" must also be unique forthe specified scope. For example, you can have the following within a page:
18
-
8/7/2019 jspfaqs - for merge
19/21
How to return a value from a servlet to a JSP?
There are couple of ways to do this.
1. You can put the information you like in a HTTPSession object. This object is
created for you and stays with the user during the time they are in the site.
This is done like this:
2. HttpSession s = request.getSession(true);3. s.setAttribute("returnVal", callMethod());
The first row creates the session if there are no sessions. Next row sets thevalue you like in to the session object. Remember that in the JSP page you
have to cast this object back to whatever object it is. All "things" in a sessionobject are stored as java.lang.Objects.
here is how that is done inside the JSP page:
myObject = (myObject)
session.getAttribute("returnVal");
4. The other way of doing this is to put the value in the request object. It issimilar to the previous example, only it is the request object.
Here is how that is done:5. RequestDispatcher rd =
getServletContext().getRequestDispatcher("/yourjsppage.jsp");
6. request.setAttribute("myObject", getMyObject());
rd.forward(request, response);
The first row gets the requestDispatcher, the second line adds your object to
the request object and the last line forwards the request. In the JSP page youuse the "request" object like this:
myObject = (myObject)request.getAttribute("myObject");
Can two web applications (servlet contexts) share the same session object?
AnswerBy default, the session object is context-specific. Although a few servlet containers
(Tomcat, Resin) may allow web applications to share session contexts by means of
19
-
8/7/2019 jspfaqs - for merge
20/21
the "crosscontext" setting within the deployment descriptor, by default, that shouldnot be allowed for security purposes and must be used cautiously only for admin-
type applications.
[For example:
It looks like "crossContext" allows you to get the ServletContext. According to
the servlet docs, "There is one context per 'web application' per Java VirtualMachine." This would appear to be a server-wide piece of information, not tied
to the particular browser's session.
I need to trap all kinds 500 error on my jsp page. I have tried the but it only works on selected errors. Howcan I trap all errors, including syntax errors?
AnswerYou can setup your web application to have error pages associated with a type of
exception/error that occurs when pages are executed. You can setup a generic errorpage for Throwable and then more specific error pages from more specific
exceptions/erros that occur. Here is a sample web deployment descriptor thatoutlines the strategy:
java.lang.Throwable
/error-pages/generic.htm
500/error-pages/500.htm
404
/error-pages/notThere.htm
20
-
8/7/2019 jspfaqs - for merge
21/21
21
top related