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

<前文回顾>

点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12907601&sharerefer=PC&sharesource=FoyoDesigner&sharefrom=from_link

<今日更新>

一、JSP 内置对象:开发者的"工具箱"

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

1. request:请求的"搬运工"

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):设置请求属性的值。

2. response:响应的"快递员"

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。

3. session:会话的"记事本"

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、response、session 的"实战演练"

1. request 的"搬运工"日常

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("用户名或密码错误!"); } %> |

2. response 的"快递员"日常

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("用户名或密码错误!"); } %> |

3. session 的"记事本"日常

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 2.3

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

1. JSP 1.0:初代"工具箱"

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

2. JSP 2.0:引入 EL 表达式

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

3. JSP 2.3:最后的"辉煌"

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

四、JSP 内置对象的"骚操作"

1. request 的"骚操作"

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

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

2. response 的"骚操作"

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(); %> |

3. session 的"骚操作"

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

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


专有名词解释

  1. JSP 内置对象 :JSP 提供的预定义对象,开发者可以直接使用,如 requestresponsesession 等。
  2. EL 表达式:Expression Language,一种用于在 JSP 页面中访问数据的表达式语言。
相关推荐
科技树支点1 天前
无GC的Java创新设计思路:作用域引用式自动内存管理
java·python·go·web·编程语言·编译器
boonya1 天前
桌面应用开发语言与框架选择指南
开发语言·桌面应用
码农小伙1 天前
ConcurrentHashMap解析
java·开发语言
WhiteJunior1 天前
Java基础知识点汇总(五)
java·开发语言
搬码临时工1 天前
怎样让外网计算机访问局域网计算机?通过公网地址访问不同内网服务的设置方法
开发语言·php
晚安里1 天前
JVM相关 4|JVM调优与常见参数(如 -Xms、-Xmx、-XX:+PrintGCDetails) 的必会知识点汇总
java·开发语言·jvm·后端·算法
Qiang_san1 天前
C++11新特性 | 欢迎来到现代C++的世界!
开发语言·c++
要做朋鱼燕1 天前
【C++】迭代器详解与失效机制
开发语言·c++·算法
纪莫1 天前
技术面:Java并发(线程池、ForkJoinPool)
java·java面试⑧股
叫我阿柒啊1 天前
从Java全栈到前端框架:一次真实的面试对话
java·spring boot·微服务·前端框架·vue3·全栈开发