2017-08-17 SSM 登錄演示
前言
上一篇已經將 SSM 框架的環境搭建好了,還沒來得及看的可以看鏈接:2017-08-17 SSM 環境搭建
而這一篇則是對 SSM 框架的初步使用,整個項目在上一篇有提供。
配置數據庫
本案例以 test 數據庫,創建 user 表爲例,添加以下字段:
字段名 | 屬性 |
---|---|
id | int(11) |
name | varchar(20) |
password | varchar(32) |
密碼一般可以設置爲 32 位,後期使用 MD5 加密後長度就是 32 位
然後往裏面插入相關的數據
可以使用以下代碼創建數據庫,創建表和添加數據
DROP DATABASE test;
CREATE DATABASE test;
USE test;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
`password` varchar(32) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'aaa', 'aaa');
INSERT INTO `user` VALUES ('2', 'bbb', 'bbb');
INSERT INTO `user` VALUES ('3', 'ccc', 'ccc');
根據工程截圖,創建對應的 Java 文件
com.demo.bean 下的 User.java
根據數據庫表創建對應的 bean
package com.demo.bean;
public class User {
private int id; // 用戶 id
private String name; // 用戶名
private String password; // 用戶密碼
public User() {
super();
}
public User(String name, String password) {
super();
this.name = name;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
}
}
com.demo.mapper 下的 UserMapper.java
package com.demo.mapper;
import com.demo.bean.User;
public interface UserMapper {
// 根據用戶名和密碼查找用戶
public User findUserByNameAndPassword(User user);
}
com.demo.mapper 下的 UserMapper.xml
該文件和 UserMapper.java 對應
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.demo.mapper.UserMapper">
<!-- 根據用戶名和密碼查找用戶 -->
<select id="findUserByNameAndPassword" parameterType="com.demo.bean.User" resultType="com.demo.bean.User" >
select * from user where name=#{name} and password=#{password}
</select>
</mapper>
com.demo.dao 下的 UseDao.java
package com.demo.dao;
import javax.annotation.Resource;
import org.springframework.stereotype.Repository;
import com.demo.bean.User;
import com.demo.mapper.UserMapper;
@Repository
public class UserDao {
@Resource
private UserMapper userMapper;
// 根據用戶名和密碼查找用戶
public User findUserByNameAndPassword(User user) {
return userMapper.findUserByNameAndPassword(user);
}
}
com.demo.service 下的 UserService.java
package com.demo.service;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import com.demo.bean.User;
import com.demo.dao.UserDao;
@Service
public class UserService {
@Resource()
private UserDao userDao;
// 根據用戶名和密碼查找用戶
public User findUserByNameAndPassword(User user) {
return userDao.findUserByNameAndPassword(user);
}
}
com.demo.controller 下的 UserController.java
package com.demo.controller;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.demo.bean.User;
import com.demo.service.UserService;
@Controller
public class UserController {
@Resource(name="userService")
private UserService userService;
// 跳轉到登陸頁面
@RequestMapping("loginForm.do")
public String loginForm() {
return "loginForm";
}
// 登陸驗證
@RequestMapping("/login.do")
public ModelAndView login(String name, String password, HttpSession session){
ModelAndView modelAndView = new ModelAndView();
User user = new User();
user.setName(name);
user.setPassword(password);
user = userService.findUserByNameAndPassword(user);
if(null != user) {
//登錄成功,將 user 對象存入 session 並跳轉到 page/success.jsp 頁面
session.setAttribute("user", user);
//轉發到main請求
modelAndView.setViewName("success");
} else {
//登錄失敗,設置失敗信息,並調轉到登錄頁面
modelAndView.setViewName("loginForm");
}
return modelAndView;
}
}
JSP 頁面實現
WEB-INF/pages/loginForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登錄</title>
</head>
<body>
<form action="login.do" method="post">
用戶名:<input type="text" id="name" name="name" />
密碼:<input type="password" id="password" name="password" />
<input type="submit" value="登錄" />
</form>
</body>
</html>
WEB-INF/pages/success.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登錄成功</title>
</head>
<body>
歡迎[${sessionScope.user.name }]登錄!
</body>
</html>
測試
然後運行項目
在瀏覽器中輸入鏈接:http://localhost:8080/test_SSM/loginForm.do
輸入正確賬號密碼時則跳轉到 WEB-INF/pages/success.jsp
輸入錯誤則跳轉到 WEB-INF/pages/loginForm.jsp 繼續登錄
登錄演示到此結束
後記
本文基於個人的學習
分享出來純當給大家參考一下,也當作自己的筆記
編輯:HochenChong
時間:2017-08-17