Posted :
The
ServletConfig
interface , defines methods , which can be used to
retrieve initialization parameters ,
passed to a specific servlet , by the servlet container
catalina , when
creating the servlet and calling its
init method .
The config object , is an instance of ServletConfig . It is an implicit object , which is not necessary to declare , and which can be used inside a JSP page . A JSP page is converted , to a servlet .
The
@WebServlet annotation used
in a java source file
,
and the web.xml
files located in : the
WEB-INF
folder of each web application , and in the
apache-version-number\conf
folder , can be used to pass init parameter ,
to a specific servlet .
The ServletConfig interface defines the following methods :
String getServletName()
:
If the name of the servlet is defined
using web.xml , or the @WebServlet annotation ,
then
getServletName ,
will return the name of the servlet , else ,
it will return the name of the servlet class .
Enumeration<String> getInitParameterNames()
: can be used to get the names of the
initialization parameters , passed to the servlet .
They are returned as an Enumeration<String> type ,
which is empty , if no parameters are passed .
String getInitParameter(String name)
:
Returns the value for the provided initialization parameter name .
If no initialization parameter is defined with the given name , then the value returned is null .
ServletContext getServletContext()
:
Returns the ServletContext object , which is
used to interact with the servlet container ,
and to retrieve parameters passed to the web application as a whole .
As
an example , the web.xml file ,
located under
apache-tomcat-9.0.36\conf ,
defines the following information ,
related to a servlet . The defined servlet is
mapped to any url ,
which ends with : jsp or jsx .
<!--apache-tomcat-9.0.36/conf/web.xml-->
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
A
web application , is created under the webapps
folder , of tomcat , with the
name of test . It has the following
structure :
# apache-tomcat-9.0.36/webapps/test |-- WEB-INF | |-- classes | | |-- com | | |-- difyel | | |-- test | | |-- ServletGetInitParameter.class | |-- src | | |-- ServletGetInitParameter.java | |-- web.xml |-- jsp_page_get_init_parameters.jsp
The
web.xml
file , under the
WEB-INF folder ,
has the following content :
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"
metadata-complete="false">
<display-name>A test Web application</display-name>
<servlet>
<servlet-name>jsp-page</servlet-name>
<jsp-file>/jsp_page_get_init_parameters.jsp</jsp-file>
<init-param>
<param-name>an-init-parameter-name</param-name>
<param-value>an-init-parameter-value</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>jsp-page</servlet-name>
<url-pattern>/jsp-page-get-init-parameters</url-pattern>
</servlet-mapping>
</web-app>
A
jsp file is defined under the root of the
web application with the name of
jsp_page_get_init_parameters.jsp .
It has the following content :
<html>
<head>
<title>Jsp page , Get init parameters</title>
</head>
<body>
<h3>Get init parameters using the config implicit object</h3>
<ul>
<%
out.println("<li>Jsp Servlet name : "+ config.getServletName() +"</li>");
/*Print the servlet name*/
java.util.Enumeration<String> initParametersName = config.getInitParameterNames();
/*Get the init parameter names*/
if(initParametersName.hasMoreElements()){
out.println("<li>");
out.println("<p>Init Parameter Names : Init Parameter values<p>");
out.println("<ul>");
while(initParametersName.hasMoreElements()){
String initParameterName = initParametersName.nextElement();
String initParameterValue = config.getInitParameter(initParameterName);
out.println("<li>" + initParameterName + " : " + initParameterValue + "</li>");
}
out.println("</ul>");
out.println("</li>");
}
else{
out.println("<li> No init parameters were passed to the jsp page . </li>");
}
out.println("<li>Servlet context name : "+ config.getServletContext().getServletContextName() +"</li>");
/*Print the servlet context name*/
%>
</ul>
</body>
</html>
When the web application is visited using the url :
http://localhost:8080/test/jsp_page_get_init_parameters.jsp ,
the url pattern *.jsp is matched under
apache-tomcat-9.0.36/conf/web.xml , as such
http://localhost:8080/test/jsp_page_get_init_parameters.jsp
will display the following information :
Get init parameters using the config implicit object
o Jsp Servlet name : jsp
o Init Parameter Names : Init Parameter values
o fork : false
o xpoweredBy : false
o Servlet context name : A test Web application
# The servlet context name is related to the web application
# as a whole , not to a specific servlet , it is gotten
# from apache-tomcat-9.0.36/webapps/test/WEB-INF/web.xml
When the web application is visited using the url :
http://localhost:8080/test/jsp-page-get-init-parameters ,
the url pattern *.jsp is matched under
apache-tomcat-9.0.36/conf/web.xml ,
and the url pattern jsp-page-get-init-parameters
is matched under
apache-tomcat-9.0.36/webapps/test/WEB-INF/web.xml ,
as such ,
http://localhost:8080/test/jsp-page-get-init-parameters
will display the following information :
Get init parameters using the config implicit object
o Jsp Servlet name : jsp-page
o Init Parameter Names : Init Parameter values
o fork : false
o an-init-parameter-name : an-init-parameter-value
o xpoweredBy : false
o jspFile : /jsp_page_get_init_parameters.jsp
o Servlet context name : A test Web application
The ServletGetInitParameter.java file has the following content :
package com.difyel.test ;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.annotation.WebServlet;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.ServletException;
import javax.servlet.ServletConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(
urlPatterns = "/servlet-get-init-parameters",
initParams = {
@WebInitParam (name="an-init-param-name" , value="an-init-param-value")
}
)
public class ServletGetInitParameter extends HttpServlet {
protected void doGet(HttpServletRequest req , HttpServletResponse resp) throws IOException , ServletException{
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title> Servlet page , Get init parameters</title>");
out.println("</head>");
out.println("<body>");
out.println("<ul>");
ServletConfig config = this.getServletConfig();
/*Get the ServletConfig object*/
out.println("<li>Servlet name : "+ config.getServletName() +"</li>");
/*Print the servlet name*/
Enumeration<String> initParametersName = config.getInitParameterNames();
/*Get the init parameter names*/
if(initParametersName.hasMoreElements()){
out.println("<li>");
out.println("<p>Init Parameter Names : Init Parameter values<p>");
out.println("<ul>");
while(initParametersName.hasMoreElements()){
String initParameterName = initParametersName.nextElement();
String initParameterValue = config.getInitParameter(initParameterName);
out.println("<li>" + initParameterName + " : " + initParameterValue + "</li>");
}
out.println("</ul>");
out.println("</li>");
}
else{
out.println("<li> No init parameters were passed to the servlet . </li>");
}
out.println("<li>Servlet context name : "+ config.getServletContext().getServletContextName() +"</li>");
/*Print the servlet context name*/
out.println("</body>");
out.println("</html>");
}
}
When the web application is visited using the url :
http://localhost:8080/test/servlet-get-init-parameters ,
the url pattern /servlet-get-init-parameters
defined under @WebServlet urlPatterns in
ServletGetInitParameter.java
is matched , as such
http://localhost:8080/test/servlet-get-init-parameters
will display the following information :
o Servlet name : com.difyel.test.ServletGetInitParameter
o Init Parameter Names : Init Parameter values
o an-init-param-name : an-init-param-value
o Servlet context name : A test Web application
The source code for the test web application , can be download from here .