今天复习了一下servlet的相关知识,稍微捡了捡东西。(为什么选牛客网呢,因为绿色好看呀)
1.jsp设置绝对路径的方法
图片说明
图片说明
图片说明
开始总结
(1)request.getContextPath()返回/项目名
(2)./是返回上一级,这儿为什么要返回上一级,因为当前访问的是index.jsp,该项在webapp下面,而此时img文件与index.jsp同级,所以要先返回webapp级,再向下找img级,再找到里面的图片,这儿都是用的相对路径
(3)绝对路径的话,前面设置成项目名后,相当于在webapp级,此时后面直接跟存放图片的文件夹即可
/sixthMarch 与 <%=path%>等价,一个意思
补充(4)标签中的链接不做method类型设置默认get请求,所以点了链接以后会出现11111111而不是222222222222
2.servlet的生命周期

package com.jd.sevlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    //servlet对象属于单实例(程序运行结束之前),缓存中只有一个对象存在
    public TestServlet() {//用于为成员变量赋值,会触发对象创建;默认情况下,第一次使用servlet时创建该对象;如果在web.xml加上<load-on-startup>1</load-on-startup>,则servlet随着tomcat的启动而创建
        System.out.println("Servlet"+this);

    }

    @Override
    public void init() throws ServletException {//servlet对象创建后,该方法立即执行,由于servlet对象是单例,仅创建一次,所以该方法只执行一次
        super.init();
        System.out.println("init"+this);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("doget"+this);
    }

        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("dopost"+this);
    }

        //任何请求先到达service——进而,通过该方法确定执行doget还是dopost
    @Override
    protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException{
        // TODO Auto-generated method stub
        super.service(arg0, arg1);//如果改行方法被注释掉,则不会执行doget也不会执行dopost
        System.out.println("service"+this);
    }

        @Override
    public void destroy() {//servlet对象被销毁之前调用,用于释放资源,由于servlet对象是单例,仅创建一次,所以该方法只执行一次;tomcat关闭前调用(相当于重新发布tomcat)
        super.destroy();
        System.out.println("destroy"+this);
    }

}

图片说明
这儿重写了init方法和destroy方法,来复习一下重写的概念:重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
原来的init方法:

 @Override
    public void init() throws ServletException {
        super.init();
    }

补充:
图片说明
图片说明
图片说明
图中<context-param></<context-param>>中是可在多个servlet中使用的,而中的则只能在当前servlet中使用</context-param></context-param>