zoukankan      html  css  js  c++  java
  • servlet中servletContext的五大作用(一)

    1. 获取web的上下文路径
    2. 获取全局的参数
    3. 作为域对象使用
    4. 请求转发
    5. 读取web项目的资源文件

    package day10.about_servletcontext.get_path;
    /**
     * 首先区别:
     * 一个网站只有一个ServletContext对象
     * 而每一个Servlet都有一个ServletConfig对象
     * 
     * 但是我们拿Context对象的话,其实是通过Config对象去
     * 拿的,因为每一个ServletConfig中都有一个ServletContext
     * 的成员变量;
     * 
     * 其次因为ServletConfig是在ServletContext之前创建的;
     * 因为ServletContext是在启动的时候创建的
     * 而ServletConfig对象是在调用init方法之前创建的。	
     * 	
    	java中获取ServletContext的常见方法
    
    		1.在javax.servlet.Filter中直接获取 
    
    			ServletContext context = config.getServletContext(); 
    
    		2.在HttpServlet中直接获取 
    
    			this.getServletContext() 
    
    		3.在其他方法中,通过HttpRequest获得 
    
    			request.getSession().getServletContext(); 
    
     */
    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;
    /**
     * 【context对象的作用—1】:获取web的上下文路径
     * 		getContextPath();
     * 
     * 
     * @author mzy
     *
     */
    public class ContextDemo01 extends HttpServlet {
    
    	private static final long serialVersionUID = -4556050230938613373L;
    
    	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		request.setCharacterEncoding("utf-8");
    		response.setContentType("text/html;charset=utf-8");
    		// 1.1:首先要获取到ServletContext对象
    		/*
    		 * 这种方法原则上没有错:
    		 * 		因为加载的顺序上是config在context之前
    		 * 		并且context必须通过config对象来获取,
    		 * 		但是java设计者为了简化我们的代码,
    		 * 		在源码中重新写了这部分;
    		 * 
    		 * 		他将
    		 * this.getServletConfig().getServletContext();
    		 * 封装到了源码的 getServletContext()的方法中了;
    		 * 但是我们还是需要记得获取context对象必须要获得
    		 * config对象;
    		 * 
    		 * 获得context对象,必须要通过config对象来获取;
    		 * 
    		 * 以下只是代码的简化而已
    		 * 
    		 */
    		// ServletContext context = this.getServletConfig().getServletContext();
    		ServletContext context = this.getServletContext();
    		String path = context.getContextPath();
    		
    		System.out.println(path);
    		/*
    		 * 以上就是上下文路径:但是需要注意的是,当我们在eclipse或者myeclipse中修改
    		 * 项目名称的时候,我们修改了之后其实它的上下文路径是没有变的;
    		 * 比如我们原来项目叫做 myday09,修改为myday10之后,我们run这个项目下的文件
    		 * 最后跑出来的时候,可以看见项目名依旧是myday09,所以这个时候的context我们
    		 * 需要去tomcat中改文件夹名称,或者:右键项目Properties-->myeclipse-->web
    		 * -->context root 修改
    		 * 
    		 * 当然新版本的myeclipse中没有这种问题,但是老版的myeclipse和eclipse中可能
    		 * 存在这种问题需要注意
    		 */
    		
    		
    		
    		// String path = context.getContextPath(); 获取上下文路径的好处??
    		// 主要表现在做请求重定向的时候
    		response.sendRedirect("/MyFirstServlet/hello.html");
    		
    		// 作用可以让这个获取文件的路径更加的灵活
    		response.sendRedirect(context.getContextPath() + "/hello.html");
    		
    	}
    
    	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		request.setCharacterEncoding("utf-8");
    		response.setContentType("text/html;charset=utf-8");
    		
    		
    	}
    
    }
    

  • 相关阅读:
    2020软件工程作业02
    自我介绍
    Requests的使用
    爬虫基本原理
    2019春总结作业
    十二周作业
    十一周作业
    第十周作业
    intellij idea 的全局搜索快捷键方法
    Oracle多表关联
  • 原文地址:https://www.cnblogs.com/mzywucai/p/11053521.html
Copyright © 2011-2022 走看看