您的位置:首页 > 其它

Servlet初始化参数与上下文初始化参数的获取

2016-03-06 11:16 375 查看


实训 1. 初始化参数和上下文初始化参数训练

(下述步骤根据本机球境作适当修改)

1.实训目标

创建一个Servlet,读取初始化参数和上下文初始化参数,并将这些参数显示在网页上。掌握Servlet读取参数的编程要点和配置步骤。

2.实训场景






3.概念及定义

Servlet初始化参数与上下文初始化参数

Servlet初始化参数:

1. Servlet初始化参数定义在web.xml中的一个servlet元素中,例如:

[html] view
plain copy

<servlet>

<servlet-name>test</servlet-name>

<servlet-class>com.bk.Test</servlet-class>

<init-param>

<param-name>default-time</param-name>

<param-value>60</param-value>

</init-param>

</servlet>

可以有若干个<init-param>对。

2. 怎样取得Servlet初始化参数

可以在Servlet中直接调用getInitParameterr(java.lang.Stringname)方法来读取初始化参数。也可以通过ServletConfig接口的getInitParameter(java.lang.Stringname)方法。getServletConfig()该方法定义在Servlet接口中,返回ServletConfig接口的引用。
所有的servlet都继承了该方法。当容器实例化一个servlet之前,会从web.xml中读取这个servlet的初始化参数,并把这些参数交给ServletConfig然后在调用init()方法时,容器会传送这个ServletConfig的引用到servlet每个servlet都会有一个唯一的ServletConfig引用。一旦有了ServletConfig的引用就可以调用getInitParameter()方法来取得我们在servlet中设置的初始化参数。

上下文初始化参数:

上下文初始化参数与Servlet初始化参数类似,区别是上下文初始化参数对整个web应用而不是Servlet初始化参数只对应一个servlet

在web应用的整个生命周期中上下文初始化参数都存在,任意的servlet和jsp都可以随时随地的访问它。

1. 在web.xml中的配置例子如下:

[html] view
plain copy

<context-param>

<param-name>default-time</param-name>

<param-value>60</param-value>

</context-param>

上下文初始化参数对应于整个web应用,因此它不在某个servlet元素内。一个web应用有一个ServletContext,而一个servlet有一个ServletConfig

2. 怎样取得上下文初始化参数?

servlet的ServletConfig对象拥有该servlet的ServletContext的一个引用,所以可这样取得上下文初始化参数:getServletConfig().getServletContext().getInitParameter()

也可以在servlet中直接调用getServletContext().getInitParameter(),两者是等价的。

4.场景实现演示


4.1配置Tomcat5.5站点

创建Web应用程序servletest


4.2Servlet读取参数研究

InitParamServlet.java完整代码如下:

[java] view
plain copy

packagejsplession;

importjavax.servlet.ServletConfig;

importjavax.servlet.ServletContext;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

import java.io.PrintWriter;

importjava.io.IOException;

publicclass InitParamServlet extends HttpServlet

{

public void doGet(HttpServletRequest req,HttpServletResponse res)

throws IOException,ServletException

{

res.setContentType("text/plain;charset=GBK");

PrintWriter out = res.getWriter();

String url =getInitParameter("URL");

ServletConfig config = getServletConfig();

ServletContext context =getServletContext();

String uid =config.getInitParameter("UID");

String pwd =config.getInitParameter("PWD");

String port =context.getInitParameter("some-port");

out.println("初始化参数和上下文初始化参数如下:");

out.println("URL: " + url);

out.println("UID: " + uid);

out.println("PWD: " + pwd);

out.println("some-port: " +port);

}

}

1. 创建public class InitParamServletextends HttpServlet

2. 重写public void doGet(HttpServletRequest req, HttpServletResponse res)

· 设置响应(response)内容类型,即res.setContentType("text/plain;charset=GBK")

· 获得response的输出流,即PrintWriter out = res.getWriter()

· 获得初始化参数URL,即String url =getInitParameter("URL")

· 获得ServletConfig的引用,即ServletConfig config = getServletConfig()

· 获得ServletContext的引用,即ServletContext context = getServletContext()

· 通过ServletConfig引用获得初始化参数:String uid = config.getInitParameter("UID"); String pwd =config.getInitParameter("PWD")

· 通过ServletContext引用获得上下文初始化参数:String port = context.getInitParameter("some-port")

3. 输出各个参数,如out.println("URL: " + url)

修改web.xml,配置Servlet、初始化参数和上下文初始化参数,web.xml文件内容如下:

[html] view
plain copy

<?xmlversionxmlversion="1.0" encoding="UTF-8"?>

<web-appidweb-appid="WebApp_ID" version="2.4"

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<display-name>servletest</display-name>

<context-param>

<param-name>some-port</param-name>

<param-value>5000</param-value>

</context-param>

<servlet>

<servlet-name>init</servlet-name>

<servlet-class>jsplession.InitParamServlet</servlet-class>

<init-param>

<param-name>URL</param-name>

<param-value>jdbc:mysql://localhost/pizza</param-value>

</init-param>

<init-param>

<param-name>UID</param-name>

<param-value>matt</param-value>

</init-param>

<init-param>

<param-name>PWD</param-name>

<param-value>secret</param-value>

</init-param>

</servlet>

<servlet-mapping>

<servlet-name>init</servlet-name>

<url-pattern>/init</url-pattern>

</servlet-mapping>

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>


4.3部署运行

部署文件编译InitParamServlet.java,把class文件放到WEB-INF\classes\jsplession目录下
启动Tomcat
在IE浏览器的地址栏中输入http://localhost:8080/servletest/init


实训 2. Servlet数据库练习示例

(数据库与数据表根据本机配置环境作适当修改)

[java] view
plain copy

packagecom.jsp.Database;

importjava.sql.*;

importjavax.sql.*;

importjava.io.*;

importjavax.servlet.*;

importjavax.servlet.http.*;

importcom.microsoft.jdbc.sqlserver.SQLServerDriver;

publicclass JDBCServlet extends HttpServlet

{

/* 连接数据库属性*/

Stringdriver;

Stringpassword,url,user;

/*处理doGet */

publicvoid doGet(HttpServletRequest request,HttpServletResponse response)

throwsIOException,ServletException

{

response.setContentType("text/html;charset=gb2312");

PrintWriter out=response.getWriter();

try

{

Connection con=getConnection();

Statement stmt=con.createStatement();

ResultSetrst=stmt.executeQuery("select * from user_info");

while(rst.next())

{

out.println(rst.getString("userid"));

out.println("<br>");

}

rst.close();

stmt.close();

con.close();

}

catch(SQLException e)

{

e.printStackTrace();

}

}

/*处理doPost请求*/

public void doPost(HttpServletRequestrequest,HttpServletResponse response)

throws IOException,ServletException

{

doGet(request,response);

}

publicvoid init()throws ServletException

{

driver=getInitParameter("DRIVER");

password=getInitParameter("PASSWORD");

url=getInitParameter("URL");

user=getInitParameter("USER");

}

privateConnection getConnection()

{

Connection con=null;

try

{

Class.forName(driver);

con=DriverManager.getConnection(url,user,password);

}

catch(Exception e )

{

e.printStackTrace();

}

return con;

}

}

========web.xml文件配置========

[html] view
plain copy

<servlet>

<servlet-name>JDBCServlet</servlet-name>

<servlet-class>com.jsp.Database.JDBCServlet</servlet-class>

<init-param>

<param-name>DRIVER</param-name>

<param-value>com.microsoft.jdbc.sqlserver.SQLServerDriver</param-value>

</init-param>

<init-param>

<param-name>URL</param-name>

<param-value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev</param-value>

</init-param>

<init-param>

<param-name>USER</param-name>

<param-value>sa</param-value>

</init-param>

<init-param>

<param-name>PASSWORD</param-name>

<param-value></param-value>

</init-param>

</servlet>

<servlet-mapping>

<servlet-name>JDBCServlet</servlet-name>

<url-pattern>/init_servlet</url-pattern>

</servlet-mapping>

WEB.XML在你的tomcat/webapp/你的目录/WEB-INF/下..

或者复制tomcat/webapp/ROOT/WEB-INF/下的,,做一下修改就行了.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: