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