servlet学习总结三

servletConfig和servletContext的区别:

servletContext 是服务器启动的时候会给每一个工程创建一个唯一的servletContext实例,是web.xml 在内存的体现和web工程一一对应。

servletConfig 则是保存着每一个servlet的配置信息,每一个servlet都有一个自己的servletConfig。

web.xml文件

<!-- Spring和mybatis的配置文件 -->  
    <context-param>  
        <param-name>contextConfigLocation</param-name>  
        <param-value>classpath:spring-mybatis.xml</param-value>  
    </context-param>
    
    <context-param>
    	<param-name>name</param-name>
    	<param-value>xiaowang</param-value>
    </context-param>
  	
  	<servlet>
  		<servlet-name>servletTest1</servlet-name>
		<servlet-class>demo.com.cn.ssm.servlet.ServletTest1</servlet-class>  
		<init-param>
			<param-name>username</param-name>
			<param-value>zx</param-value>
		</init-param>
		<init-param>
			<param-name>password</param-name>
			<param-value>123456</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
  	</servlet>
  	<servlet-mapping>
  		<servlet-name>servletTest1</servlet-name>
  		<url-pattern>/servletTest1</url-pattern>
  	</servlet-mapping>

Servlet

public class ServletTest1 extends HttpServlet{

	/**  */
	private static final long serialVersionUID = 1306369213240944622L;
	
	private ServletConfig servletConfig;
	
	@Override
	public void init(ServletConfig servletConfig) throws ServletException {
		System.out.println("初始化 servlet实例");
		this.servletConfig = servletConfig;
	}
	
	@Override
	public void service(HttpServletRequest req,HttpServletResponse rsp) {
		rsp.setCharacterEncoding("UTF-8");
		rsp.setHeader("content-type","text/html;charset=UTF-8");
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		String date = sdf.format(new Date());
		PrintWriter writer = null;
		try {
			writer = rsp.getWriter();
		} catch (IOException e) {
			e.printStackTrace();
		}
		writer.println("当前日期为:"+date);
		writer.println("<hr/>");
		String userName = servletConfig.getInitParameter("username");
		String passWord = servletConfig.getInitParameter("password");
		writer.println("servletConfig initParam: userName["+userName+"] password["+passWord+"]");
		writer.println("<hr/>");
		ServletContext servletContext = servletConfig.getServletContext();
		String name = servletContext.getInitParameter("name");
		String contextConfigLocation = servletContext.getInitParameter("contextConfigLocation");
		System.out.println(contextConfigLocation);
		writer.println("servletContext : name["+name+"]");
		writer.println("<br/>");
		writer.println("contextConfigLocation : contextConfigLocation["+contextConfigLocation+"]");
		writer.flush();
		writer.close();
	}
	
	@Override
	public void doGet(HttpServletRequest req,HttpServletResponse rsp) throws ServletException, IOException{
		System.out.println("doGet ~~~");
		PrintWriter writer = rsp.getWriter();
		writer.println("hello");
		writer.flush();
		writer.close();
	}
	
	@Override
	public void destroy() {
		System.out.println("销毁 servlet实例");
	}
}
当servlet配置了初始化参数的时候,web容器会在servlet初始化的时候将配置封装在servletConfig中并在作为参数传入init方法,我们需要在init方法中接受并赋值,servletConfig可以接受局部参数也就是servlet标签内的,servletContext可以接受servlet标签之外的配置参数。

servletContext 是一个作用域对象,它的生命周期是整个容器的生命周期。




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值