Servlet入门笔记

Servlet:Server applet
    *概念:运行在服务器端的小程序,Servlet就是一个接口,定义了java类被浏览器访问(容器)的规则

    快速入门创建servlet:
        1.创建javaEE项目
        2.定义一个类,实现Servlet接口
        3.实现Servlet的抽象方法


        4.配置Servlet
            在web.xml文件的跟标签<web-app>中配置
         

<servlet>
    <servlet-name>firstServlet</servlet-name>
    <servlet-class>com.xiaoqiang.web.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>firstServlet</servlet-name>
    <url-pattern>firstServlet.do</url-pattern>
</servlet-mapping>
package com.xiaoqiang.web;

import javax.servlet.*;
import java.io.IOException;

/**
 * Servlet:Server applet
 *     *概念:运行在服务器端的小程序,Servlet就是一个接口,定义了java类被浏览器访问(容器)的规则
 *
 *     快速入门:
 *         1.创建javaEE项目
 *         2.定义一个类,实现Servlet接口
 *         3.实现Servlet的抽象方法
 *         4.配置Servlet
 *             在web.xml文件的跟标签<web-app>中配置
 *             <servlet>
 *                 <servlet-name>firstServlet</servlet-name>
 *                 <servlet-class>com.xiaoqiang.web.FirstServlet</servlet-class>
 *             </servlet>
 *             <servlet-mapping>
 *                 <servlet-name>firstServlet</servlet-name>
 *                 <url-pattern>/firstServlet.do</url-pattern>
 *             </servlet-mapping>
 *
 *
 *      servlet的方法:
 *          1.init 初始化方法,在Servlet被创建时执行一次,默认首次访问servlet时,容器会加载servlet,在加载的时候执行init方法。
 *              在servlet标签中,可以使用load-on-startup标签定义servlet创建时机,值为负数访问时创建,值为>=0时启动时创建。
 *
 *              servlet的init方法只执行一次,证明servlet是单例对象,为避免线程安全问题,尽量不要在Servlet中定义成员变量,或修改成员变量的值
 *
 *          2.service 提供服务的方法,每次被访问的时候执行
 *
 *          3.destroy 销毁方法,在服务器正常关闭时执行一次
 *              在servlet销毁前执行,用于销毁资源
 *          4.ServletConfig 获取servlet的配置对象
 *          5.getServletInfo 获取servlet的一些信息,例如版本、作者等
 *
 *      servlet生命周期:
 *          init初始化servlet、service提供处理客户端调用请求 、destroy在服务器正常关闭时销毁servlet
 *
 *  servlet 注解
 *      好处:支持注解配置,可以不需要 web.xml
 *      步骤:
 *          1.创建javaEE项目,选择servlet版本3.0以上
 *          2.定义java类,实现servlet接口
 *          3.复写方法
 *          4.在类上使用@WebServlet注解
 */

//定义servlet请求路径写法1:@WebServlet(urlPatterns = "/TwoServlet")
//定义servlet请求路径写法2:@WebServlet(value = "/TwoServlet")
//定义servlet请求路径写法3:@WebServlet("/TwoServlet")
public class FirstServlet implements Servlet {

    /**
     * init 初始化方法,在Servlet被创建时执行一次
     */
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("init:servlet被加载");
    }

    /**
     * service 提供服务的方法,每次被访问的时候执行
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("service:servlet被调用");
    }

    /**
     * ServletConfig 获取servlet的配置对象
     */
    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    /**
     * getServletInfo 获取servlet的一些信息,例如版本、作者等
     */
    @Override
    public String getServletInfo() {
        return null;
    }

    /**
     * destroy 销毁方法,在服务器正常关闭时执行一次
     */
    @Override
    public void destroy() {
        System.out.println("destroy:servlet被销毁");
    }
}  

    servlet3.0版本:支持注解配置可以不使用 web.xml
        1.创建javaEE项目,使用3.0以上servlet版本,可以不创建servlet
        2.定义实现servlet接口的类
        3.复写抽象方法
        4.在类上使用@WebServlet("资源路径")

        代码示例
       

package com.xiaoqiang.web;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

/**
 * servlet3.0版本:支持注解配置可以不使用 web.xml
 *         1.创建javaEE项目,使用3.0以上servlet版本,可以不创建servlet
 *         2.定义实现servlet接口的类
 *         3.复写抽象方法
 *         4.在类上使用@WebServlet("资源路径")
 */
@WebServlet(urlPatterns = "/twoServlet")//urlPatterns资源路径,注解默认属性可以省略简化为 @WebServlet("/ThreeServlet")
public class TwoServlet implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("Servlet3.0注解配置");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

    servlet的方法:
        1.init 初始化方法,在Servlet被创建时执行一次,默认首次访问servlet时,容器会加载servlet,在加载的时候执行init方法。
            在servlet标签中,可以使用load-on-startup标签定义servlet创建时机,值为负数访问时创建,值为>=0时启动时创建。
            servlet的init方法只执行一次,证明servlet是单例对象,为避免线程安全问题,尽量不要在Servlet中定义成员变量,或修改成员变量的值
        2.service 提供服务的方法,每次被访问的时候执行
        3.destroy 销毁方法,在服务器正常关闭时执行一次,在servlet销毁前执行,用于销毁资源
        4.ServletConfig 获取servlet的配置对象
        5.getServletInfo 获取servlet的一些信息,例如版本、作者等

    servlet生命周期:
        init初始化servlet、service提供处理客户端调用请求 、destroy在服务器正常关闭时销毁servlet

    servlet 继承体系结构
        抽象类 GenericServlet inplements Servlet
        GenericServlet:将Servlet将service方法作为抽象,其他方法空处理,定义servlet可以继承将Servlet将service方法作为抽象实现service接口即可
 
    抽象类 HttpServlet extends GenericServlet
         HttpServlet:对http协议的一种封装,复写 doGet / doPost 方法即可,简化操作
            1.定义类继承 Httpservlet
            2.复写 doGet / doPost 方法
    
    Servlet配置
        1.urlPatterns:Servlet访问路径
            1.一个servlet可以定义多个路径:@WebServlet({"path1","path2","path3"})
            2.路径定义规则
                /XXX 单层访问路径
                /xxx/xxx... 多层访路径
                /* *是通配符,访问优先级最低
                *.do 访问后缀

package com.xiaoqiang.web;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 *servlet 体系结构
 *  service() Servlet提供服务的方法,每次被访问的时候执行
 *  抽象类 GenericServlet inplements Servlet
 *     GenericServlet:将Servlet将service()方法作为抽象,其他方法空处理,定义servlet类时,可以继承将GenericServlet实现service()方法,在方法中处理不同类型的请求
 *
 *  抽象类 HttpServlet extends GenericServlet
 *      HttpServlet 封装了service接口,将不同类型的http请求分发到对应的处理方法中,我们复写对应的处理方法即可处理请求数据
 *      HttpServlet:对http协议的一种封装,复写 doGet / doPost 方法即可,简化操作
 *          1.定义类继承 Httpservlet
 *          2.复写 doGet / doPost 方法
 *
 *
 */

//public class TwoServlet extends GenericServlet{
//
//    @Override
//    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//        System.out.println("GenericServlet-service");
//    }
//}

@WebServlet("/threeServlet")
public class ThreeServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("HttpServlet:doGet");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("HttpServlet:doPost");
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值