zoukankan      html  css  js  c++  java
  • 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.  
  • 相关阅读:
    STL的相关知识
    有关欧拉通路/回路的一些资料整理
    差分约束
    BZOJ 2100: [Usaco2010 Dec]Apple Delivery
    BZOJ 2017: [Usaco2009 Nov]硬币游戏(A Coin Game)
    vijos 1282&1283&1284&1285 佳佳的魔法照片/魔法药水/魔杖/魔法阵
    BZOJ 1660: [Usaco2006 Nov]Bad Hair Day
    BZOJ 1602: [Usaco2008 Oct]牧场行走
    BZOJ 1647: [Usaco2007 Open]Fliptile 翻格子游戏
    BZOJ 1646: [Usaco2007 Open]Catch That Cow
  • 原文地址:https://www.cnblogs.com/ma13461749958/p/14231954.html
Copyright © 2011-2022 走看看