Java Servlet学习笔记!

Srevlet是什么?

Servlet是基于Java技术的Web组件,由容器管理并产生动态的内容。Servlet引擎作为WEB服务器的扩展提供支持Servlet的功能。Servlet与客户端通过Servlet容器实现的请求/响应模型进行交互。

Servlet的作用:

当我们在使用一个交互式 的Web站点的时候,我们所浏览到的所有内容都应该是在浏览器中显示的。在这些场景背后,都会有一个Web服务器接收会话中来自于我们的请求,其中可能要切换到其他代码来处理该请求和访问数据,并生成在浏览器中显示的结果。

Servlet生命周期:

在这里插入图片描述

请求的分发处理:

在通过浏览器访问服务器的时候,会有两种请求方式,Get和Post,不同的请求方式会有不同的处理动作,这就需要我们对于两种请求有对应的处理请求的方法。如果是实现的Servlet接口,我们就需要对发来的请求进行判断。
在这里插入图片描述
实际上,在我们实际的开发过程中,经常是继承HttpServlet,然后重写HttpServlet中的doGet或者doPost方法来处理不同的请求。
在这里插入图片描述

Servlet类的继承体系是什么

这里附上一张图来表示Servlet类的继承体系
在这里插入图片描述

Servlet中的ServletConfig类

ServletConfig:Servlet程序的配置信息表,每个ServletConfig中的数据是不共享的,就是说你在第一个Servlet程序中ServletConfig中的数据,不能在第二个程序中的ServletConfig中获取。

  • 可以获取servlet-name:
    在这里插入图片描述

  • 获取初始化参数init-param(键值对) : servletConfig.getInitParameter(key),返回一个value

  • 获取servletContext对象: servletConfig.getServletContext()

servletContext类

servletContext是一个接口,表示servlet上下文对象,一个web工程只有一个servletContext对象实例,是一个域对象

在这里插入图片描述
具体使用:
在这里插入图片描述

请求与响应

请求是客户端向服务器发送访问请求,响应是服务器向客户端反馈信息。
在这里插入图片描述

HttpServletRequest类:

这里只写上几个常用的方法:
在这里插入图片描述

请求转发 请求重定向 请求包含的特点与区别

请求转发:外包出去,做中间商

@WebServlet("/forward01")
public class RequestForward_01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().write("第一个程序返回的话会不会在浏览器上显示");
        req.getRequestDispatcher("/forward02").forward(req,resp);
    }
}
@WebServlet("/forward02")
public class RequsetForward_02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().write("第二个程序返回的话会不会在浏览器上显示,或者说任务已经完成");
    }
}

在这里插入图片描述
很明显,只有第二个程序返回的内容显示在页面上了,并且地址栏不会发生改变

请求重定向:自己不做,交给别人做

@WebServlet("/redirect01")
public class ServletRedirect01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().write("第一个程序返回的话会不会在浏览器上显示");
        //请求重定向要给客户端响应一个状态和新的地址,setStatue(),setHeader(),或者setRedirect();
        resp.sendRedirect("./redirect02");
    }
}
@WebServlet("/redirect02")
public class ServletRedirect02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置服务器与客户端的字符集
        resp.setContentType("text/html; charset=UTF-8");
        resp.getWriter().write("第二个程序返回的话会不会在浏览器上显示,或者说任务已经完成");
        resp.getWriter().write("欢迎访问次页面");
    }
}

在这里插入图片描述
地址栏会发生改变

请求包含:一个人做一部分,另一个人做另一部分,合力完成

@WebServlet("/forward01")
public class RequestForward_01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().println("第一个程序返回的话会不会在浏览器上显示");
        req.getRequestDispatcher("/forward02").include(req,resp);
    }
}
@WebServlet("/forward02")
public class RequsetForward_02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=UTF-8");
        resp.getWriter().write("第二个程序返回的话会不会在浏览器上显示,或者说任务已经完成");
    }
}

在这里插入图片描述
这里两个程序的内容都显示在了页面上,但是地址栏没有发生改变
总结:(这里直接附上从网上找的图)
请求重定向:
在这里插入图片描述
请求转发:
在这里插入图片描述
请求包含:
在这里插入图片描述
在这里插入图片描述
到这里就是我对Servlet过程的学习,后面应该还会进行补充吧。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值