jsp页面用request.getAttribute去取值,取到的的值是在页面显示null是什么原因

jsp页面用request.getAttribute去取值,取到的的值是在页面显示null是什么原因


package com.njts.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/el/main")
public class FirstELServlet extends HttpServlet {
 @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

     req.setAttribute("username","admin");
     req.setAttribute("password","root");
     req.getRequestDispatcher("/el/main/jsp").forward(req,resp);
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Titletitle>
head>
<body>
<h1>这是使用jsp获取的数据h1>
获取到的username:<%= request.getAttribute("username") %><br>
获取到的password:<%= request.getAttribute("password") %>

<hr>
<h1>这是使用EL表达式获取的数据h1>
获取到的username:${username}
获取到的password:${password}
body>
html>

根据提供的代码,request.setAttribute 方法用于将数据添加到请求对象中,以便在同一个请求中的其他 Servlet 或 JSP 中进行共享和访问。在 JSP 页面中,可以使用 request.getAttribute 方法获取该属性并将其显示在页面中。

如果在页面中显示 null 值,可能有以下原因:

属性名错误:请确保使用的属性名称与 request.setAttribute 方法中设置的名称一致。在这个例子中,属性名称是 username 和 password。

作用域错误:请确保使用 request.getAttribute 方法在正确的作用域中查找属性。如果属性是在请求作用域中设置的,可以使用 request.getAttribute 方法获取它。如果属性是在会话或应用程序作用域中设置的,需要使用 session.getAttribute 或 application.getAttribute 方法获取它。

属性值为空:如果属性值为空或未设置,则 request.getAttribute 方法将返回 null。请确保属性值已正确设置并非空。

在这个例子中,request.setAttribute 方法已正确设置属性值,因此可以通过在 JSP 页面中使用 ${username} 和 ${password} EL 表达式来获取属性值并在页面中显示它们。如果 request.getAttribute 方法返回 null,则 EL 表达式也将显示 null。