JSP 中的 session.getAttribute() 给出了空值

use*_*189 3 java session jsp servlets

这是我在 JSP 中的 HTML 代码

<select name="urlsel" id="selurl">
<option value="eng" name="eng"/>
<option value="mat" name="mat"/>
<option value="sci" name="sci"/>
</select>
<input type="submit" value="submit option" onsubmit="return validate()"/>
<%  String opt=session.getAttribute("urlsel");
    System.out.println("\n selected optiion is:+opt)
%>
Run Code Online (Sandbox Code Playgroud)

上面的 JSP 代码为opt提供了值。我在 JSP 中尝试过仍然得到nullrequest.getParameter("urlsel");

我想要选择的选项值回答 session.getAttribute("urlsel");

我怎么才能得到它?我希望在我的 servlet 和 servlet 中使用这个值,session.getAttribute("urlsel");
但是却为空。

请帮我。

inf*_*k01 5

为了从会话请求中获取属性,在此之前您必须在代码中的某处设置/添加它(即首先设置属性,然后您才能获取它们)。

所以简短的回答:在你的情况下,不要getAttribute(String name)会话请求对象上使用,而是使用request.getParameter(String name).


您在这里尝试完成的是检索使用 HTML 表单传递的参数。为了做到这一点,使用getParameter(String name)方法,例如:

String selectValue = request.getParameter("urlsel")

传统上,使用 HTTP 表单传递的值在 servlet 中检索,然后您可以对它们执行任何您需要执行的操作。

正如我在您的示例中所看到的,您正在以这种PHP方式进行操作。虽然不是 Java Web 应用程序开发中最常见的方式,但是您可以使用表达式语言param 隐式对象检索在 JSP 中使用 HTML 表单传递的参数(您应该避免在 JSP 中使用scriptlet)。


简单的例子

这是一个 JSP 页面的简单示例,用于展示在同一页面中检索使用 HTML表单元素提交的参数(如您的示例中所示):

测试.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <title>Test Page</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
    <h1>Test Page</h1>
    <form action="" method="post">
        <p>Choose some course</p>
        <select name="course">
            <option value="English" name="eng">English</option>
            <option value="Math" name="mat">Math</option>
            <option value="Computer Science" name="sci">Computer Science</option>
        </select>
        <p><input type="submit" value="Pass data" /></p>
    </form>
    <hr />
    <h2>Testing passed parameters</h2>
    <p>Passed "course" parameter = <span style="color: #FF0000">${param.course}</span></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)


请注意EL :的用法${param.course},其中“ param ”是隐式对象之一的名称,“ course ”是选择元素的名称,其值是通过提交 HTML 表单传递的。

另请查看以下答案以获取其他信息:将变量从 JSP 传递到 servlet


聚苯乙烯

您可能会发现阅读一些涵盖 servlet 和 JSP 的教程很有用。这是一个流行的教程,里面有很好的解释和易于理解的例子:

初级和中级 Servlet 和 JSP 教程