JSP中的session.getAttribute()返回null值

3
这是我在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)
%>

以上JSP代码返回了null值,其中的opt。我在JSP中尝试使用request.getParameter("urlsel");仍然获取到null

我想要选定的选项值作为答案并使用session.getAttribute("urlsel");

我该如何获得它?我想在我的Servlet中获取此值,并使用session.getAttribute("urlsel");。但是仍然获取到null。

请帮帮我。


1
你有设置会话属性吗?既然你尝试了会话属性和请求参数,它们彼此没有关系,我猜你是想在客户端做一些事情?JSP 对此没有意义。 - Brandon
与您的问题无关。您正在使用的是现在不再使用的Scriplets。相反,请将它们替换为JSTL - Vikas V
1个回答

5
为了从会话(session)或请求(request)中获取属性,在此之前您必须在代码中设置/添加它(即设置属性,然后才能获取它们)。
所以简短的答案是:在您的情况下,不要使用sessionrequest对象的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页面,展示如何在同一页面使用HTML form元素提交参数:

test.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>

请注意EL的用法:${param.course},其中“param”是隐式对象之一的名称,“course”是

我需要在servlet中不止一次地获取所选值。我的jsp每10秒钟就会刷新。在这种情况下,它无法获取已经选择的选项。因此,我正在尝试使用sessions。但是使用session.getAttribute()无法获取值。 - user2515189
@user2515189 如我之前所述,您需要首先将值放入session中,然后才能从那里获取它。像这样String selectValue = request.getParameter("urlsel"); request.getSession().setAttribute("urlsel", selectValue),类似这样的方式。此外,您从未提到刷新页面和保留所选值的任何内容。请在编写问题时尽量准确地描述细节 - informatik01
@user2515189,我已经发布一篇回答,其中您描述了刷新问题。 - informatik01

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接