JavaWeb中的Servlet

1.Servlet是什么

Servlet 是Java Web 三大组件之一,它属于动态资源,Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要 1.接收数据请求。2.处理请求。3.完成响应。 例如客户端发出登录请求,或者输入注册请求,这些请求都应该由Servlet来完成处理。当然Servlet类需要我们自己来编写。每个Servlet类都必须实现javax.servlet.Servlet接口

2.实现Serlvet的方式

1.实现javax.servlet.Servlet接口。2.继承javax.servlet.GenericServlet类。3.继承javax.servlet.http.HttpServlet类

一般来说我们都选择实现HttpServlet类来完成我们的Servlet.但学习Servlet还是要从javax.servlet.Servlet接口来学起。

2.1实现javax.servlet.Servlet接口

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;

/**
 * Created by ql on 2018/4/6.
 */


import java.io.IOException;

    public interface Servlet {
        /*
        Servlet生命周期方法
        它会在Servlet对象创建之后马上执行,并且只执行一次
        * */
        void init(ServletConfig var1) throws ServletException;
       //该方法用来获取Servlet的配置信息
        ServletConfig getServletConfig();
             /*
               它会被调用多次,每次处理请求都是在调用这个方法
                */
        void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
        //该方法用来获取Serlvet的信息
        String getServletInfo();
    /*
        它会在Servlet销毁之前调用,并且只调用一次。
     */
        void destroy();
    }

其中三个生命周期方法是由服务器调用的,我们是无法调用的。

2.2继承HttpServlet类

HttpServlet类使我们永达送次数最多的也是最简单的。由类名可知,与http有关。


方法中,值得我们关注的是doGet()和doPost()。还有两个service()方法.其中doGet()和doPost()方法是需要我们来重写的。

uml如下:


图中405的含义是说服务器不支持客户端(即浏览器)用此种方法访问,因为HttpServlet类的源码中doGet()和doPost()方法体里面就是这样写的,你在定义的xxxservlet中如果不重新重写这两个方法就会出现405的状态吗。在实现中,常以一下形式


FServlet即为我们自己定义的servlet类,doGet()和doPost()方法中即可写相应的业务逻辑。

扩展:对ServletContext的解释

服务器会为每个应用创建一个ServletContext 对象,一个应用只有一个ServletContext对象!我们可以再N多个Servlet中来获取这个唯一对象,使用它可以给多个Servlet传递数据。此对象在Tomcat(服务器)启动时就创建,在服务器关闭时就销毁。

ServletContext是JavaWeb四大域对象(PageContext,ServletRequest,HttpSession,ServletContext)之一,域对象所具有的特点是:1.能够存数据。2能够取数据

所有的域对象都有存取数据的功能,因为域对象内部有一个Map,用来存储数据,下面是ServletContext对象用来操作数据的方法:



Servlet类三大域:

1.request:在Servlet中直接用,因为实现的doPost()方法中有request这个参数

2.session:在Servlet中通过HttpSession session=request.getSession();得到

3.application:在Servlet中通过ServletContext application=this.getServletContext();得到。

JSP中四大域

1.page域:即9大内置对象中的pageContext,为PageContext的实例。注意:“page域”不同于9大内置对象中“page”。

2.request域:即9大内置对象中的request,为HttpServletRequest的实例。

3.session域:即9大内置对象中的session,为HttpSession的实例。

4.application:即9大内置对象中的ServletContext的实例。

如上几种方式便可实现我们自定义的Servlet类。但实际开发中我们只需要使用继承HttpServlet类完成我们的自定义xxxServlet

(另外学了SSM框架中的Spring MVC 框架后,就用不着我们再这样实现Servlet 了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值