005 ServletConfig、ServletContext

===========================

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);
	}

猜你喜欢

转载自blog.csdn.net/yzj17025693/article/details/82823795