2017-08-17 SSM 登錄演示

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 文件

ssm 框架工程截圖]

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章