天天看点

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() NOT NULL AUTO_INCREMENT,
  `name` varchar() NOT NULL,
  `password` varchar() NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT= 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 文件

2017-08-17 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
           

继续阅读