获取servletConfig的对象

获取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