Servlet笔记,java开发须知

Java技术,用于处理HTTP请求和生成动态Web内容。Servlet运行在Web服务器中,通常与Java EE应用程序一起使用。

Servlet的核心概念

  1. Servlet容器: Servlet容器(如Apache Tomcat)是Servlet运行的环境,它负责管理Servlet的生命周期,包括创建、初始化、处理请求和销毁等。容器接收客户端的请求,将其封装为HttpServletRequest对象,并将响应封装为HttpServletResponse对象,再将它们传递给对应的Servlet进行处理。

  2. Servlet生命周期

    • 加载和实例化:当Servlet容器启动或收到第一次请求时,会加载Servlet类并创建一个实例。

    • 初始化:容器调用init()方法对Servlet进行初始化。这个方法只会在Servlet实例化后调用一次。

    • 请求处理:每次有请求到达时,Servlet的service()方法被调用,该方法会根据请求的类型(GET、POST等)调用相应的doGet()doPost()等方法。

    • 销毁:当Servlet容器决定销毁Servlet实例时,会调用destroy()方法进行清理工作。这通常是在容器关闭或Servlet被卸载时发生。

  3. 请求和响应对象

    • HttpServletRequest:封装了客户端请求的详细信息,包括请求参数、请求头、请求体等。通过该对象,Servlet可以获取客户端传递的数据。

    • HttpServletResponse:封装了服务器对客户端的响应,包括响应状态码、响应头、响应体等。Servlet通过该对象将处理结果返回给客户端。

  4. Servlet的三大域对象

    • ServletContext(应用域):全局作用域对象,用于存储整个Web应用中所有用户共享的数据。可以通过getServletContext()方法获取。

      • 用途:存储应用初始化参数,跨Servlet共享数据。
    • Session(会话域):用于存储与特定用户会话相关的数据,每个用户对应一个独立的会话。通过request.getSession()方法获取。

      • 用途:保持用户登录状态、存储用户会话信息。
    • ServletRequest(请求域):请求范围内的共享对象,用于存储一次请求内的数据。通过request对象本身可以直接操作。

      • 用途:获取请求参数、请求头信息,转发数据到其他Servlet或JSP。
  5. 转发与重定向

    • 请求转发(Forward):服务器内部的操作,客户端并不知道请求被转发了。转发后的请求和响应对象仍然是同一个,可以在多个Servlet或JSP之间共享数据。转发通过RequestDispatcher.forward()方法实现。适用于同一应用内的页面跳转,数据共享更方便。

      • 原理:服务器内部的资源跳转,URL不变。
    • 请求重定向(Redirect):服务器告诉客户端去请求另一个URL,是一次新的请求,因此请求对象和响应对象会重新创建。重定向后,客户端的浏览器地址(URL)栏会发生变化,数据不能在请求间共享。重定向通过response.sendRedirect()方法实现。适用于跨域或外部资源的跳转,不适合大量数据传递。

      • 原理:服务器告诉客户端重定向到新URL,客户端再发起请求。

Servlet的作用

  1. 处理客户端请求: Servlet是Web应用的核心,负责接收并处理客户端(通常是浏览器)发送的请求。通过Servlet,开发者可以动态生成响应内容,如HTML页面、JSON数据或文件下载等。

  2. 控制业务逻辑: Servlet通常负责处理核心业务逻辑,如处理表单提交、执行数据库查询、调用后端服务等。它在MVC(Model-View-Controller)模式中通常扮演控制器(Controller)的角色。

  3. 管理会话: Servlet能够通过HttpSession对象管理用户的会话状态,如用户登录信息、购物车内容等。它为开发者提供了一个简单的接口来管理与特定用户相关的数据。

  4. 请求转发与重定向: Servlet能够在接收到请求后,决定将请求转发给其他资源(如另一个Servlet或JSP),或者通过重定向将客户端引导到另一个URL。

  5. 过滤器与监听器: Servlet API还包括过滤器(Filter)和监听器(Listener),它们允许开发者在请求到达Servlet之前或响应返回客户端之前,拦截和处理请求/响应,或者监听应用中的事件(如会话创建、销毁等)。

综合实例

  • Servlet中的转发与重定向示例

    • 转发(Forward)

      RequestDispatcher dispatcher = request.getRequestDispatcher(“/newPage.jsp”);
      dispatcher.forward(request, response);

    • 重定向(Redirect)

      response.sendRedirect(“http://www.example.com/newPage.jsp”);

    • 说明:使用转发时,newPage.jsp页面可以访问request中的数据,而重定向则会丢失这些数据,因为是一次新的请求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

胡耀超

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值