ssm简单登录流程
这个就是流程,为了方便我接下来贴代码,把这一部分单独截下来了,上面那篇文章里面也有登录注册的代码。
1、首先是数据库,我数据库就一个user表,只有name和password两个字段,这里就不贴代码了。
2、接着是entity
-
package com.jiang.entity;
-
-
public class User {
-
private String name;
-
private String password;
-
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;
-
}
-
-
-
}
这个也是跟user表一样的,其实也没啥
3、UserMapper.xml
-
<?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.jiang.mapper.UserMapper">
-
<resultMap type="com.jiang.entity.User" id="userRM">
-
<result property="name" column="name"/>
-
<result property="password" column="password"/>
-
</resultMap>
-
<select id="selectByName" parameterType="map" resultMap="userRM">
-
select * from user where
-
<if test="name!=null">name=#{name}</if>
-
<if test="password!=null">and password=#{password}</if>
-
</select>
-
</mapper>
4、接下来应该是mapper.java但是我用了spring整合,所以这里就没有,但是在spring的配置文件中一定要配置包扫描文件,而且这个路径很重要,一定不能搞错了
5、然后就是Dao层,Dao可以分成Dao和DaoImpl两个包,我这里是分开写的,所以我会把代码分别贴出来
BaseDao.java(这个类是因为之前按照书上来的,所以建了,之后也没删除,这里可以忽略)
-
package com.jiang.dao;
-
-
import java.io.Serializable;
-
import java.util.List;
-
import java.util.Map;
-
-
public interface BaseDao<T> {
-
-
}
UserDao.java
-
package com.jiang.dao;
-
-
import java.util.List;
-
import java.util.Map;
-
-
import com.jiang.entity.User;
-
-
public interface UserDao extends BaseDao<User>{
-
public boolean findUserByName(Map map);
-
-
}
BaseDaoImpl.java
-
package com.jiang.dao.impl;
-
-
import org.apache.ibatis.session.SqlSessionFactory;
-
import org.mybatis.spring.support.SqlSessionDaoSupport;
-
import org.springframework.beans.factory.annotation.Autowired;
-
import com.jiang.dao.BaseDao;
-
-
public abstract class BaseDaoImpl<T> extends SqlSessionDaoSupport implements BaseDao<T>{
-
-
public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
-
super.setSqlSessionFactory(sqlSessionFactory);
-
}
-
-
}
这里继承了SqlSessionDaoSupport类,这个类是会话工厂的数据库连接层辅助类,通过为其注入sqlSessionFactory对象就可以直接调用getSqlSession方法获取会话对象并进行增删改查操作。
UserDaoImpl.java
-
package com.jiang.dao.impl;
-
-
import java.util.List;
-
import java.util.Map;
-
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.stereotype.Repository;
-
-
import com.jiang.dao.UserDao;
-
import com.jiang.entity.User;
-
-
-
public class UserDaoImpl extends BaseDaoImpl<User> implements UserDao{
-
-
public boolean findUserByName(Map map) {
-
// TODO Auto-generated method stub
-
if(map!=null) {
-
List<User> u=getSqlSession().selectList("com.jiang.mapper.UserMapper.selectByName", map);
-
if(!u.isEmpty()) {
-
return true;
-
}else {
-
return false;
-
}
-
}else {
-
return false;
-
}
-
}
-
-
}
6、service层,这里也是接口和实现类分开的
UserService.java
-
package com.jiang.service;
-
-
import java.io.Serializable;
-
import java.util.List;
-
import java.util.Map;
-
-
import com.jiang.entity.User;
-
-
public interface UserService {
-
public boolean findUserByName(Map map);
-
-
}
UserServiceImpl.java
-
package com.jiang.service.impl;
-
-
import java.io.Serializable;
-
import java.util.List;
-
import java.util.Map;
-
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.stereotype.Service;
-
-
import com.jiang.dao.UserDao;
-
import com.jiang.entity.User;
-
import com.jiang.service.UserService;
-
-
-
public class UserServiceImpl implements UserService{
-
-
private UserDao userDao;
-
-
public boolean findUserByName(Map map) {
-
// TODO Auto-generated method stub
-
return userDao.findUserByName(map);
-
}
-
-
-
-
-
}
7、controller层,同样还是接口和实现类分开
BaseController.java
-
package com.jiang.controller;
-
-
import java.text.DateFormat;
-
import java.text.SimpleDateFormat;
-
import java.util.Date;
-
-
import org.springframework.beans.propertyeditors.CustomDateEditor;
-
import org.springframework.web.bind.WebDataBinder;
-
import org.springframework.web.bind.annotation.InitBinder;
-
-
public abstract class BaseController {
-
-
public void initBinder(WebDataBinder binder) {
-
DateFormat dateFormat =new SimpleDateFormat("yyyy-MM-dd");
-
dateFormat.setLenient(true);
-
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat,true));
-
}
-
-
}
这里面的方法用于日期的转换,如果页面里的日期格式转换错误会报400错误
UserController.java
-
package com.jiang.controller;
-
-
import java.util.HashMap;
-
import java.util.Map;
-
-
import javax.servlet.http.HttpServletRequest;
-
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.stereotype.Controller;
-
import org.springframework.ui.Model;
-
import org.springframework.web.bind.annotation.RequestMapping;
-
-
import com.jiang.entity.User;
-
import com.jiang.service.UserService;
-
-
-
public class UserController extends BaseController{
-
-
UserService userService;
-
-
-
public String toLogin() {
-
return "/login.jsp";
-
}
-
-
public String login(User user,Model model,HttpServletRequest request) {
-
Map<String,String> map=new HashMap<String,String>();
-
map.put("name", user.getName());
-
map.put("password", user.getPassword());
-
if(userService.findUserByName(map)) {
-
request.getSession().setAttribute("user","jiang");
-
return "/admin/index.jsp";
-
}
-
model.addAttribute("errorMsg", "登录失败!账号或密码错误!");
-
return "/login.jsp";
-
-
}
-
-
}
8、接下就是登录页面了
login.jsp
-
<%@ page language="java" contentType="text/html; charset=utf-8"
-
pageEncoding="utf-8"%>
-
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
-
<!DOCTYPE html>
-
<html lang="en">
-
<head>
-
<meta charset="UTF-8">
-
<title>jiang's blog</title>
-
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/css/uploading.css">
-
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/css/bootstrap.min.css">
-
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/css/reset.css">
-
<script type="text/javascript" src="${pageContext.request.contextPath }/js/bootstrap.min.js"></script>
-
</head>
-
<body class="upload_page">
-
<div class="login">
-
<div class="top">
-
Login
-
</div>
-
<form action="login.action" method="post" onsubmit="return validate()">
-
<div class="input-group login_input">
-
<span class="input-group-addon" id="basic-addon1">
-
<span class="glyphicon glyphicon-user" aria-hidden="true"></span>
-
</span>
-
<input name="name" type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1">
-
</div>
-
<div class="input-group login_input">
-
<span class="input-group-addon" id="basic-addon1">
-
<span class="glyphicon glyphicon-asterisk" aria-hidden="true"></span>
-
</span>
-
<input name="password" type="password" class="form-control" placeholder="Password" aria-describedby="basic-addon1">
-
</div>
-
<button type="submit" class="btn btn-info login_btn">登录</button>
-
</form>
-
<div class="error"><c:if test="${errorMsg!=null }"><font color="red">${errorMsg}</font></c:if></div>
-
</div>
-
</body>
-
<script type="text/javascript">
-
-
</script>
-