- getSession() : Returns the current session associated with this request, or if the request does not have a session, creates one.
- getSession(true) : Returns the current HttpSession associated with this request, if there is no current session, returns a new session
- getSession(false) : Returns the current HttpSession associated with this request, if there is no current session, returns null.
Servlet
Servlet Lifecycle
Java Servletes
What is the difference between EAR, JAR and WAR file?
In J2EE, application modules are packaged as EAR, JAR and WAR based on their functionality.
Each type of file (.jar, .war, .ear) is processed uniquely by application servers, servlet containers, EJB containers, etc
JAR:
Jar file (file with a .jar extension) is the normal Java Application archive and intended to hold generic libraries of Java classes, resources, auxiliary files, etc
This can be added in classpath for compilation and to run java program. Generally in web applications we keep these files in lib directory of the application.
Ex: ojdbc14.jar – This contains all the classes to connect the oracle database
Servlet-api.jar – contains servlet related classes
WAR:
Web modules which contains Servlet class files,JSP Files,supporting files, GIF and HTML files are packaged as JAR file with .war( web archive) extension
War files (files with a .war extension) are intended to contain complete Web applications. In this context, a Web application is defined as a single group of files, classes, resources, .jar files that can be packaged and accessed as one servlet context.
EAR:
All above files(.jar and .war) are packaged as JAR file with .ear ( enterprise archive) extension and deployed into Application Server.
Ear files (files with a .ear extension) are intended to contain complete enterprise applications. In this context, an enterprise application is defined as a collection of .jar files, resources, classes, and multiple Web application.
What is the Max amount of information that can be saved in a Session Object?
As such there is no limit on the amount of information that can be saved in a Session Object. Only the RAM available on the server machine is the limitation. The only limit is the Session ID length(Identifier) , which should not exceed more than 4K. If the data to be store is very huge, then it’s preferred to save it to a temporary file onto hard disk, rather than saving it in session. Internally if the amount of data being saved in Session exceeds the predefined limit, most of the servers write it to a temporary cache on Hard disk.
What are Good Ways of Debugging a Servlet? Are IDE’s which support Servlet Debugging?
There are couple of Methods. Firstly servers like JRun and others provide separate logs where all your Print requests will print their data into. For example requests to System.out. and System.err go to different log files. If this features is not available or you want to maintain logs separately for each module then you can create a static class called “LogWriter” and call the method inside the try catch loop. The print method in Log Writer will be writing to a custom defined Log File.
try
{ ….
}
catch(Exception exp)
{
LogWriter.print(“Debug : The following error occurred at function …. ‘)
}
Also Inprise JBuilder supports Servlet Debugging. Please refer to JBuilder documentation for details.
Just as a Cautionary note, from your Servlets, never call System.exit(0). The results might be unpredictable. Might close down the entire Server. The Best way is to catch the Exception and either send resultant Error Page to the Browser or Write to a Log file and inform user about the Error.
Can the same object os Stateless Session bean be shared by multiple clients? Can the same object os Stateful Session bean be shared by multiple clients?
It is possible to share the same object of stateless session bean by multiple clients.
A Server maintains a pool of objects in case of stateless session bean. And every When ever we send a request to the JSP file it checks the servlet representing the JSP file. Then the web container runs the jsp compiler that generates the servlet code
time for a request it uses one of the pool of objects which is free at that time. The server gets back that object in to the pool only after the client work on that object is Directory over [ client says that by invoking ejbremove() method]
After the client release that object, the server may used the same object to handle another client request, thus the same object to handle another client request. Thus the same object of stateless session can be shared by multiple clients But sharing the same object for multiple clients is not possible in case of state full session bean. Here server should maintain an object for every clients to handle / maintain the state of that object.
What is a servlet Context? How do you get it?
ServletContext is also called as application object . And this can be used for logging (stores some kind of information ) getting context parameters, getting the request dispatcher and storing the global data.
We can get the serveletcontext using ServeletContext.
i.e ServletContext sc = getServletContext();
Difference between and tags?
Both forward and include are action tags, below are their differences
jsp:forward
redirects the servlet Request and Servlet Response to another resource specified in the tag. The path of the resource is ‘relative path’. The output generated by current JSP will be discarded.jsp:include
processes the resource as part of the current jsp. It include the output generated by resource, which is specified in the Tag to the current JSP
In both the cases single Request process multiple resources.
What is Temporary Servlet?
When we sent a request to access a JSP, servlet container internally creates a ‘servlet’ & executes it. This servlet is called as ‘Temporary servlet’. In general this servlet will be deleted immediately to create & execute a servlet base on a JSP we can used following command.
Java weblogic.jspc—keepgenerated *.jsp