+ All Categories
Home > Documents > jspfaqs - for merge

jspfaqs - for merge

Date post: 09-Apr-2018
Category:
Upload: phani-kumar
View: 219 times
Download: 0 times
Share this document with a friend

of 21

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


Recommended