1、servlet 接口 -->实现类 GenericServlet -->子类 HttpServlet
故编写web环境的Servlet类要继承实现http协议的HttpServlet类,而GenericServlet类 和HttpServlet子类中的方法都是可以覆盖的。
2、servlet有两种启动方式,一种是配置loadOnStartup=1值越小越先启动,这样在服务器一启动时,servlet就自动创建,并运行其中的初始化方法init(ServletConfig config)。这里注意ServletConfig,ServletConfig 是 单个Servlet级别的配置环境,而ServletContext是指的是整个应用级别的上下文环境。
二者都可以拿预先配置的参数,一个是单个servlet级别的参数,一个是整个应用级别的参数。例如 config.getInitParameter("variable");
第二是 不配置loadOnStartup,什么时候访问到servlet,什么时候启动servlet
3、GenericServlet类中定义的方法:
getInitParameter(String) 、getInitParameterNames()、getServletConfig()、getServletContext()
所以,实际上,可以直接在Servlet类中的service()或doGet() doPost()方法中,直接调用这些方法,获得相应的量。进一步的解释:
是存在于Servlet初始化Init(ServletConfig config)中的,但是同时也可以在service()等方法中直接通过getServletConfig()获得。
1)获得ServletConfig之后,可以在service()等方法中调用 ServletConfig.getInitParameter(String) ServletConfig.getInitParameterNames() ,ServletConfig.getServletContext()
但是同时也可以在service()等方法中直接通过getInitParameter(String) 、getInitParameterNames()、getServletContext() 获得相应值
2)获得ServletContext之后,可以进一步得到如下
System.out.println(context.getContextPath()); /anno 项目路径
System.out.println(context.getResource("index.jsp")); jndi:/localhost/anno/index.jsp
System.out.println(context.getRealPath("index.jsp")); C:\Java\Tomcat7\webapps\anno\index.jsp 注意,实际上是 实际项目目录+所给文件名
以及转发的 RequestDispatcher rdt = context.getRequestDispatcher("转发路径"); rdt.forward(req,resp); 实现服务器内部转发