这一节为我们的登录模块添加数据库存储,使用Spring JdbcTemplate。
servlet.xml 定义 DataStore
1 |
|
User.java1
2
3
4
5
6
7
8
9
10
11
12
13
14public class User implements Serializable{
private static final long serialVersionUID = 1L;
private int userId;
private String userName;
private String password;
private String lastIp;
private Date lastVisit;
public User() {
}
// getter and setter...
}
JdbcUserDao.java1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31@Repository
public class JdbcUserDao implements UserDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public Integer getMatchCount(String userName, String password) {
String sql = "SELECT count(*) FROM user_tbl WHERE user_name=? and password=?";
return jdbcTemplate.queryForObject(sql, Integer.class, userName, password);
}
public User findUserByName(final String userName) {
String sql = "select user_id, user_name from user_tbl where user_name=?";
return jdbcTemplate.queryForObject(sql, new Object[] {userName},
new RowMapper<User>() {
@Override
public User mapRow(ResultSet resultSet, int i) throws SQLException {
User user = new User();
user.setUserId(resultSet.getInt("user_id"));
user.setUserName(resultSet.getString("user_name"));
return user;
}
});
}
public void updateLoginInfo(User user) {
String sql = "update user_tbl set last_visit=?, last_ip=? where user_id=?";
jdbcTemplate.update(sql, user.getLastVisit(), user.getLastIp());
}
}
UserService.java1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19@Service
public class UserService {
@Autowired
private JdbcUserDao jdbcUserDao;
public boolean hasMatchUser(String userName, String password) {
Integer count = jdbcUserDao.getMatchCount(userName, password);
return count > 0;
}
public User findUserByName(String userName) {
return jdbcUserDao.findUserByName(userName);
}
public void loginSuccess(User user) {
jdbcUserDao.updateLoginInfo(user);
}
}
测试1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"file:src/main/webapp/WEB-INF/spitter-servlet.xml"})
public class TestUserService {
@Autowired
private UserService userService;
@Test
public void hasMatchUser() {
boolean b1 = userService.hasMatchUser("admin", "123456");
boolean b2 = userService.hasMatchUser("admin", "1111");
Assert.assertTrue(b1);
Assert.assertFalse(b2);
}
@Test
public void findUserByName() {
User user = userService.findUserByName("admin");
Assert.assertEquals(user.getUserName(), "admin");
}
}
验证码,参考 http://chenzhou123520.iteye.com/blog/1987636