为了从会话或请求中获取属性,在此之前,您必须在代码中的某处设置/添加它(即首先设置属性,然后您可以获取它们)。
所以简短的回答:在您的情况下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>
请注意EL :
的用法${param.course}
,其中“ param ”是隐式对象之一的名称,“ course ”是选择元素的名称,其值是通过提交 HTML 表单传递的。
另请查看以下答案以获取更多信息:Passing variables from JSP to servlet。
附言
您可能会发现阅读一些涵盖 servlet 和 JSP 的教程很有用。这是一个流行的教程,有很好的解释和易于理解的示例:
初级和中级 Servlet 和 JSP 教程