移动大脑-SpringMVc搭建RestFul后台服务(三)-RestFul接口编写(模拟用户注册登录)

412 阅读8分钟
原文链接: blog.csdn.net

        接着上一篇博客《移动大脑-SpringMVc搭建RestFul后台服务(二)-配置mysql数据库》 ,已经配置好了Mysql数据库,现在开始编写RestFul接口了,模拟实现用户的注册(PUT)和登录(POST)两个接口:

还是最经典的action-service-dao结构

一、创建UserDao.java接口和实现类UserDaoImpl.java

  1. package com.ywl5320.appservice.dao;  
  2.   
  3. import com.ywl5320.appservice.bean.UserBean;  
  4.   
  5. /** 
  6.  * Created by ywl5320 on 2017/10/12. 
  7.  */  
  8. public interface UserDao {  
  9.   
  10.     /** 
  11.      * 注册 
  12.      * @param userBean 
  13.      */  
  14.     UserBean registor(UserBean userBean);  
  15.   
  16.     /** 
  17.      * 登陆 
  18.      * @return 
  19.      */  
  20.     UserBean login(String phone, String password);  
  21.   
  22.     /** 
  23.      * 根据名字获取用户信息 
  24.      * @param phone 
  25.      * @return 
  26.      */  
  27.     UserBean getUser(String phone);  
  28.   
  29. }  
package com.ywl5320.appservice.dao;

import com.ywl5320.appservice.bean.UserBean;

/**
 * Created by ywl5320 on 2017/10/12.
 */
public interface UserDao {

    /**
     * 注册
     * @param userBean
     */
    UserBean registor(UserBean userBean);

    /**
     * 登陆
     * @return
     */
    UserBean login(String phone, String password);

    /**
     * 根据名字获取用户信息
     * @param phone
     * @return
     */
    UserBean getUser(String phone);

}

  1. package com.ywl5320.appservice.dao;  
  2.   
  3. import com.ywl5320.appservice.bean.UserBean;  
  4. import org.springframework.orm.hibernate5.support.HibernateDaoSupport;  
  5.   
  6. import java.util.List;  
  7.   
  8. /** 
  9.  * Created by ywl5320 on 2017/10/12. 
  10.  */  
  11. public class UserDaoImpl extends HibernateDaoSupport implements UserDao {  
  12.   
  13.     public UserBean login(String phone, String password) {  
  14.         List<UserBean> users = (List<UserBean>) this.getHibernateTemplate().find("from UserBean where phone=? and password=?", phone, password);  
  15.         if(users != null && users.size() >  0)  
  16.         {  
  17.             return users.get(0);  
  18.         }  
  19.         return null;  
  20.     }  
  21.   
  22.     public UserBean registor(UserBean userBean) {  
  23.         this.getHibernateTemplate().save(userBean);  
  24.         return getUser(userBean.getPhone());  
  25.     }  
  26.   
  27.     public UserBean getUser(String phone) {  
  28.         List<UserBean> users = (List<UserBean>) this.getHibernateTemplate().find("from UserBean where phone=?", phone);  
  29.         if(users != null && users.size() >  0)  
  30.         {  
  31.             return users.get(0);  
  32.         }  
  33.         return null;  
  34.     }  
  35. }  
package com.ywl5320.appservice.dao;

import com.ywl5320.appservice.bean.UserBean;
import org.springframework.orm.hibernate5.support.HibernateDaoSupport;

import java.util.List;

/**
 * Created by ywl5320 on 2017/10/12.
 */
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {

    public UserBean login(String phone, String password) {
        List<UserBean> users = (List<UserBean>) this.getHibernateTemplate().find("from UserBean where phone=? and password=?", phone, password);
        if(users != null && users.size() > 0)
        {
            return users.get(0);
        }
        return null;
    }

    public UserBean registor(UserBean userBean) {
        this.getHibernateTemplate().save(userBean);
        return getUser(userBean.getPhone());
    }

    public UserBean getUser(String phone) {
        List<UserBean> users = (List<UserBean>) this.getHibernateTemplate().find("from UserBean where phone=?", phone);
        if(users != null && users.size() > 0)
        {
            return users.get(0);
        }
        return null;
    }
}

这里实现类继承了HibernateDaoSupport类,就可以使用hibernate的语句操作数据库了。

二、编写UserService.java类

  1. package com.ywl5320.appservice.service;  
  2.   
  3. import com.ywl5320.appservice.bean.RestFulBean;  
  4. import com.ywl5320.appservice.bean.UserBean;  
  5. import com.ywl5320.appservice.dao.UserDao;  
  6. import com.ywl5320.appservice.util.RestFulUtil;  
  7. import org.springframework.beans.factory.annotation.Autowired;  
  8. import org.springframework.transaction.annotation.Transactional;  
  9.   
  10. /** 
  11.  * Created by ywl5320 on 2017/10/12. 
  12.  */  
  13. @Transactional  
  14. public class UserService {  
  15.   
  16.     @Autowired  
  17.     private UserDao userDao;  
  18.   
  19.     public RestFulBean<UserBean> registorServer(UserBean userBean)  
  20.     {  
  21.         UserBean user = userDao.getUser(userBean.getPhone());  
  22.         if(user != null)  
  23.         {  
  24.             return RestFulUtil.getInstance().getResuFulBean(null 1"已经注册过了");  
  25.         }  
  26.         else  
  27.         {  
  28.   
  29.             user = userDao.registor(userBean);  
  30.             if(user != null)  
  31.             {  
  32.                 return RestFulUtil.getInstance().getResuFulBean(user, 0 "注册成功");  
  33.             }  
  34.             else{  
  35.                 return RestFulUtil.getInstance().getResuFulBean(null 1"注册失败");  
  36.             }  
  37.         }  
  38.   
  39.     }  
  40.   
  41.     public RestFulBean<UserBean> login(String phone, String password)  
  42.     {  
  43.         UserBean user = userDao.login(phone, password);  
  44.         if(user != null)  
  45.         {  
  46.             return RestFulUtil.getInstance().getResuFulBean(user, 0 "登录成功");  
  47.         }  
  48.         else  
  49.         {  
  50.             return RestFulUtil.getInstance().getResuFulBean(null 1"用户不存在");  
  51.         }  
  52.     }  
  53.   
  54. }  
package com.ywl5320.appservice.service;

import com.ywl5320.appservice.bean.RestFulBean;
import com.ywl5320.appservice.bean.UserBean;
import com.ywl5320.appservice.dao.UserDao;
import com.ywl5320.appservice.util.RestFulUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

/**
 * Created by ywl5320 on 2017/10/12.
 */
@Transactional
public class UserService {

    @Autowired
    private UserDao userDao;

    public RestFulBean<UserBean> registorServer(UserBean userBean)
    {
        UserBean user = userDao.getUser(userBean.getPhone());
        if(user != null)
        {
            return RestFulUtil.getInstance().getResuFulBean(null, 1, "已经注册过了");
        }
        else
        {

            user = userDao.registor(userBean);
            if(user != null)
            {
                return RestFulUtil.getInstance().getResuFulBean(user, 0, "注册成功");
            }
            else{
                return RestFulUtil.getInstance().getResuFulBean(null, 1, "注册失败");
            }
        }

    }

    public RestFulBean<UserBean> login(String phone, String password)
    {
        UserBean user = userDao.login(phone, password);
        if(user != null)
        {
            return RestFulUtil.getInstance().getResuFulBean(user, 0, "登录成功");
        }
        else
        {
            return RestFulUtil.getInstance().getResuFulBean(null, 1, "用户不存在");
        }
    }

}
这里用了注解@Transactional和@Autowired来自动扫描service和注入实体类。

三、在beans.xml中配置service和dao

  1. <!-- 配置server -->  
  2.     <bean id="loginService"  class="com.ywl5320.appservice.service.UserService"/>  
  3.     <!-- 配置dao -->  
  4.     <bean id="userDaoImpl"  class="com.ywl5320.appservice.dao.UserDaoImpl">  
  5.         <property name="sessionFactory"  ref="sessionFactory"></property>  
  6.     </bean>  
<!-- 配置server -->
    <bean id="loginService" class="com.ywl5320.appservice.service.UserService"/>
    <!-- 配置dao -->
    <bean id="userDaoImpl" class="com.ywl5320.appservice.dao.UserDaoImpl">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
四、编写UserAction.java
  1. package com.ywl5320.appservice.action;  
  2.   
  3. import com.ywl5320.appservice.bean.RestFulBean;  
  4. import com.ywl5320.appservice.bean.UserBean;  
  5. import com.ywl5320.appservice.service.UserService;  
  6. import org.springframework.beans.factory.annotation.Autowired;  
  7. import org.springframework.stereotype.Controller;  
  8. import org.springframework.web.bind.annotation.*;  
  9.   
  10. /** 
  11.  * Created by ywl5320 on 2017-10-2. 
  12.  */  
  13. @Controller  
  14. @RequestMapping("/user")  
  15. public class UserAction {  
  16.   
  17.     @Autowired  
  18.     private UserService userService;  
  19.   
  20.   
  21.     /** 
  22.      * 注册 
  23.      * @param userBean 
  24.      * @return 
  25.      */  
  26.     @ResponseBody  
  27.     @RequestMapping(value="/register.do", method= RequestMethod.PUT)  
  28.     public RestFulBean<UserBean> register(@RequestBody UserBean userBean)  
  29.     {  
  30.         return userService.registorServer(userBean);  
  31.     }  
  32.   
  33.     /** 
  34.      * 登录 
  35.      * @param phone 
  36.      * @return 
  37.      */  
  38.     @ResponseBody  
  39.     @RequestMapping(value="/loginbypwd.do", method= RequestMethod.POST)  
  40.     public RestFulBean<UserBean> loginByPwd(String phone, String password)  
  41.     {  
  42.         System.out.println("phone:" + phone);  
  43.         return userService.login(phone, password);  
  44.     }  
  45.   
  46. }  
package com.ywl5320.appservice.action;

import com.ywl5320.appservice.bean.RestFulBean;
import com.ywl5320.appservice.bean.UserBean;
import com.ywl5320.appservice.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

/**
 * Created by ywl5320 on 2017-10-2.
 */
@Controller
@RequestMapping("/user")
public class UserAction {

    @Autowired
    private UserService userService;


    /**
     * 注册
     * @param userBean
     * @return
     */
    @ResponseBody
    @RequestMapping(value="/register.do", method= RequestMethod.PUT)
    public RestFulBean<UserBean> register(@RequestBody UserBean userBean)
    {
        return userService.registorServer(userBean);
    }

    /**
     * 登录
     * @param phone
     * @return
     */
    @ResponseBody
    @RequestMapping(value="/loginbypwd.do", method= RequestMethod.POST)
    public RestFulBean<UserBean> loginByPwd(String phone, String password)
    {
        System.out.println("phone:" + phone);
        return userService.login(phone, password);
    }

}
注册接口:/user/register.do

登录接口:/user/loginbypwd.do

RestFulUtil.java

  1. package com.ywl5320.appservice.util;  
  2.   
  3. import com.ywl5320.appservice.bean.RestFulBean;  
  4.   
  5. /** 
  6.  * Created by ywl5320 on 2017-10-15. 
  7.  */  
  8. public class RestFulUtil<T> {  
  9.   
  10.     private RestFulUtil(){}  
  11.   
  12.     public static RestFulUtil getInstance()  
  13.     {  
  14.         return new RestFulUtil();  
  15.     }  
  16.   
  17.     public RestFulBean<T> getResuFulBean(T o, int status, String msg)  
  18.     {  
  19.         RestFulBean<T> objectRestFulBean = new RestFulBean<T>();  
  20.         objectRestFulBean.setStatus(status);  
  21.         objectRestFulBean.setMsg(msg);  
  22.         objectRestFulBean.setData(o);  
  23.         return objectRestFulBean;  
  24.     }  
  25.   
  26. }  
package com.ywl5320.appservice.util;

import com.ywl5320.appservice.bean.RestFulBean;

/**
 * Created by ywl5320 on 2017-10-15.
 */
public class RestFulUtil<T> {

    private RestFulUtil(){}

    public static RestFulUtil getInstance()
    {
        return new RestFulUtil();
    }

    public RestFulBean<T> getResuFulBean(T o, int status, String msg)
    {
        RestFulBean<T> objectRestFulBean = new RestFulBean<T>();
        objectRestFulBean.setStatus(status);
        objectRestFulBean.setMsg(msg);
        objectRestFulBean.setData(o);
        return objectRestFulBean;
    }

}

整体目录如下:


五、启动服务,移动端访问测试 1、注册:



2、注册2



3、登录



4、数据库数据




源码下载:GitHub 服务端(AppServiceRestFul)和移动端(RxJavaRetrofit)

OK,这样就完成了注册登录接口了,移动端可以顺利访问。下一篇会添加token和过滤器。~~接着看SKT vs EDG了,目测后期EDG有点难了~。