自学内容网 自学内容网

JSP复习(二)

九大内置对象

在 JSP(JavaServer Pages)中,有九大内置对象,这些对象为开发者提供了常用的功能,帮助简化 JSP 页面中的处理。以下是这九大内置对象:

  1. request:表示客户端请求的对象,可以通过它获取请求参数、请求头等信息。

  2. response:表示服务器响应的对象,可以用来设置响应头、内容类型等。

  3. out:用于向客户端输出内容的对象,可以使用 out.println() 方法输出文本或 HTML。

  4. session:表示当前用户会话的对象,用于存储用户相关的数据,能够在多个页面之间共享。

  5. application:表示整个 Web 应用的上下文对象,用于存储全局共享的数据,所有用户都可以访问。

  6. config:表示 JSP 页面配置的对象,包含了 JSP 的初始化参数和 Servlet 配置。

  7. page:表示当前 JSP 页面自身的对象,通常用于获取当前 JSP 的属性和方法。

  8. pageContext:提供了对其他所有内置对象的访问,并且还可以存储页面范围内的属性,方便使用。

  9. exception:在错误发生时可用的对象,通常在 error-page 指定的处理页面中使用,用于获取异常信息。

这些内置对象使得 JSP 开发更加高效,减少了编写代码的复杂度。

request

代表客户端向服务器发送的请求。它提供了多种方法和属性,使得开发者能够轻松访问 HTTP 请求中的信息。以下是 request 对象的一些常用功能和属性:

常用方法

  1. 获取请求参数

    • getParameter(String name):根据参数名称获取参数值。如 request.getParameter("username")
  2. 获取请求头

    • getHeader(String name):获取指定请求头的值。如 request.getHeader("User-Agent")
  3. 获取请求方法

    • getMethod():返回请求的方法类型(如 GET、POST)。
  4. 获取请求 URI

    • getRequestURI():返回请求的 URI。
  5. 获取请求 URL

    • getRequestURL():返回请求的完整 URL。
  6. 获取查询字符串

    • getQueryString():返回请求的查询字符串部分。

常用属性

  • 请求参数:所有通过 URL 或表单提交的参数都可以通过 request.getParameter() 方法获取。

  • 客户端信息:如 IP 地址可以通过 request.getRemoteAddr() 获取。

  • 上下文路径:可以通过 request.getContextPath() 获取应用的上下文路径。

response

代表服务器向客户端发送的响应。它提供了一些方法和属性,帮助开发者设置响应的状态、内容类型和其他相关信息。以下是 response 对象的一些常用功能和方法:

常用方法

  1. 设置内容类型

    • setContentType(String type):设置响应的 MIME 类型。例如,可以设置为 text/html 或 application/json

    jspCopy Code

    response.setContentType("text/html;charset=UTF-8");
  2. 设置响应头

    • setHeader(String name, String value):添加或修改响应头。

    jspCopy Code

    response.setHeader("Cache-Control", "no-cache");
  3. 设置状态码

    • setStatus(int sc):设置 HTTP 响应状态码,如 200、404、500 等。

    jspCopy Code

    response.setStatus(HttpServletResponse.SC_OK);
  4. 重定向

    • sendRedirect(String location):将客户端重定向到另一个 URL。

    jspCopy Code

    response.sendRedirect("login.jsp");
  5. 获取输出流

    • getWriter():用于获取 PrintWriter 对象,用于向客户端输出数据。

    jspCopy Code

    PrintWriter out = response.getWriter(); out.println("<h1>Hello, World!</h1>");

session

是 JSP 中的一个内置对象,用于管理用户会话的数据。它允许开发者在多个请求之间存储和检索与特定用户相关的信息,这对于实现用户认证、购物车功能等非常有用。

常用方法

  1. 获取会话 ID

    • getId():返回当前会话的唯一标识符。

    jspCopy Code

    String sessionId = session.getId();
  2. 设置会话属性

    • setAttribute(String name, Object value):将对象存储到会话中,以便在后续请求中访问。

    jspCopy Code

    session.setAttribute("username", "JohnDoe");
  3. 获取会话属性

    • getAttribute(String name):根据属性名获取会话中的对象。
    String username = (String) session.getAttribute("username");
  4. 移除会话属性

    • removeAttribute(String name):从会话中移除指定的属性。

    jspCopy Code

    session.removeAttribute("username");
  5. 无效化会话

    • invalidate():使会话失效,清除所有属性。
    session.invalidate();
  6. 检查会话是否新建

    • isNew():判断当前会话是否是新创建的。
    if (session.isNew()) { // 处理新会话的逻辑 }

application

用于访问 Web 应用程序的全局范围内的数据。它允许开发者在不同用户的请求之间共享数据,这对于存储一些全局信息(如应用配置、统计信息等)非常有用。

常用方法

  1. 设置应用程序属性

    • setAttribute(String name, Object value):将对象存储在应用范围内。
    application.setAttribute("appName", "My Web Application");
  2. 获取应用程序属性

    • getAttribute(String name):根据属性名获取应用程序中的对象。
    String appName = (String) application.getAttribute("appName");
  3. 移除应用程序属性

    • removeAttribute(String name):从应用程序中移除指定的属性。
    application.removeAttribute("appName");

区别

session和Application

session创建的对象随着浏览器结束而结束,Application创建的对象随着服务器结束而结束

1. Session 对象

  • 生命周期session 对象的生命周期与用户的会话相关。它在用户打开浏览器并访问 Web 应用程序时创建,通常在以下情况下结束:

    • 用户关闭浏览器。
    • 用户在一段时间内没有与应用程序交互(超时)。
    • 手动使会话失效(使用 session.invalidate() 方法)。
  • 作用范围session 对象用于存储特定用户的状态和数据,如用户登录信息、购物车内容等。这些数据在用户会话期间是可用的,但是一旦会话结束,这些数据也会被清除。

2. Application 对象

  • 生命周期application 对象的生命周期与 Web 应用程序的运行周期相关。它在 Web 应用程序启动时创建,并在应用程序被关闭或重新部署时结束。

  • 作用范围application 对象用于存储全局范围内的数据,这些数据对于所有用户都是共享的。例如,应用程序的配置信息、统计信息、资源池等。在整个应用程序运行期间,这些数据会持续存在,直到应用程序被停止或重启。

总结

  • Session

    • 生命周期:与用户会话相关,浏览器关闭或超时结束。
    • 作用范围:特定于单个用户。
  • Application

    • 生命周期:与整个 Web 应用程序相关,服务器关闭或应用重启时结束。
    • 作用范围:全局共享,适用于所有用户。

这种设计使得 Web 应用能够根据需求有效地管理用户数据和共享数据。

重定向和请求转发

是 Web 开发中常用的两种处理请求的方法。它们在功能和使用场景上有一些重要的区别。以下是对这两者的详细说明:

1. 请求转发(Request Forwarding)

  • 定义:请求转发是将请求从一个资源(如 JSP 或 Servlet)转发到另一个资源的过程。转发是在服务器内部完成的,客户端并不知道发生了转发。

  • 实现方式:通过 RequestDispatcher 接口的 forward() 方法实现。

     

    javaCopy Code

    RequestDispatcher dispatcher = request.getRequestDispatcher("targetPage.jsp"); dispatcher.forward(request, response);
  • 特性

    • 同一请求:请求和响应对象会被共享,原始请求参数和属性仍然可用。
    • 服务器内部处理:URL 不会改变,用户看不到新的 URL。
    • 性能更好:因为没有额外的 HTTP 请求和响应开销。
  • 使用场景:适用于需要在服务器内部处理请求的场景,如在 JSP 页面之间传递数据或控制流。

2. 重定向(Redirecting)

  • 定义:重定向是服务器向客户端发送一个指示浏览器访问另一个 URL 的响应。这意味着客户端会发起一个新的请求。

  • 实现方式:通过 response.sendRedirect() 方法实现。

     

    javaCopy Code

    response.sendRedirect("targetPage.jsp");
  • 特性

    • 新请求:每次重定向都会创建一个新的请求,因此请求参数和属性不会被共享。
    • URL 改变:浏览器地址栏中的 URL 会更新为目标 URL。
    • 额外开销:因为浏览器需要发起新的请求,所以比请求转发稍慢。
  • 使用场景:适用于需要将用户引导到不同页面,或者在处理完表单后避免重复提交(如 POST/Redirect/GET 模式)。

总结

特性请求转发重定向
请求/响应同一请求新请求
URL不改变改变
数据共享可以共享请求参数和属性不能共享
性能更高相对较低
使用场景服务器内部跳转,数据传递用户导航,避免表单重复提交

通过合理选择重定向和请求转发,可以更好地管理 Web 应用的流量和用户体验。


原文地址:https://blog.csdn.net/qq_63843408/article/details/142954809

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!