声明
文章大部分内容转载自公众号(Java3y),如需转载请关注Java3y公众号联系作者 ;本文已经获得转载声明

JavaWeb目录简单介绍

  • bbs目录表示一个web项目
  • bbs下的html、jsp文件可以直接被浏览器访问
  • WEB-INF目录下的资源是不能被浏览器访问的
  • web.xml为该项目的主要配置文件
  • 所有的classes文件放在classes目录下
  • jar包放在lib目录下

Servlet作用

 Servlet其实就是一个遵循Servlet开发的java类。Serlvet是由服务器调用的,运行在服务器端。能够处理浏览器带来HTTP请求,并返回一个响应给浏览器,从而实现浏览器和服务器的交互。

 无论在web中访问什么资源【包括JSP】,都是在访问Servlet。没有手工配置缺省Servlet的时候,你访问静态图片,静态网页,缺省Servlet会在你web站点中寻找该图片或网页,如果有就返回给浏览器,没有就报404错误

Servlet实现

 第一种方法--实现Servlet接口(需重写接口里的方法)

  • init()--初始化
  • destroy()--销毁
  • service()--服务(代码)
  • servletConfig()--Servlet配置
  • getServletInfo()--Servlet信息

 ServletTest.java--Servlet

package servlet.test;
/*导包*/
public class ServletTest implements Servlet{

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public ServletConfig getServletConfig() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public String getServletInfo() {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void init(ServletConfig arg0) throws ServletException {
        // TODO Auto-generated method stub

    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//使用servletResponse对象响应信息给浏览器
        servletResponse.getWriter().write("hello_world");;
    }   
}

 web.xml--Tomcat还要知道浏览器怎么访问这个Servlet。--一个已经注册的Servlet可以被多次映射(对应多个mapping)

  <servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>servlet.test.ServletTest</servlet-class>
        <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/my</url-pattern>
  </servlet-mapping>

/*可以使用hhhhh访问同一个Servlet--多次映射*/
  <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/hhhhh</url-pattern>
  </servlet-mapping>

 load-on-startup--表明这个servlet应该在Web应用程序启动时加载(实例化并调用它的init()),如果该值是一个正整数或0,则容器必须加载并初始化该servlet作为应用程序被部署
 作用:

  • 1.为web应用写一个InitServlet,这个servlet配置为启动时装载,为整个web应用创建必要的数据库表和数据
  • 2.完成一些定时的任务【定时写日志,定时备份数据】

 第二种方法--继承HttpServlet类(只需重写需要的方法)

 HttpServlet类已经实现了Servlet接口的所有方法,编写Servlet时,只需要继承HttpServlet,重写你需要的方法即可()一般只需重写doGet()和doPost()方法即可

public class ServletTest2 extends HttpServlet{
    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        resp.getWriter().write("hello");
    }

}

Servlet的生命周期

  • 1.加载Servlet.tomcat第一次访问Servlet的时候,tomcat会负责创建Servlet实例
  • 2.初始化.当Servlet实例化后,Tomcat会调用init()方法初始化这个对象
  • 3.处理服务.浏览器访问Servlet时,Servlet会调用service()方法处理请求
  • 4.销毁.Tomcat关闭或者改Servlet要从Tomcat中删除时会自动调用destroy()方法.让该实例释放掉所占的资源.一个Servlet长时间不使用也会被自动销毁
  • 5.卸载.当Servlet调用完destroy()方法后,等待垃圾回收.如果需要再次使用这个Servletm会重新调用init()方法进行初始化