【 <一> 炼丹初探: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 页面中访问数据的表达式语言。
相关推荐
敖行客 Allthinker2 分钟前
Go 语言中 panic 和 recover 的代价:性能与设计的权衡
开发语言·后端·golang
dr李四维28 分钟前
Java在小米SU7 Ultra汽车中的技术赋能
java·人工智能·安卓·智能驾驶·互联·小米su7ultra·hdfs架构
RainbowSea1 小时前
130道基础OJ编程题之: 78~88
java
松树戈1 小时前
IDEA Commit 模态提交界面关闭VS开启对比
java·ide·intellij-idea
谦行1 小时前
前端视角 Java Web 入门手册 4.4:Web 开发基础—— Listener
java·后端
今天也想MK代码1 小时前
rust编程实战:实现3d粒子渲染wasm
开发语言·rust·wasm
结衣结衣.1 小时前
【Qt】自定义信号和槽函数
开发语言·c++·qt·c++11
jk_1011 小时前
MATLAB中strip函数用法
java·服务器·数据库
一弓虽1 小时前
maven学习
java·学习·github·maven
24k小善1 小时前
Flink Forward Asia 2024 大会 内容整理
java·大数据·flink