Servlet技术基础

Servlet技术

什么是Servlet

1·他是JavaEE规范之一,规范就是接口。
2·是javaweb三大组件之一。三大组件分别是Servlet程序、Fliter过滤器、Listener监听器。
3·是运行在服务器 上的一个Java小程序。可以接收客户端发送过来的请求,并响应给客户端。

手动实现Servlet程序

1.编写一个类去实现Servlet接口
2.实现service方法,处理请求并响应数据
3.到web.xml中去配置Servlet程序

    <!--servlet标签给Tomcat配置servlet程序-->
    <servlet>
        <!--servlet-name标签是为servlet程序起一个别名(一般是类名) -->
        <servlet-name>HelloServlet</servlet-name>
        <!--servlet-class是servlet程序的全类名-->
        <servlet-class>com.duanjiao.servlet.HelloServlet</servlet-class>
    </servlet>

    <!--servlet-mapping标签给servlet程序配置一个访问地址-->
    <servlet-mapping>
        <!--servlet-name标签是告诉服务器我当前配置的地址给哪一个servlet程序使用 -->
        <servlet-name>HelloServlet</servlet-name>
        <!--url-pattern标签配置访问地址 <br/>
            /        斜杠在服务器解析的时候,表示地址为http://ip:port/工程路径  <br/>
            /hello   表示地址为http://ip:port/工程路径/hello                   <br/>
        -->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>

Servlet程序常见错误

约定大于配置!!!
常见错误1:url-pattern配置的地址必须以斜杠开头!!!
常见错误2:servlet-name两个必须相同!!!
在这里插入图片描述

常见错误3:servlet-class标签配置全类名配置错误
在这里插入图片描述

url地址到Servlet程序的访问

在这里插入图片描述

Servlet 生命周期

1.执行servlet构造器方法
2.执行init()初始化方法
第一二步是在第一次访问的时候创建Servlet程序会调用。
3.执行service方法来处理客户端的请求。
第三步每次访问都会调用
4.执行destory销毁方法
第四步在web工程停止的时候才会执行调用

Servlet请求的分发处理

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("3.service === Hello Servlet被访问了!");
        //类型转换(因为它有getmethod()方法)
        HttpServletRequest httpservletRequest = (HttpServletRequest) servletRequest;
        //获取请求的方式
        String method = httpservletRequest.getMethod();
       // System.out.println(method);
        if ("GET".equals(method)){
            doGet();
        }else if ("POST".equals(method)){
            doPost();
        }

    }

    /*
    做get请求的操作
     */
    public void doGet(){
        System.out.println("get请求");
        System.out.println("get请求");
    }

    /*
    做post请求的操作
     */
    public void doPost(){
        System.out.println("post请求");
        System.out.println("post请求");
    }

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

通过继承HttpServlet类实现Servlet程序

一般在实际项目开发中,都是使用继承HttpServlet类实现Servlet程序。
1.编写一个类去继承HttpServlet类;
2.根据业务需要重写doget或doPost方法;
3.到web.xml中配置Servlet程序的访问地址。

public class HelloServlet2 extends HttpServlet{
    /**
     * doGet() 在get请求的时候调用
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("HelloServlet2的doGet方法");
    }

    /**doPost()在post请求的时候调用
     *
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("HelloServlet2的doPost方法");
    }
}

web.xml中添加

    <servlet>
        <servlet-name>HelloServlet2</servlet-name>
        <servlet-class>com.duanjiao.servlet.HelloServlet2</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet2</servlet-name>
        <url-pattern>/hello2</url-pattern>
    </servlet-mapping>

使用IDEA菜单创建Servlet程序

在这里插入图片描述
在这里插入图片描述
web.xml中只需要配置

    <servlet-mapping>
        <servlet-name>HelloServlet3</servlet-name>
        <url-pattern>/hello3</url-pattern>
    </servlet-mapping>

类自动生成

public class HelloServlet3 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("HelloServlet3的doGet方法");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("HelloServlet3的doPost方法");
    }
}

Servlet类的继承体系

在这里插入图片描述

  • Servlet接口,只是负责定义Servlet程序的访问。

  • GenericServlet类实现了Servlet接口,做了很多空实现。并持有一个ServletConfig类的引用,并对ServletConfig的使用做一些方法。

  • HttpServlet抽象类实现了service方法,并实现了请求的分发处理
    String method = req.getMethod();

           GET         POST
          doGet()    doPost()      
                  |
         <负责抛出异常,说不支持请求>
    
  • 自定义的servlet程序,我们只需要根据自己的业务需要去重写doGet()或doPost()方法即可。
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值