ServletContext与ServletConfig,转发与重定向

ServletContext与ServletConfig

ServletContext

  • 整个JavaWeb工程可以用一个对象表示,这个对象就是ServletContext

ServletConfig

  • 我们在web.xml中给某一个Servler配置一些配置信息,当服务器被启动的时候,这些配置信息就会被封装到某一个ServletConfig对象中去,因此ServletConfig表示的某一个Servlrt的配置文件

首先在eclipse中创建一个默认的Servlet文件

ServletContext与ServletConfig,转发与重定向

这个表示的就是Servlet对外访问的虚拟路径

package com.kilig.servlet;

import java.io.IOException;

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

@WebServlet("/Demo1Servelt")

public class Demo1Servelt extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
//		获取代表某一个JavaWeb工程的ServletContext对象
//		Context对象是一个域对象,可以往某一个域对象中存放数据,并且还可以取出存放的数据
		ServletContext context =this.getServletContext();
//		在context中存放数据
		context.setAttribute("username", "张三");
//		取出数据
		Object result =context.getAttribute("username");
//		打印输出结果
		System.out.println(result);
		
	}

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

}

ServletContext与ServletConfig,转发与重定向

 此外,在同一个工程目录下的其他Servlet的文件也可以获取Context中定义的数据

ServletContext与ServletConfig,转发与重定向

package com.kilig.servlet;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet("/Demo2Servlet")
public class Demo2Servlet extends HttpServlet {
	
  
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//		获取ServletConfig对象
		ServletConfig sc =this.getServletConfig();
//		获取sc对象中的参数信息
		String encoding =sc.getInitParameter("encoding");
		System.out.println(encoding);	
	}

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

}

转发与重定向

  • 实现转发调用的是HttpServletRequest对象中的方法,实现重定向调用的是HttpServletResponse对象中的方法
  • 转发时浏览器的url地址栏不会发生改变,重定向时浏览器中的url地址会发生改变
  • 转发时浏览器只请求一次服务器,重定向时浏览器请求两次服务器

 

 

 

 

 

 

 

 

 

 

 

 

上一篇:HttpServletResponse类的介绍和使用+解决响应传递给客户端数据的中文乱码问题


下一篇:自定义拦截器