目录

-一-炼丹初探JavaWeb-的起源与基础之-JSP-中的内置对象requestresponsesession-的使用示例

【 <一> 炼丹初探:JavaWeb 的起源与基础】之 JSP 中的内置对象:request、response、session 的使用示例

[点击此处查看 合集

https://csdnimg.cn/release/blog_editor_html/release2.3.8/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=P1C7 “点击此处查看<JavaWeb炼丹术:JavaWeb从理论到实践的修炼之道>合集”)

JSP 内置对象[1],说白了就是 JSP 提供给开发者的“工具箱”,里头装着各种实用的工具,比如 requestresponsesession 这些。这些内置对象不用声明,拿来就能用,简直是“懒人福音”。

request 对象是 JSP 里最常用的内置对象之一,它负责“搬运” HTTP 请求的数据。无论是表单数据、URL 参数,还是请求头信息, request 都能“一网打尽”。

Jsp Code
<% String name = request.getParameter(“name”); out.println(“你好,” + name); %>

request 对象的主要方法有:

  • getParameter(String name) :获取请求参数的值。
  • getAttribute(String name) :获取请求属性的值。
  • setAttribute(String name, Object value) :设置请求属性的值。

response 对象负责“快递” HTTP 响应的数据。无论是设置响应头、重定向,还是输出内容, response 都能“搞定”。

Jsp Code
<% response.setContentType(“text/html;charset=UTF-8”); response.getWriter().write(“你好,世界!”); %>

response 对象的主要方法有:

  • setContentType(String type) :设置响应的内容类型。
  • getWriter() :获取用于输出响应内容的 PrintWriter 对象。
  • sendRedirect(String location) :重定向到指定的 URL。

session 对象是 JSP 里用来存储会话数据的“记事本”。它能在多个请求之间保存用户的数据,比如登录状态、购物车信息啥的。

Jsp Code
<% String username = (String) session.getAttribute(“username”); if (username == null) { session.setAttribute(“username”, “张三”); } out.println(“欢迎回来,” + username); %>

session 对象的主要方法有:

  • getAttribute(String name) :获取会话属性的值。
  • setAttribute(String name, Object value) :设置会话属性的值。
  • invalidate() :使当前会话失效。

request 对象最常见的用法就是获取表单数据和 URL 参数。比如,用户提交了一个登录表单, request 就能把表单里的用户名和密码“搬”出来。

Jsp Code
<% String username = request.getParameter(“username”); String password = request.getParameter(“password”); if (“admin”.equals(username) && “123456”.equals(password)) { out.println(“登录成功!”); } else { out.println(“用户名或密码错误!”); } %>

response 对象最常见的用法就是设置响应头和重定向。比如,用户登录成功后, response 就能把用户“快递”到主页。

Jsp Code
<% String username = request.getParameter(“username”); String password = request.getParameter(“password”); if (“admin”.equals(username) && “123456”.equals(password)) { response.sendRedirect(“home.jsp”); } else { response.setContentType(“text/html;charset=UTF-8”); response.getWriter().write(“用户名或密码错误!”); } %>

session 对象最常见的用法就是保存用户的登录状态。比如,用户登录成功后, session 就能把用户的登录信息“记”下来,方便后续使用。

Jsp Code
<% String username = request.getParameter(“username”); String password = request.getParameter(“password”); if (“admin”.equals(username) && “123456”.equals(password)) { session.setAttribute(“username”, username); response.sendRedirect(“home.jsp”); } else { response.setContentType(“text/html;charset=UTF-8”); response.getWriter().write(“用户名或密码错误!”); } %>

JSP 内置对象从 JSP 1.0 开始就有了,虽然现在 JSP 已经有点“过气”了,但它的内置对象依然是开发者的“好帮手”。

JSP 1.0 在 1999 年发布,内置对象是它的“初代工具箱”。虽然功能简单,但已经能满足大部分开发需求了。

JSP 2.0 在 2003 年发布,引入了 EL 表达式[2],让开发者能更方便地访问内置对象。EL 表达式的引入,让 JSP 的“玩法”更加丰富。

JSP 2.3 在 2013 年发布,是 JSP 的“最后版本”。虽然内置对象的功能已经很强大了,但 JSP 的“辉煌”已经过去了,因为大家都开始用 Spring Boot、Vue.js 这些新技术了。

request 对象不仅能“搬运”数据,还能“搬运”文件。比如,用户上传了一个文件, request 就能把文件“搬”到服务器上。

Jsp Code
<% Part filePart = request.getPart(“file”); String fileName = filePart.getSubmittedFileName(); filePart.write("/uploads/" + fileName); out.println(“文件上传成功!”); %>

response 对象不仅能“快递”数据,还能“快递”文件。比如,用户下载了一个文件, response 就能把文件“快递”给用户。

Jsp Code
<% response.setContentType(“application/octet-stream”); response.setHeader(“Content-Disposition”, “attachment; filename="file.txt"”); InputStream in = new FileInputStream("/path/to/file.txt"); OutputStream out = response.getOutputStream(); byte[] buffer = new byte[4096]; int length; while ((length = in.read(buffer)) > 0) { out.write(buffer, 0, length); } in.close(); out.flush(); %>

session 对象不仅能“记事”,还能“记时”。比如,用户登录后, session 就能把用户的登录时间“记”下来,方便后续统计。

Jsp Code
<% long loginTime = System.currentTimeMillis(); session.setAttribute(“loginTime”, loginTime); out.println(“登录时间已记录!”); %>

———————————————————————————————————————————

  1. JSP 内置对象 :JSP 提供的预定义对象,开发者可以直接使用,如 requestresponsesession 等。
  2. EL 表达式 :Expression Language,一种用于在 JSP 页面中访问数据的表达式语言。