
public ArrayList<User> search(String userName) {
System.out.println("userName = " + userName);
String SQL = "SELECT * FROM user WHERE userName LIKE ?";
ArrayList<User> userList = new ArrayList<>();
try {
preparedStatement = connection.prepareStatement(SQL);
System.out.println("preparedStatement = " + preparedStatement);
preparedStatement.setString(1, "%" + userName + "%");
resultSet = preparedStatement.executeQuery();
System.out.println("userName 파라미터: " + userName);
while (resultSet.next()) {
User user = new User();
user.setUserName(resultSet.getString(1));
user.setUserAge(resultSet.getInt(2));
user.setUserGender(resultSet.getString(3));
user.setUserEmail(resultSet.getString(4));
userList.add(user);
}
} catch (Exception e) {
e.printStackTrace();
}
return userList;
}
<body>
<br>
<div class="form-group row pull-right">
<div class="col-xs-8">
<input class="form-control" id="userName" onkeyup="searchFunction()" type="text" size="20">
</div>
<div class="col-xs-2">
<button class="btn btn-primary" onclick="searchFunction()" type="button">검색</button>
</div>
</div>
....
</body>
</html>
<script type="text/javascript">
var request = new XMLHttpRequest();
function searchFunction() {
request.open("Post", "./UserSearchServlet?userName=" + encodeURIComponent(document.getElementById("userName")), true)
request.onreadystatechange = searchProcess;
- 디버깅을 해보니
resultSet
에서 값을 제대로 받아오지도 못하고
System.out.println()
으로 출력해보니
userName : [object HTMLInputElement]
이렇게 출력되었음.
- 이 때문에
while
문이 정상적으로 실행 되지 않았음.
document.getElementById("userName")
.value
가 없다면 document.getElementById("userName")
는 해당 요소 자체를 반환하게 됨.
document.getElementById("userName").value;
.value
는 <input>
요소와 같은 폼 필드에서 사용자가 입력한 값을 가져오는 속성.