在Servlet技术的学习过程中,需要用到很多的常用对象,而且其用法也非常重要,这里先介绍第一个常用对象,ServletConfig。
概述 1. 在Servlet的配置文件中,可以使用一个或多个这里创建项目的过程不再赘述,之后新建包文件,通过class的方式创建Servlet
这里重写带参数的init方法
package com.servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
public class Servlet1 extends HttpServlet {
public Servlet1() {
// TODO Auto-generated constructor stub
}
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
}
接着对Servlet在web.xml文件中进行注册
Day03Jsp index.html index.htm index.jsp default.html default.htm default.jsp Servlet1 com.servlet.Servlet1 Servlet1 /Servlet1
在
hote 酒店
将以上格式代码添加至
Servlet1 com.servlet.Servlet1 hote 酒店
如果需要添加多个静态数据,只要按照这种格式继续加即可:
Servlet1 com.servlet.Servlet1 hote 酒店 money 1000万
那么在Servlet1中通过ServletConfig对象获得Web.xml中的静态数据
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
String a=config.getInitParameter("hote");
String b=config.getInitParameter("money");
System.out.println(a+"---"+b);
}
将项目运行在tomcat服务器上,根据Servlet虚拟地址进行访问Servlet1,在控制台可以看到从web.xml文件中获得的静态数据。这里效果就不展示了,初学者请根据代码自行运行查看效果。
那么当存在大量的静态数据的时候,只是采用getInitParameter(name)方法来一个个获取的话那明显效率太慢了,接下里我们看另一个方法,获得所有静态数据的name,再根据循环遍历根据name获得所有的静态数据。代码如下:
//当存在非常多的静态数据,就不能在使用以上方式一个一个获取 //应该进行循环获取 //获得所有静态数据的名称,获取的所有静态数据的名称存储在枚举类型 Enumeratione= config.getInitParameterNames(); while (e.hasMoreElements()) { String name=e.nextElement();//hotel String value=config.getInitParameter(name); System.out.println(name+"####"+value); }
运行的结果这里也不再赘述,初学者可以自行运行,查看结果,同样可以获取所有的静态数据。
2.Java注解创建Servlet类并添加静态数据在Servlet3.0之后,提供了注解的方式进行创建Servlet类以及进行注册,那么添加静态数据同样也对应了Java注解,其编写形式如下:
package com.servlet;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns = "/Servlet2",initParams = {
@WebInitParam(name = "name",value = "李四"),
@WebInitParam(name = "age",value = "20"),
@WebInitParam(name = "sex",value = "男")
})
public class Servlet2 extends HttpServlet {
}
注解的方式注册Servlet以及添加静态数据相比之下会比在Web.xml文件中进行配置会简化,初学者可自行掌握和选择使用。那么ServletConfig对象获取数据是一样的。Servlet中提供了两种init初始化的方法,这次我们重写不带ServletConfig参数的init方法,代码如下:
@Override
public void init() throws ServletException {
super.init();
ServletConfig config=getServletConfig();
String a=config.getInitParameter("name");
String b=config.getInitParameter("age");
String c=config.getInitParameter("sex");
System.out.println(a+"---"+b+"---"+c);
String d=config.getInitParameter("money");
System.out.println(d);
//总结:ServletConfig对象只会获得每一个Servlet自己本身的静态数据,而不能得到其他Servlet定义的静态数据
}
因为init方法不带ServletConfig参数,所以我们可以通过Servlet接口中定义的getServletConfig()方法来获得ServletConfig对象,然后就能根据name获得对应静态数据。并且我们也做了测试,在Servlet2类中尝试获得Servlet1中定义的静态数据,根据运行查看的结果可以看出,是不可能获得的。
因此,我们得到的总结:
ServletConfig对象只会获得每一个Servlet自己本身的静态数据,而不能得到其他Servlet定义的静态数据
本次文章就描述到这里,希望初学者能更好的掌握这部分知识。



