servlet大致理解

什么是servlet

  1. 是使用java编写的服务器段的程序,通俗的说是(运行在tomcat中的一个小程序)、

作用

  1. 处理客户端的发送的请求,并将处理完成的请求返回给客户端

工作大致流程

  1. 客户端发送请求到服务器
  2. 服务器接收请求并调用Servlet处理请求
  3. 更具请求内容生成响应内容并传给服务器
  4. 服务器将响应内容返回给客户端

servlet使用方法

  1. servlet是一个接口类,使用它的时候必须直接或者间接实现它
  2. 在编写实现Servlet的Servlet类时,直接实现它。在扩展实现这个这个接口的类时,间接实现它

servlet里面的方法

public interface Servlet {
    /*
    1.servlet中的生命周期从"创建"到"工作"到"销毁"的过程
    2.对应的三个方法init,servce,destory
    */
    
    /*
      作用:<将servlet初始化>
      当servlet第一次被请求时,Servlet容器就会开始调用init()方法来初始化一个Servlet对象出来,
      Servlet容器并传入一个ServletConfig对象进来从而对Servlet对象进行初始化,
      这个方法只会执行一次
    */
    void init(ServletConfig var1) throws ServletException;
    //获取servlet配置方法,这个方法会返回由Servlet容器传给init( )方法的ServletConfig对象
    ServletConfig getServletConfig();
    /*
    作用:<处理请求,并做出响应>
    每当请求Servlet时,Servlet容器就会调用service()方法,
    如果时第一次请求时,会先调用init()方法初始化servlet,然后调用service()方法,
    如果不是第一次请求时,则直接调用service()方法
    */
    void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

    //这个方法会返回Servlet的一段描述,可以返回一段字符串,例如版本号、作者、描述等。
    String getServletInfo();

    /*
    作用:<销毁servlet>
    当要销毁Servlet时,Servlet容器就会调用这个方法,
    在卸载应用程序或者关闭Servlet容器时,就会发生这种情况,一般在这个方法中会写一些清除代码
    */
    void destroy();
}

servlet实现类案例

//实现servelt类
public class DemoServlet implements Servlet {
    private ServletConfig config;
    public void init(ServletConfig servletConfig) throws ServletException {
        this.config = servletConfig; // 保存ServletConfig引用以备后用
        System.out.println("Servlet正在初始化");
        String servletName = servletConfig.getServletName();
        System.out.println("Servlet名称:" + servletName);

        // 通过getInitParameter()方法获取初始化参数
        String paramValue = servletConfig.getInitParameter("xr");
        System.out.println("初始化参数xr的值:" + paramValue);
    }

    public ServletConfig getServletConfig() {
        return null;
    }

    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("Servlet正在处理请求并响应");
    }

    public String getServletInfo() {
        System.out.println("获取servlet信息");
        return null;
    }

    public void destroy() {
        System.out.println("Servlet正在销毁");
    }
}


//web.xml配置DemoServlet
    <servlet>
        <servlet-name>DemoServlet</servlet-name>
        <servlet-class>com.xr.DemoServlet</servlet-class>
        <init-param>
            <param-name>xr</param-name>
            <param-value>dd</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>DemoServlet</servlet-name>
        <url-pattern>/DemoServlet</url-pattern>
    </servlet-mapping>


//启动项目时必须配置Tomcat,因为servlet是基于tomcat服务器的,然后启动后访问本地访问+/DemoServlet

//1.第一次的请求的运行结果(执行了init方法和service方法)
  	Servlet正在初始化
    Servlet名称:DemoServlet
    初始化参数 paramName 的值:dd
    Servlet正在处理请求并响应

//2.刷新页面相当于第二次请求,运行结果(只执行了service方法)
  	Servlet正在处理请求并响应

//3.关闭运行时,结果(只执行了destory方法)
		Servlet正在销毁

servletRequest接口常用的方法(请求接口)

public interface ServletRequest {
  
    int getContentLength();//返回请求主体的字节数
 
    String getContentType();//返回主体的MIME类型
 
    String getParameter(String var1);//返回请求参数的值
    //getParameter是在ServletRequest中最常用的方法
 }

servletResponse接口的方法(响应接口)

public interface ServletResponse {
    String getCharacterEncoding();
 
    String getContentType();
 
    ServletOutputStream getOutputStream() throws IOException;
 
    PrintWriter getWriter() throws IOException;
 
    void setCharacterEncoding(String var1);
 
    void setContentLength(int var1);
 
    void setContentType(String var1);
 
    void setBufferSize(int var1);
 
    int getBufferSize();
 
    void flushBuffer() throws IOException;
 
    void resetBuffer();
 
    boolean isCommitted();
 
    void reset();
 
    void setLocale(Locale var1);
 
    Locale getLocale();
}

servletContext 对象

//下面为servletContext对象的方法
//servletContext相当于一个存储空间,任何东西都可以存到里面,
//可以设置值,获取值,这个值以key,value形式存在
//所有的servlet都可以获取servletContext储存的东西
Object getAttribute(String var1);
 
Enumeration<String> getAttributeNames();
 
void setAttribute(String var1, Object var2);
 
void removeAttribute(String var1);

GenericServlet抽象类

  1. 前面servlet都是通过实现servlet接口来编写的,并且需要重写servlet里面的所有的方法,这样就麻烦了许多,比如我只要用到servlet接口的里面的其中几个方法,但是也要全部重写servlet接口的所有方法,并且还需要自己手动的维护ServletConfig这个对象的引用
  2. 而GenericServlet抽象类就解决了这些问题,你想要里面的哪个方法就重写哪个,并且它已经帮你维护好了ServletConfig方法
  3. GenericServlet抽象类直接实现了Servlet接口,我们要编写servlet类直接继承GenericServlet抽象类 就可以了
  4. 然而,虽然GenricServlet是对Servlet一个很好的加强,但是也不经常用,因为他不像HttpServlet那么高级。

HttpServlet抽象类

  1. HttpServlet之所以运用广泛的另一个原因是现在大部分的应用程序都要与HTTP结合起来使用。这意味着我们可以利用HTTP的特性完成更多更强大的任务。Javax。servlet.http包是Servlet API中的第二个包,其中包含了用于编写Servlet应用程序的类和接口。Javax.servlet.http中的许多类型都覆盖了Javax.servlet中的类型。
  2. HttpServlet抽象类是继承于GenericServlet抽象类而来的。使用HttpServlet抽象类时,还需要借助分别代表Servlet请求和Servlet响应的HttpServletRequest和HttpServletResponse对象。
  3. HTTP请求处理方法HttpServlet定义了一系列方法,用于处理不同类型的HTTP请求,包括doGet()doPost()doPut()doDelete() 等。这些方法可以根据HTTP请求类型来实现,以执行相应的操作。开发人员可以重写这些方法,根据自己的需求来处理HTTP请求。例如,要处理HTTP的GET请求,你可以重写doGet()方法:
javaCopy code
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 处理GET请求的逻辑
}
  1. 发、HTTP请求对象和响应对象HttpServlet方法的参数包括HttpServletRequestHttpServletResponse对象,这些对象提供了有关请求和响应的详细信息。你可以使用这些对象来访问请求参数、处理会话、设置响应头、生成响应内容等。
  2. 初始化和销毁:与通用Servlet一样,HttpServlet也具有init()destroy()方法,用于在Servlet的初始化和销毁时执行相应的操作。
  3. HTTP请求映射:你可以使用web.xml文件来将特定的URL模式映射到HttpServlet。这意味着当客户端发送请求匹配特定URL模式时,相应的HttpServlet将会处理该请求。
  4. 会话管理HttpServlet也支持会话管理,允许你在HTTP会话中存储和获取数据,以维护用户状态。
  5. 重定向和请求转发HttpServlet可以执行重定向和请求转发,使你能够将请求从一个Servlet传递给另一个Servlet,或者将客户端重定向到不同的URL。

总之,HttpServlet是用于处理HTTP请求的基础,它提供了许多方便的方法和功能,用于开发Web应用程序。通过继承HttpServlet并重写适当的方法,你可以实现自定义的HTTP请求处理逻辑,以满足你的Web应用程序需求。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

꧁惜若༒奔已꧂

争取做到更好

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值