Servlet的ServletContext和ServletConfig

Servlet的ServletContext和ServletConfig

1.ServletContext的使用

参考网址: https://mp.weixin.qq.com/s?__biz=MzI4Njg5MDA5NA==&mid=2247484755&idx=4&sn=01aa36130bc5b2d5ff5b9f67375d9ac5&chksm=ebd74452dca0cd447ed0845e12746e4c8828ec858ce24db0cd890c7e2fc95f8569f729e1fb36&scene=21#wechat_redirect

1.1ServletContext的作用

  • 什么是ServletContext对象?

当Tomcat启动的时候,就会创建一个ServletContext对象。它代表着当前web站点

  • ServletContext有什么用?
  1. ServletContext既然代表着当前web站点,那么所有Servlet都共享着一个ServletContext对象,所以Servlet之间可以通过ServletContext实现通讯
  2. ServletConfig获取的是配置的是单个Servlet的参数信息,ServletContext可以获取的是配置整个web站点的参数信息
  3. 利用ServletContext读取web站点的资源文件
  4. 实现Servlet的转发【用ServletContext转发不多,主要用request转发】
  • ServletContext对象可以被称之为域对象

1.2获取ServletContext的方法

1.在javax.servlet.Filter中直接获取 

   ServletContext context = filterConfig.getServletContext(); 

2.在HttpServlet中直接获取 

   this.getServletContext()

 3.在其他方法中,通过ServeltRequest、HttpServletRequest获得 

   request.getServletContext(); 
   request.getSession().getServletContext(); 

1.3 ServletContext在springmvc的使用

setAttribute()方法:在ServletContext设置值

/**
	 * 测试ServletContext对象的设置值
	 */
	@RequestMapping("/servletcontext")
	@ResponseBody
	public Msg  testServlettext (HttpServletRequest request , HttpServletResponse response) {
		ServletContext servletContext = request.getSession().getServletContext();
		servletContext.setAttribute("name", "我是name的值");
		return Msg.success().add("name的值", "我是name的值");
		
	}

getAttribute()方法:获取ServletContext的值

/**
	 * 测试ServletContext对象的设置值
	 */
	@RequestMapping("/getservletcontext")
	@ResponseBody
	public Msg  testGetServlettext (HttpServletRequest request , HttpServletResponse response) {
		ServletContext servletContext = request.getSession().getServletContext();
		Object attribute = servletContext.getAttribute("name");
		return Msg.success().add("name的值", "得到的值为: "+attribute);
		
	}

1.4 ServletContext在HttpServlet中的使用

  • web.xml文件支持**对整个站点进行配置参数信息

<context-param>
<param-name>name</param-name>        
<param-value>zhongfucheng</param-value> 
</context-param>
  • 在Servlet获取
package com.shaoming.servlet;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 
 */
public class ServletContextServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// >>处理POST请求参数乱码
		request.setCharacterEncoding("utf-8");
		// >>处理响应正文乱码
		response.setContentType("text/html;charset=utf-8");
		// TODO...
		// 获取到ServletContext对象
		ServletContext servletContext = this.getServletContext();
		//设置值
		servletContext.setAttribute("myname", "mynamevaluemyname的值");
		// 通过名称获取值
		String value = servletContext.getInitParameter("name");
		System.out.println(value);

	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}
}
package com.shaoming.servlet;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 
 */
public class ServletContextServlet2 extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// >>处理POST请求参数乱码
		request.setCharacterEncoding("utf-8");
		// >>处理响应正文乱码
		response.setContentType("text/html;charset=utf-8");
		// 获取到ServletContext对象
		ServletContext servletContext = this.getServletContext();
		// 通过名称获取值
		String value = servletContext.getInitParameter("name");
		String value2 = (String) servletContext.getAttribute("myname");
		System.out.println(value);
		System.out.println(value2);

	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}
}

说明:

ServletContext域对象的k-v可以在web.xml设置

也可以在HttpServlet里面进行设置

2.ServletConfig的使用

2.1在web.xml里面设置值

<servlet>
    <description></description>
    <display-name>ServletConfigServlet</display-name>
    <servlet-name>ServletConfigServlet</servlet-name>
    <servlet-class>com.shaoming.servlet.ServletConfigServlet</servlet-class>
    <init-param>
    <param-name>configdata</param-name>
    <param-value>我是ServletConfig设置的参数</param-value>
    </init-param>
  </servlet>

说明:

ServletConfig是当前Servlet的配置信息

从web.xml可以看出,参数只是属于这个Servlet

2.2 ServletConfig在HttpServlet的使用

package com.shaoming.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * ServletConfig设置参数 它只是属于这个servlet,不能同时使用
 */
public class ServletConfigServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// >>处理POST请求参数乱码
		request.setCharacterEncoding("utf-8");
		// >>处理响应正文乱码
		response.setContentType("text/html;charset=utf-8");
		// TODO...
		ServletConfig servletConfig = this.getServletConfig();
		String initParameter = servletConfig.getInitParameter("configdata");
		PrintWriter out = response.getWriter();
		out.write(initParameter);

	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}
}

说明;

获取参数值的方法是 getInitParameter(xxx);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值