JSP中的session.getAttribute()给出null值

时间:2013-06-24 11:50:17

标签: java jsp session 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)
%>

上述JSP代码为 opt 提供 null 值。我在JSP中尝试使用request.getParameter("urlsel");仍然获得 null

我希望所选的选项值以session.getAttribute("urlsel");

回答

我怎样才能得到它?我希望使用session.getAttribute("urlsel");来在我的servlet和servlet中使用此值 但是变空了。

请帮帮我。

1 个答案:

答案 0 :(得分:4)

为了从会话请求获取属性,在此之前必须在代码中的某处设置/添加(即第一设置属性,然后你可以得到它们。)

简而言之:在你的情况下,而不是在会话请求对象上使用getAttribute(String name),使用 request.getParameter(String name)


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

String selectValue = request.getParameter("urlsel")

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

正如我在您的示例中所看到的,您正在使用 PHP 方式。尽管不是Java Web应用程序开发中最常用的方法,但是您可以使用implicit object param Expression Language检索使用HTML表单在JSP中传递的参数(您应该{{3 }})。


简单示例

这是一个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 ”是其中一个avoid scriptlets in your JSP和“ course < / em>“是 select 元素的名称,其值通过提交HTML表单传递。

另请查看以下答案以获取更多信息:implicit objects


P.S。

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

Passing variables from JSP to servlet