获取servletConfig的对象:
可以通过两种方式获得ServletConfig的对象,它们是通过调用getservletConfig()方法并通过调用init(servletconfig)来获得。
通过调用getservletconfig()方法:
getservletconfig()是javax.servlet.servlet接口中可用的方法。
此方法进一步继承并定义为名为javax.servlet.genericservlet的类,并且该方法进一步继承到一个名为javax.servlet.http.http.http.http.http.httpservlet中的另一个预定义类中,并且它可以继承到我们自己的servlet类中。
例如:
public class serv1 extends HttpServlet
{
public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
{
.........
.........
ServletConfig config=this.getServletConfig ();
.........
.........
}
};
在上面的示例中,对象配置包含(键,value)web.xml文件的对数据,它在<servlet>标记的<init-param>标记下写入。
通过调用init(servletconfig):
例如:
public class serv2 extends HttpServlet
{
ServletConfig sc;
public void init (ServletConfig sc)
{
Super.init (sc); //used for calling init (ServletConfig) method of HttpServlet
this.sc=sc; //ServletConfig object sc is referenced
}
........
........
};
从ServletConfig接口对象检索数据:
要从ServletConfig接口对象获取数据,我们必须使用以下方法:
public String getInitParameter (String); - 1 public Enumeration getInitParameterNames (); - 2
方法-1用于通过传递参数名称来获取参数值。
String val1=config.getInitParameter ("v1");
String val2=config.getInitParameter ("v2");
String val3=config.getInitParameter ("v3");
方法-2用于获取所有参数名称及其相应的参数值。
例如:
Enumeration en=config.getInitParameterNames ();
while (en.hasMoreElements ())
{
Object obj=en.nextElement ();
String pname= (String) obj;
String pvalue=config.getInitParameter (pname);
out.println (pvalue+" is the value of "+pname);
}
serv1.java:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class Serv1 extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter pw = res.getWriter();
ServletConfig config = getServletConfig();
String val1 = config.getInitParameter("v1");
String val2 = config.getInitParameter("v2");
String val3 = config.getInitParameter("v3");
String val4 = config.getInitParameter("v4");
pw.println("<h3> Value of v1 is " + val1 + "</h3>");
pw.println("<h3> Value of v2 is " + val2 + "</h3>");
pw.println("<h3> Value of v3 is " + val3 + "</h3>");
pw.println("<h3> Value of v4 is " + val4 + "</h3>");
}
};
serv2.java:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class Serv2 extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter pw = res.getWriter();
ServletConfig config = getServletConfig();
Enumeration en = config.getInitParameterNames();
while (en.hasMoreElements()) {
Object obj = en.nextElement();
String pname = (String) obj;
String pvalue = config.getInitParameter(pname);
pw.println("</h2>" + pvalue + " is the value of " + pname + "</h2>");
}
}
};
web.xml:
<web-app>
<servlet>
<servlet-name>abc</servlet-name>
<servlet-class>Serv1</servlet-class>
<init-param>
<param-name>v1</param-name>
<param-value>10</param-value>
</init-param>
<init-param>
<param-name>v2</param-name>
<param-value>20</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>pqr</servlet-name>
<servlet-class>Serv2</servlet-class>
<init-param>
<param-name>v3</param-name>
<param-value>30</param-value>
</init-param>
<init-param>
<param-name>v4</param-name>
<param-value>40</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>abc</servlet-name>
<url-pattern>/firstserv</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>pqr</servlet-name>
<url-pattern>/secondserv</url-pattern>
</servlet-mapping>
</web-app>
开发一个快速的servlet,应该显示数据库的数据,无论驱动程序名称,表名称和DSN名称如何?
回答:
dbserv.java.
:
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import java.io.*;
public class DbServ extends HttpServlet {
ServletConfig sc = null;
public void init(ServletConfig sc) throws ServletException {
super.init(sc);
this.sc = sc;
}
public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter pw = res.getWriter();
String dname = sc.getInitParameter("dname");
String url = sc.getInitParameter("url");
String tab = sc.getInitParameter("tab");
try {
Class.forName(dname);
Connection con = DriverManager.getConnection(url, "scott", "tiger");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select * from " + tab);
while (rs.next()) {
pw.println("<h2>" + rs.getString(1) + "" + rs.getString(2) + "" + rs.getString(3) + "</h2>");
}
con.close();
} catch (Exception e) {
res.sendError(503, "PROBLEM IN DATABASE...");
}
}
};
web.xml:
<web-app>
<servlet>
<servlet-name>abc</servlet-name>
<servlet-class>DbServ</servlet-class>
<init-param>
<param-name>dname</param-name>
<param-value>oracle.jdbc.driver.OracleDriver ()</param-value>
</init-param>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:oracle:thin:@localhost:1521:Hanuman</param-value>
</init-param>
<init-param>
<param-name>tab</param-name>
<param-value>emp</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>abc</servlet-name>
<url-pattern>/dbdata</url-pattern>
</servlet-mapping>
</web-app>
日期:2020-04-11 23:04:22 来源:oir作者:oir
