今天复习了一下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>