ssm简单登录流程

这个就是流程,为了方便我接下来贴代码,把这一部分单独截下来了,上面那篇文章里面也有登录注册的代码。

1、首先是数据库,我数据库就一个user表,只有name和password两个字段,这里就不贴代码了。

2、接着是entity

  1.  
    package com.jiang.entity;
  2.  
     
  3.  
    public class User {
  4.  
    private String name;
  5.  
    private String password;
  6.  
    public String getName() {
  7.  
    return name;
  8.  
    }
  9.  
    public void setName(String name) {
  10.  
    this.name = name;
  11.  
    }
  12.  
    public String getPassword() {
  13.  
    return password;
  14.  
    }
  15.  
    public void setPassword(String password) {
  16.  
    this.password = password;
  17.  
    }
  18.  
     
  19.  
     
  20.  
    }

这个也是跟user表一样的,其实也没啥

3、UserMapper.xml

  1.  
    <?xml version="1.0" encoding="UTF-8"?>
  2.  
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3.  
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4.  
    <mapper namespace="com.jiang.mapper.UserMapper">
  5.  
    <resultMap type="com.jiang.entity.User" id="userRM">
  6.  
    <result property="name" column="name"/>
  7.  
    <result property="password" column="password"/>
  8.  
    </resultMap>
  9.  
    <select id="selectByName" parameterType="map" resultMap="userRM">
  10.  
    select * from user where
  11.  
    <if test="name!=null">name=#{name}</if>
  12.  
    <if test="password!=null">and password=#{password}</if>
  13.  
    </select>
  14.  
    </mapper>

4、接下来应该是mapper.java但是我用了spring整合,所以这里就没有,但是在spring的配置文件中一定要配置包扫描文件,而且这个路径很重要,一定不能搞错了

5、然后就是Dao层,Dao可以分成Dao和DaoImpl两个包,我这里是分开写的,所以我会把代码分别贴出来

BaseDao.java(这个类是因为之前按照书上来的,所以建了,之后也没删除,这里可以忽略)

  1.  
    package com.jiang.dao;
  2.  
     
  3.  
    import java.io.Serializable;
  4.  
    import java.util.List;
  5.  
    import java.util.Map;
  6.  
     
  7.  
    public interface BaseDao<T> {
  8.  
     
  9.  
    }

UserDao.java

  1.  
    package com.jiang.dao;
  2.  
     
  3.  
    import java.util.List;
  4.  
    import java.util.Map;
  5.  
     
  6.  
    import com.jiang.entity.User;
  7.  
     
  8.  
    public interface UserDao extends BaseDao<User>{
  9.  
    public boolean findUserByName(Map map);
  10.  
     
  11.  
    }

BaseDaoImpl.java

  1.  
    package com.jiang.dao.impl;
  2.  
     
  3.  
    import org.apache.ibatis.session.SqlSessionFactory;
  4.  
    import org.mybatis.spring.support.SqlSessionDaoSupport;
  5.  
    import org.springframework.beans.factory.annotation.Autowired;
  6.  
    import com.jiang.dao.BaseDao;
  7.  
     
  8.  
    public abstract class BaseDaoImpl<T> extends SqlSessionDaoSupport implements BaseDao<T>{
  9.  
    @Autowired
  10.  
    public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
  11.  
    super.setSqlSessionFactory(sqlSessionFactory);
  12.  
    }
  13.  
     
  14.  
    }

这里继承了SqlSessionDaoSupport类,这个类是会话工厂的数据库连接层辅助类,通过为其注入sqlSessionFactory对象就可以直接调用getSqlSession方法获取会话对象并进行增删改查操作。

UserDaoImpl.java

  1.  
    package com.jiang.dao.impl;
  2.  
     
  3.  
    import java.util.List;
  4.  
    import java.util.Map;
  5.  
     
  6.  
    import org.springframework.beans.factory.annotation.Autowired;
  7.  
    import org.springframework.stereotype.Repository;
  8.  
     
  9.  
    import com.jiang.dao.UserDao;
  10.  
    import com.jiang.entity.User;
  11.  
     
  12.  
    @Repository
  13.  
    public class UserDaoImpl extends BaseDaoImpl<User> implements UserDao{
  14.  
     
  15.  
    public boolean findUserByName(Map map) {
  16.  
    // TODO Auto-generated method stub
  17.  
    if(map!=null) {
  18.  
    List<User> u=getSqlSession().selectList("com.jiang.mapper.UserMapper.selectByName", map);
  19.  
    if(!u.isEmpty()) {
  20.  
    return true;
  21.  
    }else {
  22.  
    return false;
  23.  
    }
  24.  
    }else {
  25.  
    return false;
  26.  
    }
  27.  
    }
  28.  
     
  29.  
    }

6、service层,这里也是接口和实现类分开的

UserService.java

  1.  
    package com.jiang.service;
  2.  
     
  3.  
    import java.io.Serializable;
  4.  
    import java.util.List;
  5.  
    import java.util.Map;
  6.  
     
  7.  
    import com.jiang.entity.User;
  8.  
     
  9.  
    public interface UserService {
  10.  
    public boolean findUserByName(Map map);
  11.  
     
  12.  
    }

UserServiceImpl.java

  1.  
    package com.jiang.service.impl;
  2.  
     
  3.  
    import java.io.Serializable;
  4.  
    import java.util.List;
  5.  
    import java.util.Map;
  6.  
     
  7.  
    import org.springframework.beans.factory.annotation.Autowired;
  8.  
    import org.springframework.stereotype.Service;
  9.  
     
  10.  
    import com.jiang.dao.UserDao;
  11.  
    import com.jiang.entity.User;
  12.  
    import com.jiang.service.UserService;
  13.  
     
  14.  
    @Service
  15.  
    public class UserServiceImpl implements UserService{
  16.  
    @Autowired
  17.  
    private UserDao userDao;
  18.  
     
  19.  
    public boolean findUserByName(Map map) {
  20.  
    // TODO Auto-generated method stub
  21.  
    return userDao.findUserByName(map);
  22.  
    }
  23.  
     
  24.  
     
  25.  
     
  26.  
     
  27.  
    }

7、controller层,同样还是接口和实现类分开

BaseController.java

  1.  
    package com.jiang.controller;
  2.  
     
  3.  
    import java.text.DateFormat;
  4.  
    import java.text.SimpleDateFormat;
  5.  
    import java.util.Date;
  6.  
     
  7.  
    import org.springframework.beans.propertyeditors.CustomDateEditor;
  8.  
    import org.springframework.web.bind.WebDataBinder;
  9.  
    import org.springframework.web.bind.annotation.InitBinder;
  10.  
     
  11.  
    public abstract class BaseController {
  12.  
    @InitBinder
  13.  
    public void initBinder(WebDataBinder binder) {
  14.  
    DateFormat dateFormat =new SimpleDateFormat("yyyy-MM-dd");
  15.  
    dateFormat.setLenient(true);
  16.  
    binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat,true));
  17.  
    }
  18.  
     
  19.  
    }

这里面的方法用于日期的转换,如果页面里的日期格式转换错误会报400错误

UserController.java

  1.  
    package com.jiang.controller;
  2.  
     
  3.  
    import java.util.HashMap;
  4.  
    import java.util.Map;
  5.  
     
  6.  
    import javax.servlet.http.HttpServletRequest;
  7.  
     
  8.  
    import org.springframework.beans.factory.annotation.Autowired;
  9.  
    import org.springframework.stereotype.Controller;
  10.  
    import org.springframework.ui.Model;
  11.  
    import org.springframework.web.bind.annotation.RequestMapping;
  12.  
     
  13.  
    import com.jiang.entity.User;
  14.  
    import com.jiang.service.UserService;
  15.  
     
  16.  
    @Controller
  17.  
    public class UserController extends BaseController{
  18.  
    @Autowired
  19.  
    UserService userService;
  20.  
     
  21.  
    @RequestMapping("/user/toLogin.action")
  22.  
    public String toLogin() {
  23.  
    return "/login.jsp";
  24.  
    }
  25.  
    @RequestMapping("/user/login.action")
  26.  
    public String login(User user,Model model,HttpServletRequest request) {
  27.  
    Map<String,String> map=new HashMap<String,String>();
  28.  
    map.put("name", user.getName());
  29.  
    map.put("password", user.getPassword());
  30.  
    if(userService.findUserByName(map)) {
  31.  
    request.getSession().setAttribute("user","jiang");
  32.  
    return "/admin/index.jsp";
  33.  
    }
  34.  
    model.addAttribute("errorMsg", "登录失败!账号或密码错误!");
  35.  
    return "/login.jsp";
  36.  
     
  37.  
    }
  38.  
     
  39.  
    }

8、接下就是登录页面了

login.jsp

  1.  
    <%@ page language="java" contentType="text/html; charset=utf-8"
  2.  
    pageEncoding="utf-8"%>
  3.  
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  4.  
    <!DOCTYPE html>
  5.  
    <html lang="en">
  6.  
    <head>
  7.  
    <meta charset="UTF-8">
  8.  
    <title>jiang's blog</title>
  9.  
    <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/css/uploading.css">
  10.  
    <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/css/bootstrap.min.css">
  11.  
    <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/css/reset.css">
  12.  
    <script type="text/javascript" src="${pageContext.request.contextPath }/js/bootstrap.min.js"></script>
  13.  
    </head>
  14.  
    <body class="upload_page">
  15.  
    <div class="login">
  16.  
    <div class="top">
  17.  
    Login
  18.  
    </div>
  19.  
    <form action="login.action" method="post" onsubmit="return validate()">
  20.  
    <div class="input-group login_input">
  21.  
    <span class="input-group-addon" id="basic-addon1">
  22.  
    <span class="glyphicon glyphicon-user" aria-hidden="true"></span>
  23.  
    </span>
  24.  
    <input name="name" type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1">
  25.  
    </div>
  26.  
    <div class="input-group login_input">
  27.  
    <span class="input-group-addon" id="basic-addon1">
  28.  
    <span class="glyphicon glyphicon-asterisk" aria-hidden="true"></span>
  29.  
    </span>
  30.  
    <input name="password" type="password" class="form-control" placeholder="Password" aria-describedby="basic-addon1">
  31.  
    </div>
  32.  
    <button type="submit" class="btn btn-info login_btn">登录</button>
  33.  
    </form>
  34.  
    <div class="error"><c:if test="${errorMsg!=null }"><font color="red">${errorMsg}</font></c:if></div>
  35.  
    </div>
  36.  
    </body>
  37.  
    <script type="text/javascript">
  38.  
     
  39.  
    </script>
  40.  
原文地址:https://www.cnblogs.com/ma13461749958/p/14231954.html