Java Servlet如何从会话属性中获取特定值

时间:2016-04-19 21:12:19

标签: java jsp session servlets

好吧,我有点无法解释我的问题,但我会尽量详细,尽可能简洁。

我有2个servlet; NewCustomerServlet和 LoginServlet

我有1个Java bean; 用户

用户有很多字段。用户名,名字,密码等......

我的index.jsp自动将用户定向到NewCustomerServlet,因此用户可以创建“帐户” 完成填写字段后,将创建用户bean并将其保存在会话中。然后,用户可以“登录”

我遇到的问题是使用会话使用login.jsp字段验证“user”会话中的用户名。

如何访问会话“用户名”或“密码”字段。我似乎可以访问的是会话的名称,它将是“用户”?

1 个答案:

答案 0 :(得分:0)

引用HttpSession的JavaDoc,

您将意识到<input type="text" class="form-control" placeholder="Search user" name="typeahead"> <?php // getting all usernames from db $statement = mysqli_prepare ($connect, "SELECT * FROM users WHERE account_type ='user'"); mysqli_stmt_execute($statement); $usernames = array(); $result = mysqli_stmt_get_result($statement); while($get_data = mysqli_fetch_assoc ($result)){ $usernames[] = $get_data['username']; } mysqli_stmt_close($statement); ?> <script> var substringMatcher = function(strs) { return function findMatches(q, cb) { var matches, substringRegex; // an array that will be populated with substring matches matches = []; // regex used to determine if a string contains the substring `q` substrRegex = new RegExp(q, 'i'); $.each(strs, function(i, str) { if (substrRegex.test(str)) { matches.push(str); } }); cb(matches); }; }; var username = <?php echo json_encode($usernames); ?>; $('#the-basics .typeahead').typeahead({ hint: true, highlight: true, minLength: 1 }, { name: 'usernames', source: substringMatcher(username) }); </script> 按键存储属性,就像HttpSession一样,您可以在会话中放置对象(任何可序列化对象),如:

HashMap

然后你可以使用:

取回它
String userName = "something";//
session.setAttribute("username", userName);

只要该对象实现Serializable,就可以存储更复杂的对象,例如整个String un=(String)session.getAttribute("username"); 对象:

User

然后您可以稍后检索该用户的信息:

User someUser = //details left to the OP
session.setAttribute("user", someUser);

此外,以下是User someUser = (User)session.getAttribute("user"); if(user != null){ String username = user.getUsername(); } Servlets HttpSession的常见会话利用情况的简要介绍:Session Tracking