/* 请求转发有如下几个步骤 1. 配置web.xml文件,配置servlet标签和servlet-map标签 2. 调用HttpServletRequest参数(req)的getParameter方法,获取请求参数名 3. 调用req的setAttribute方法,盖章 4. 调用req的getRequestDispatcher方法,参数是servlet2路径,需要/开头 返回RequestDispatcher对象 5. RequestDispatcher对象实例调用forward方法,传递参数req,resp 6. 此时servlet2处理请求的方法中只需要查看是否有servlet1的章就行了 */
/* ServletContext类的4个作用 1. 获取web.xml中配置的上下文参数context-param 2. 获取当前工程路径,格式:/project path 3. 获取工程部署后在服务器硬盘上的绝对路径 4. 像Map一样存取数据 */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 1. 获取上下文参数context-param ServletContext servletContext = getServletConfig().getServletContext(); String s = servletContext.getInitParameter("computerModel"); // 访问 <project path>/real5即可在控制台打印apple System.out.println(s); // 2. 获取当前工程路径 String contextPath = servletContext.getContextPath(); System.out.println(contextPath); // 3. 获取当前工程绝对路径,磁盘上的绝对路径映射到IDEA代码的web目录下 servletContext.getRealPath("/"); // 4. 像Map一样存取数据 // 这里注意1个点,就当我们工程加载完成后,无论我们在工程下的哪里,都可以得到我们存入的数据,这就是域,ServletContext是域对象 }
/* ServletConfig类3大作用 1. 可以获取Servlet程序别名servlet-name值 servletConfig.getServletName(); 2. 获取初始化参数init-param servletConfig.getInitParameter("paramName"); 3. 获取ServletContext对象 servletConfig.getServletContext(); 4. 注意在init方法中使用 */
相对路径参照当前浏览器地址栏当前路径
下面的第1张图片应该是理想的跳转路径,但是使用了请求转发的时候,
此时浏览器地址栏显示的并不是/a/b/c.html,而是/project/forward请求转发页面,
所以在相对路径工作参照地址栏的时候,就会找不到原来的index.html界面
base标签可以解决这一问题,
base标签可以设置当前页面中所有相对路径工作时,参照哪个路径来进行跳转
base标签是写在head标签里面的,然后一般写在title标签下面
此时忽略掉浏览器地址栏显示什么路径,c.html界面都可以跳转回首页,下面补充一下相对路径和绝对路径的知识点