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/下的,,做一下修改就行了.
相关文章推荐
- 快速换源更新到Ubuntu 15.04的方法
- UIView的alpha、hidden和opaque属性之间的关系和区别
- P168 实战练习(权限修饰符)
- 调整数组顺序使奇数位于偶数前面Java
- Android Intent.FLAG_NEW_TASK详解,包括其他的标记的一些解释
- 软件工程第一个程序:像阿超那样,花20分钟写一个能自动生成小学四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算。...
- 和OpenCV1的互通性
- p,*p,&p的区别
- [LeetCode]13. Roman to Integer
- Linux ftp安装
- 43. Multiply Strings 字符串表示的大数乘法
- HDU 5636 Shortest Path 分治+搜索剪枝
- 软件工程第一个程序:像阿超那样,花20分钟写一个能自动生成小学四则运算题目的 “软件”,要求:除了整数以外,还要支持真分数的四则运算。
- MyBatis generator 的使用
- leetcode:Container With Most Water 【Java】
- 修改属性
- 学习进度条(1-3周)
- SPRING IN ACTION 第4版笔记-第七章Advanced Spring MVC-005- 异常处理@ResponseStatus、@ExceptionHandler、@ControllerAdvice
- 《构建之法》阅读笔记01-快速阅读后的几个问题。
- Java 回顾笔记_包