Java “对警告感到困惑”;无法解析变量";

Java “对警告感到困惑”;无法解析变量";,java,jsp,intellij-idea,Java,Jsp,Intellij Idea,在login.java中,我使用的是req.setAttribute(“用户名”,req.getParameter(“用户名”)在welcome.jsp中,我正在使用Hello${username}但是Intellij给了我一个警告: 无法解析变量“username” 这个变量起作用。为什么我会收到这个警告 login.java package ch.yourclick.zt; import javax.servlet.ServletException; import javax.servle

在login.java中,我使用的是
req.setAttribute(“用户名”,req.getParameter(“用户名”)
在welcome.jsp中,我正在使用
Hello${username}
但是Intellij给了我一个警告:

无法解析变量“username”

这个变量起作用。为什么我会收到这个警告

login.java

package ch.yourclick.zt;

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("/login")
public class Login extends HttpServlet {
    @Override
    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setAttribute("username", req.getParameter("username"));
        req.setAttribute("password", req.getParameter("password"));
        req.getRequestDispatcher("/welcome.jsp").forward(req, resp);
    }
}

可能是您的login.java您使用
sendRedirect
访问welcome.jsp页面,它丢失了请求范围变量

response.sendRedirect("welcome.jsp"); 
在login.java中,您需要对此进行更改以保留username变量

RequestDispatcher requestDispatcher = request.getRequestDispatcher("welcome.jsp");
requestDispatcher.forward(request, response);
对于防止警告,您可以更新Intellij>设置>代码检查的设置


可能是您的登录名。java您使用
sendRedirect
访问welcome.jsp页面时,它丢失了请求范围变量

response.sendRedirect("welcome.jsp"); 
在login.java中,您需要对此进行更改以保留username变量

RequestDispatcher requestDispatcher = request.getRequestDispatcher("welcome.jsp");
requestDispatcher.forward(request, response);
对于防止警告,您可以更新Intellij>设置>代码检查的设置

您有两种选择:

选项1

<% String username = (String) request.getAttribute("username"); %>
<%= username %>
您有两种选择:

选项1

<% String username = (String) request.getAttribute("username"); %>
<%= username %>

无法解析变量“username”
表示用户名不可用declared@AkashJain那么,如果没有声明,它为什么会工作呢?intelJ当时可能没有导入依赖项,但是编译器不会受到影响,因为类是在运行时导入的,请尝试清理您的项目,这可能会有所帮助。这里有一个类似的问题
无法解析变量“username”
表示username不是declared@AkashJain那么,如果没有声明,它为什么会工作呢?intelJ当时可能没有导入依赖项,但是编译器不会受到影响,因为类是在运行时导入的,请尝试清理您的项目,这可能会有所帮助。这里有一个类似的问题谢谢,我也这么做了,但是我仍然得到了同样的警告。你在哪里设置了属性username?在DOPOST转发之前,您需要添加req.setAttribute。我已经更新了我的问题并发布了整个代码。在您的代码中,您只为密码设置了属性,需要为用户名设置属性。是的,对不起,我的错误。实际上它有用户名和密码。我已经更新了代码,但警告保持不变。谢谢,我做了相同的操作,但仍然得到相同的警告。您在哪里设置了属性username?在DOPOST转发之前,您需要添加req.setAttribute。我已经更新了我的问题并发布了整个代码。在您的代码中,您只为密码设置了属性,需要为用户名设置属性。是的,对不起,我的错误。实际上它有用户名和密码。我已更新代码,但警告保持不变。