Java Interview Q&A: Hashset Hashmap Arraylist Linkedlist Treeset Treemap Collection Set List Map
Java Interview Q&A: Hashset Hashmap Arraylist Linkedlist Treeset Treemap Collection Set List Map
Question: Name the containers which uses Border Layout as their default layout?
Answer: Containers which uses Border Layout as their default are: window, Frame and
Dialog classes.
• Interfaces provide a form of multiple inheritance. A class can extend only one
other class.
• Interfaces are limited to public methods and constants with no implementation.
Abstract classes can have a partial implementation, protected parts, static
methods, etc.
• A Class may implement several interfaces. But in case of abstract class, a class
may extend only one abstract class.
• Interfaces are slow as it requires extra indirection to to find corresponding method
in in the actual class. Abstract classes are fast.
Similarities:
• Scrollable result sets- using new methods in the ResultSet interface allows
programmatically move the to particular row or to a position relative to its current
position
• JDBC 2.0 Core API provides the Batch Updates functionality to the java
applications.
• Java applications can now use the ResultSet.updateXXX methods.
• New data types - interfaces mapping the SQL3 data types
• Custom mapping of user-defined types (UTDs)
• Miscellaneous features, including performance hints, the use of character streams,
full precision for java.math.BigDecimal values, additional security, and support
for time zones in date, time, and timestamp values.
• Method overloading
• Method overriding through inheritance
• Method overriding through the Java interface
Following table lists the primitive types and the corresponding wrapper classes:
Primitive Wrapper
boolean java.lang.Boolean
byte java.lang.Byte
char java.lang.Character
double java.lang.Double
float java.lang.Float
int java.lang.Integer
long java.lang.Long
short java.lang.Short
void java.lang.Void
Q: What is ActionServlet?
A: The class org.apache.struts.action.ActionServlet is the called the ActionServlet. In the
the Jakarta Struts Framework this class plays the role of controller. All the requests to the
server goes through the controller. Controller is responsible for handling all the requests.
Q: How you will make available any Message Resources Definitions file to the Struts
Framework Environment?
A: Message Resources Definitions file are simple .properties files and these files contains
the messages that can be used in the struts project. Message Resources Definitions files
can be added to the struts-config.xml file through <message-resources /> tag.
Example:
<message-resources parameter="MessageResources" />
package roseindia.net;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
Q: What is ActionForm?
A: An ActionForm is a JavaBean that extends
org.apache.struts.action.ActionForm. ActionForm maintains the session state for
web application and the ActionForm object is automatically populated on the server side
with data entered from a form on the client side.
Q. How you will enable front-end validation based on the xml in validation.xml?
A: The <html:javascript> tag to allow front-end validation based on the xml in
validation.xml. For example the code: <html:javascript formName="logonForm"
dynamicJavascript="true" staticJavascript="true" /> generates the client side java script
for the form "logonForm" as defined in the validation.xml file. The <html:javascript>
when added in the jsp file generates the client side validation script.
Question: What is RequestProcessor and RequestDispatcher?
Answer: The controller is responsible for intercepting and translating user input
into actions to be performed by the model. The controller is responsible for selecting
the next view based on user input and the outcome of model operations. The
Controller receives the request from the browser, invoke a business operation and
coordinating the view to return to the client.
All request URIs with the pattern *.do are mapped to this servlet in the deployment
descriptor as follows.
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
<url-pattern>*.do</url-pattern>
A request URI that matches this pattern will have the following form.
http://www.my_site_name.com/mycontext/actionName.do
The preceding mapping is called extension mapping, however, you can also specify
path mapping where a pattern ends with /* as shown below.
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>/do/*</url-pattern>
<url-pattern>*.do</url-pattern>
A request URI that matches this pattern will have the following form.
http://www.my_site_name.com/mycontext/do/action_Name
The class org.apache.struts.action.requestProcessor process the request from the
controller. You can sublass the RequestProcessor with your own version and modify
how the request is processed.
Once the controller receives a client request, it delegates the handling of the request
to a helper class. This helper knows how to execute the business operation
associated with the requested action. In the Struts framework this helper class is
descended of org.apache.struts.action.Action class. It acts as a bridge between a
client-side user action and business operation. The Action class decouples the client
request from the business model. This decoupling allows for more than one-to-one
mapping between the user request and an action. The Action class also can perform
other functions such as authorization, logging before invoking business operation.
the Struts Action class contains several methods, but most important method is the
execute() method.
public ActionForward execute(ActionMapping mapping,
ActionForm form, HttpServletRequest request, HttpServletResponse
response) throws Exception;
The execute() method is called by the controller when a request is received from a
client. The controller creates an instance of the Action class if one doesn’t already
exist. The strut framework will create only a single instance of each Action class in
your application.
Action are mapped in the struts configuration file and this configuration is loaded
into memory at startup and made available to the framework at runtime. Each
Action element is represented in memory by an instance of the
org.apache.struts.action.ActionMapping class . The ActionMapping object contains
a path attribute that is matched against a portion of the URI of the incoming
request.
<action>
path= "/somerequest"
type="com.somepackage.someAction"
scope="request"
name="someForm"
validate="true"
input="somejsp.jsp"
<forward name="Success" path="/action/xys" redirect="true"/>
<forward name="Failure" path="/somejsp.jsp" redirect="true"/>
</action>
Once this is done the controller should determine which view to return to the client.
The execute method signature in Action class has a return type
org.apache.struts.action.ActionForward class. The ActionForward class represents
a destination to which the controller may send control once an action has completed.
Instead of specifying an actual JSP page in the code, you can declaratively associate
as action forward through out the application. The action forward are specified in
the configuration file.
<action>
path= "/somerequest"
type="com.somepackage.someAction"
scope="request"
name="someForm"
validate="true"
input="somejsp.jsp"
<forward name="Success" path="/action/xys" redirect="true"/>
<forward name="Failure" path="/somejsp.jsp" redirect="true"/>
</action>
The action forward mappings also can be specified in a global section, independent
of any specific action mapping.
<global-forwards>
<forward name="Success" path="/action/somejsp.jsp" />
<forward name="Failure" path="/someotherjsp.jsp" />
</global-forwards>
Defines an object that receives requests from the client and sends them to any
resource (such as a servlet, HTML file, or JSP file) on the server. The servlet
container creates the RequestDispatcher object, which is used as a wrapper around
a server resource located at a particular path or given by a particular name.
This interface is intended to wrap servlets, but a servlet container can create
RequestDispatcher objects to wrap any type of resource.
getRequestDispatcher
Returns a RequestDispatcher object that acts as a wrapper for the resource located
at the given path. A RequestDispatcher object can be used to forward a request to
the resource or to include the resource in a response. The resource can be dynamic
or static.
The pathname must begin with a "/" and is interpreted as relative to the current
context root. Use getContext to obtain a RequestDispatcher for resources in foreign
contexts. This method returns null if the ServletContext cannot return a
RequestDispatcher.
Parameters:
path - a String specifying the pathname to the resource
Returns:
a RequestDispatcher object that acts as a wrapper for the resource at the
specified path
See Also:
RequestDispatcher, getContext(java.lang.String)
getNamedDispatcher
Parameters:
name - a String specifying the name of a servlet to wrap
Returns:
a RequestDispatcher object that acts as a wrapper for the named servlet
See Also:
RequestDispatcher, getContext(java.lang.String), ServletConfig.getServletName()
The file validation.xml is used to declare sets of validations that should be applied to
Form Beans. Fpr more information please visit
http://www.roseindia.net/struts/address_struts_validator.shtml.
A very simple way to do this is to have the submit button modify a field in the form
which indicates which operation to perform.
Then, in the Action you can setup different methods to handle the different
operations, and branch to one or the other depending on which value is passed in
the dispatch field.
Cool. But do you have to use a property named dispatch? No, you don't. The only
other step is to specify the name of of the dispatch property as the "parameter"
property of the action-mapping. So a mapping for our example might look like this:
<action
path="/reg/dispatch"
type="app.reg.RegDispatch"
name="regForm"
scope="request"
validate="true"
parameter="dispatch"/>
If you wanted to use the property "o" instead, as in o=create, you would change the
mapping to
<action
path="/reg/dispatch"
type="app.reg.RegDispatch"
name="regForm"
scope="request"
validate="true"
parameter="o"/>
Again, very cool. But why use a JavaScript button in the first place? Why not use
several buttons named "dispatch" and use a different value for each?
You can, but the value of the button is also its label. This means if the page
designers want to label the button something different, they have to coordinate the
Action programmer. Localization becomes virtually impossible. (Source:
http://husted.com/struts/tips/002.html).
An action can perform tasks such as validating a user name and password.
An action servlet is a servlet that is started by the servlet container of a Web server
to process a request that invokes an action. The servlet receives a forward from the
action and asks the servlet container to pass the request to the forward's URL. An
action servlet must be an instance of an org.apache.struts.action.ActionServlet class
or of a subclass of that class. An action servlet is the primary component of the
controller.