===========================
ServletConfig
我们发布东西给别人,有一个地方是一个数值,我们每个人使用的时候
根据情况而定数值不一样,那我们就可以通过ServletConfig来判断数值
还有就是约束作用,假如别人发了一个jar包给我,需要我们在xml里写东西
那么他的包里的代码就可以判断xml的某一个元素是不是等于null,等于null就代表xml有些东西没写,就可以提示出错
这些servlet的类都是在j2ee里的,可以去那里找api文档
在web.xml里这样写
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.servlet.MyServlet</servlet-class>
<!-- 填写参数 -->
<init-param>
<!-- 参数名和参数数值 -->
<param-name>address</param-name>
<param-value>天庭</param-value>
</init-param>
<init-param>
<param-name>name</param-name>
<param-value>地府</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/a</url-pattern>
</servlet-mapping>
在servlet里获取参数
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
System.out.println("进入了doGet");
// 得到servlet的配置对象
// HttpServlet的父类便是GenericServlet,所以可以直接调用这个方法,或者加个super
ServletConfig config1 = super.getServletConfig();
//可以用来获取servlet的名字,这个名字是我们web.xml配置的servlet-name,不是类名
String servletName = config1.getServletName();
System.out.println(servletName);
// 这个就是获取参数的数值 ,在init-param里面写了
String address1 = config1.getInitParameter("address");
System.out.println("address=" + address1);
System.out.println("===========================");
// 获取所有参数名称
Enumeration<String> ele1 = config1.getInitParameterNames();
while (ele1.hasMoreElements())
{
String string = (String) ele1.nextElement();
System.out.println(string + " " + config1.getInitParameter(string));
}
}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
doGet(req, resp);
}
ServletContext
Context这里是上下文的意思
每个web应用程序每个java虚拟机都只有一个context对象
ServletContext也可以拿参数,拿的是全局的参数
web.xml里就不能写init-parm了,而是写context-parm
且context-parm需要写在servlet外面,而init-parm是写在里面的
<context-param>
<param-name>address</param-name>
<param-value>格蓝迪</param-value>
</context-param>
如果参数名冲突了,那么会使用servlet里面的参数
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
System.out.println("来了一个请求");
//获取全局唯一的对象
ServletContext servText=super.getServletContext();
//获取全局的参数
String param=servText.getInitParameter("address");
System.out.println(param);
}