ServletContext 介绍 提供的功能 servlet中获取servletcontext实例 servletcontext接口的方法
package com.fgy; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.util.Enumeration; import java.util.Set; 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(name="servlet",urlPatterns="/servlet",loadOnStartup=1) public class InitParaServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override public void init(ServletConfig config) throws ServletException { ServletContext context=config.getServletContext(); System.out.println(context.getServerInfo()); System.out.println(context.getMajorVersion()); System.out.println(context.getMinorVersion()); System.out.println(context.getServletContextName()); System.out.println(context.getClassLoader()); System.out.println(context.getVirtualServerName()); Enumeration<String> names=context.getInitParameterNames(); while (names.hasMoreElements()) { String name = names.nextElement(); System.out.println(name+":"+context.getInitParameter(name)); } try { URL url=context.getResource("/index.html"); System.out.println(url); } catch (MalformedURLException e) { e.printStackTrace(); } Set<String> paths=context.getResourcePaths("/"); for (String path : paths) { System.out.println(path); } System.out.println(context.getRealPath("/")); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // ServletContext context1=getServletContext(); // ServletContext context2=request.getServletContext(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
请求分派-1 请求分派概述 RequestDispatcher接口 获取实例方法 实例提供的方法 getServletContext().getRequestDispatcher("/index.html"); request.getRequestDispatcher("index.html"); 上面这二者的区别,一个是相对于应用根目录,一个是相对于映射的servlet目录 forward与include方法 package com.fgy; import java.io.IOException; import javax.servlet.RequestDispatcher; 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("/servlet6/test") public class Servlet6 extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // RequestDispatcher rd=getServletContext().getRequestDispatcher("/index.html"); // System.out.println(rd); RequestDispatcher rd=request.getRequestDispatcher("index.html"); rd.forward(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } 请求分派-2 路径中查询字符串中的参数优先级 前台重定向与后台转发的区别 httpservletresponse.sendredirect 浏览器地址栏会发生变化,发两次请求 requestdispatcher.forward 浏览器地址栏不发生变化,发一次请求 数据共享