用户登录业务流程

用户登录业务流程

在这里插入图片描述

SSM的web.xml文件视图解析器对视图进行过滤

dao层

UsersDao.java

public interface UsersDao {

    Users queryByNameAndPass(String name,String pass);
}

注意参数的传递方式:https://blog.csdn.net/weixin_34375356/article/details/112440218

UsersDao.xml

id要与接口的方法名相同, sql语句中的#{变量名} 要与controller层中接收的参数名保持一致

<?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.dao.UsersDao">

    <resultMap type="com.entity.Users" id="UsersMap">
        <result property="uid" column="uid" jdbcType="INTEGER"/>
        <result property="name" column="name" jdbcType="VARCHAR"/>
        <result property="pass" column="pass" jdbcType="VARCHAR"/>
        <result property="tel" column="tel" jdbcType="VARCHAR"/>
        <result property="addr" column="addr" jdbcType="VARCHAR"/>
    </resultMap>

    <!--根据姓名和密码查询用户-->
    <select id="queryByNameAndPass" resultMap="UsersMap">
        select
          uid, name, pass, tel, addr
        from users
        where name = #{name} and pass = #{pass}
    </select>
    </mapper>

Spring-mybatis.xml文件

配置映射扫描,可以扫描dao包下的所有资源,以及配置mapper.xml文件路径

dao层的测试

package com.service.impl;

import com.dao.UsersDao;
import com.entity.Users;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import static org.junit.Assert.*;
@RunWith(SpringJUnit4ClassRunner.class)
//告诉junitspring配置文件的位置
@ContextConfiguration({"classpath:mapper/UsersDao.xml","classpath:/spring-mybatis.xml"})
public class UsersServiceImplTest {


    @Autowired
    private  UsersDao usersDao;


    @Test
    public void queryByNameAndPass() {
        Users fengfeng = usersDao.queryByNameAndPass("fengfeng", "999999");
        System.out.println(fengfeng);

    }

    @Test
    public void queryById() {
        Users users = usersDao.queryById(1);
        System.out.println(users);
    }
}

service层

业务层编写接口处理CRUD

public interface UsersService {
    Users queryByNameAndPass(String name,String pass);
    }

接口实现类

@Service("usersService")
public class UsersServiceImpl implements UsersService {
    //可以用@Autowired或者@Resource
    @Resource
    private UsersDao usersDao;

    @Override
    public Users queryByNameAndPass(String name, String pass) {
        return usersDao.queryByNameAndPass(name,pass);
    }
}

spring-mvc.xml文件

对service以及controller进行包扫描,引入spring-mybatis的配置文件:ssm整合的特点是将mybatis交给spring管理

controller层

controller层中接收的参数要与异步传递的参数名保持一致

//@RestController
@Controller
@RequestMapping("users")
public class UsersController {
    /**
     * 服务对象
     */
    @Resource
    private UsersService usersService;

//异步请求
@RequestMapping("/login")

    public @ResponseBody Object login(String name,String pass){
//如果使用的是map封装参数
    Users users = usersService.queryByNameAndPass(name, pass);

    ReturnObject returnObject = new ReturnObject();
    //根据查询结果生成响应信息
    if(users==null){
        //登录失败账号或者密码错误
        returnObject.setCode("0");
        returnObject.setMessage("账号或者密码错误");
    }else {
        returnObject.setCode("1");
        //登录成功
    }
    return returnObject;
    }
}

封装的实体类

package com.commons;

public class ReturnObject {
    private String code;//处理成功或者失败的标记
    private String message;
    private Object retDate;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Object getRetDate() {
        return retDate;
    }

    public void setRetDate(Object retDate) {
        this.retDate = retDate;
    }
}

前端longin.jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>login</title>
    <script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
 <script type="text/javascript">
     $(function () {
//给登录按钮添加单击事件
         $("#loginBtn").click(function () {
//收集参数
//              获取输入框中的值利用jquery
            var loginname = $("#loginname").val();
            var loginpass= $("#loginpass").val();
            //表单验证
             if(loginname==""){
                 alert("用户名不能为空");
                 return;
             }
             if(loginpass==""){
                 alert("密码不能为空");
                 return;
             }
             //发送请求
             $.ajax({
                 url:'/login',
                 //data参数名可任意但要与controller层中的形参保持一致
                 data:{
                     name:loginname,
                     pass:loginpass

                 },
                 type:'post',
                 dataType:'json',
                 success:function (data) {
                     if(data.code==1){
                         //成功跳转到成功页面  跳controller 同步:超链接  地址栏 表单
                         window.location.href="/loginController"
                     }else {
                         //提示信息
                         $("#msg").html(data.message);
                     }
                 }
             });
        });
     });
 </script>
</head>
<body>
<form method="post" action="/users/login">
    <input type="text" name="name" id="loginname"><p/>
    <input type="password" name="pass" id="loginpass"><p/>
    <span id="msg"></span>
    <input type="button" value="登录" id="loginBtn">

</form>
</body>
</html>

异步跳入logincontroller

@Controller
public class LoginContrller {
    @RequestMapping("/loginController")
    public  String success(){
        return "success";
    }

在Spring-mvc.xml配置文件中配置去后缀(如果没有配置则写页面全地址)

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/" />
</bean>
ller")
    public  String success(){
        return "success";
    }

在Spring-mvc.xml配置文件中配置去后缀(如果没有配置则写页面全地址)

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/" />
</bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值