欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 【Java Web】JSP实现数据传递和保存(上)九大内置对象 request

【Java Web】JSP实现数据传递和保存(上)九大内置对象 request

2025/4/22 19:57:49 来源:https://blog.csdn.net/m0_66584716/article/details/143599121  浏览:    关键词:【Java Web】JSP实现数据传递和保存(上)九大内置对象 request

文章目录

    • request
      • 主要方法
      • 存取属性
    • 简单示例

JSP(JavaServer Pages)提供了九个内置对象,这些对象在JSP页面中可以直接使用,无需显式声明。这些内置对象提供了对请求、响应、会话等常用功能的访问,使得开发者可以更方便地处理Web应用程序中的各种任务。

request 请求对象

  • javax.servlet.http.HttpServletRequest
  • 代表客户端的请求信息。可以通过它获取请求参数、请求头、Cookies等

response 响应对象

  • javax.servlet.http.HttpServletResponse
  • 代表服务器对客户端的响应。可以通过它设置响应头、状态码、发送数据到客户端等

out 输出对象

  • javax.servlet.jsp.JspWriter
  • 用于向客户端输出内容。它是PrintWriter的一个子类,支持缓冲和自动刷新

session 会话对象

  • javax.servlet.http.HttpSession
  • 代表当前用户的会话。可以用来存储用户特定的数据,并在多个请求之间共享这些数据

config 配置对象

  • javax.servlet.ServletConfig
  • 代表Servlet配置信息。可以用来获取初始化参数

page 页面对象

  • java.lang.Object
  • 代表当前JSP页面的实例。通常不直接使用这个对象

**pageContext **页面上下文对象

  • javax.servlet.jsp.PageContext
  • 提供对其他八个内置对象的访问,并且可以用来管理页面范围内的属性。还可以用来进行页面转发和包含

exception 异常对象

  • java.lang.Throwable
  • 只有在错误处理页面(设置了<%@ page isErrorPage="true" %>的页面)中才可用。代表抛出的异常对象

request

主要方法

public String getParameter(String name)

  • 获取指定名称的请求参数值。如果请求中没有该参数,则返回 null
  • 示例:String userName = request.getParameter("userName");

public String[] getParameterValues(String name)

  • 获取指定名称的所有请求参数值(适用于多选或多个同名参数)。如果请求中没有该参数,则返回 null
  • 示例:String[] hobbies = request.getParameterValues("hobby");
<form action="displayHobbies.jsp" method="post"><p><input type="checkbox" name="hobby" value="Reading"> Reading</p><p><input type="checkbox" name="hobby" value="Sports"> Sports</p><p><input type="checkbox" name="hobby" value="Music"> Music</p><p><input type="submit" value="提交"></p>
</form>
<ul><%// 获取所有"hobby"参数的值String[] hobbies = request.getParameterValues("hobby");// 检查参数是否存在if (hobbies != null && hobbies.length > 0) {for (String hobby : hobbies) {out.println("<li>" + hobby + "</li>");}} else {out.println("<li>No hobbies selected.</li>");}// toString() 方法直接打印数组out.println("hobbies = " + Arrays.toString(hobbies));%>
</ul>

public Map<String, String[]> getParameterMap()

  • 获取所有请求参数及其值的映射。
  • 示例:Map<String, String[]> params = request.getParameterMap();

public Enumeration<String> getParameterNames()

  • 获取所有请求参数的名称。
  • 示例:Enumeration<String> paramNames = request.getParameterNames();

public String getMethod()

  • 获取请求的方法(如 GETPOST)。
  • 示例:String method = request.getMethod();

public String getHeader(String name)

  • 获取指定名称的请求头值。
  • 示例:String userAgent = request.getHeader("User-Agent");

public Enumeration<String> getHeaders(String name)

  • 获取指定名称的所有请求头值。
  • 示例:Enumeration<String> headers = request.getHeaders("Accept-Language");

public Cookie[] getCookies()

  • 获取所有的Cookies。
  • 示例:Cookie[] cookies = request.getCookies();

public String getRemoteAddr()

  • 获取客户端的IP地址。
  • 示例:String clientIP = request.getRemoteAddr();

public String getContextPath()

  • 获取应用的上下文路径。
  • 示例:String contextPath = request.getContextPath();

get 与 post 区别

比较项getpost
缓存可以不可以
收藏为书签可以不可以
数据长度有限制(URL 的最大长度是 2048 个字符)无限制
编码类型application/x-www-form-urlencodedapplication/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。
对数据类型的限制只允许 ASCII 字符没有限制。也允许二进制数据
安全性不安全安全
可见性数据在 URL 中对所有人都是可见的数据不会显示在 URL 中

存取属性

getAttributesetAttribute 用于在请求范围内存储和获取对象。这些方法允许在处理请求的过程中将数据保存到请求作用域中,这样在同一请求的不同阶段或者不同的Servlet/JSP之间可以共享数据。

setAttribute(String name, Object o)

  • 该方法用来将一个对象与给定的名字关联起来,并将其存储在请求作用域内。如果已经存在同名的对象,则新的对象会覆盖旧的对象。

getAttribute(String name)

  • 该方法根据指定的名字从请求作用域中获取对象。如果不存在这样的属性,则返回 null
// 错误示范
String mess = request.getAttribute("mess");
mess.length();// 正确示范
// 2、它的返回值类型是Object类型,需要做数据类型的转换
String mess = (String)request.getAttribute("mess");
// 1、在使用属性值的时候要做非空判断,否则会出现空指针异常
if (mess != null) {// 在请求中取到"mess"属性对应的属性值,正常使用mess数据
} else {// 在请求中没有取到"mess"属性对应的属性值,使用备选方案
}

需要注意的是,这些属性只在单个请求生命周期内有效,一旦请求完成,这些属性就会被销毁。如果需要跨多个请求持久化数据,那么应该考虑使用 HttpSessionsetAttributegetAttribute 方法。

getAttributegetParameter 的区别

getAttribute 用于获取在服务器端设置的属性值,这些属性可以在请求、会话或应用范围内共享。

方法签名

Object getAttribute(String name);
  • 用途:从请求、会话或应用上下文中获取属性值。
  • 常见应用场景:在过滤器或拦截器中设置的属性;在一个Servlet中设置并在另一个Servlet中使用的属性;存储用户会话信息。

getParameter 用于获取客户端通过HTTP请求传递的参数值。

方法签名

String getParameter(String name);
String[] getParameterValues(String name);
  • 用途:从 HTTP 请求中获取客户端传递的参数值。
  • 常见应用场景:表单提交的数据(如文本框、复选框等);URL 中的查询参数(如 ?name=value)。

简单示例

编写一个简单的HTML表单,用户可以输入账号密码并提交。

<!DOCTYPE html>
<html>
<head><title>登录表单</title>
</head>
<body><form action="/dologin.jsp" method="post">账号:<input type="text" name="uname"/><br/>密码:<input type="text" name="upwd"/><br/><input type="submit"/></form>
</body>
</html>

调用 Java 方法验证登录信息,并携带用户信息进入首页

<%// 接收参数String uname = request.getParameter("uname");String upwd = request.getParameter("upwd");// 调用 Java 方法 登录SmbmsUserDao smbmsUserDao = new SmbmsUserDaoImpl();SmbmsUser smbmsUser =  smbmsUserDao.login(uname,upwd);// 判断登录是否成功if (smbmsUser != null) {// setAttribute 存储登录信息request.setAttribute("smbmsUserName",smbmsUser.getUserName());// 转发request.getRequestDispatcher("index.jsp").forward(request,response);// 重定向// response.sendRedirect("index.jsp");} else {// 登录失败则重定向回登录界面response.sendRedirect("login.jsp");}
%>

使用上次案例的全查,附带展示登录用户信息

<%// 调用 Java 方法 获取供应商列表信息SmbmsProviderDao smbmsProviderDao = new SmbmsProviderDaoImpl();List<SmbmsProvider> smbmsProviderList = smbmsProviderDao.findAll();// getAttribute 获取登录信息String name =  request.getAttribute("smbmsUserName").toString();
%>
<h1><%= name%>欢迎您登录 供应商信管理系统!!!
</h1>
<table border="1"><tr><th>ID</th><th>proCode</th><th>proName</th><th>proDesc</th></tr><% for(SmbmsProvider smbmsProvider : smbmsProviderList){ %><tr><td><%= smbmsProvider.getId()%></td><td><%= smbmsProvider.getProCode()%></td><td><%= smbmsProvider.getProName()%></td><td><%= smbmsProvider.getProDesc()%></td></tr><% } %>
</table>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词