<前文回顾>
点击此处查看 合集 https://blog.****.net/foyodesigner/category_12907601.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12907601&sharerefer=PC&sharesource=FoyoDesigner&sharefrom=from_link
<今日更新>
一、JSP 内置对象:开发者的“工具箱”
JSP 内置对象[1],说白了就是 JSP 提供给开发者的“工具箱”,里头装着各种实用的工具,比如 request、response、session 这些。这些内置对象不用声明,拿来就能用,简直是“懒人福音”。
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("登录时间已记录!"); %> |
———————————————————————————————————————————
专有名词解释
- JSP 内置对象:JSP 提供的预定义对象,开发者可以直接使用,如 request、response、session 等。
- EL 表达式:Expression Language,一种用于在 JSP 页面中访问数据的表达式语言。