我有2个servlet; NewCustomerServlet和 LoginServlet
我有1个Java bean; 用户
用户有很多字段。用户名,名字,密码等......
我的index.jsp自动将用户定向到NewCustomerServlet,因此用户可以创建“帐户” 完成填写字段后,将创建用户bean并将其保存在会话中。然后,用户可以“登录”
我遇到的问题是使用会话使用login.jsp字段验证“user”会话中的用户名。
如何访问会话“用户名”或“密码”字段。我似乎可以访问的是会话的名称,它将是“用户”?
答案 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