您的位置:首页 > 其它

补一个

2016-03-02 23:21 274 查看

<?xml version="1.0" encoding="UTF-8" ?> 

<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"     

 "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">

 

<mapper namespace="org.tarena.note.dao.NoteBookDao">

 <select id="findByUserId" parameterType="string" resultType="org.tarena.note.entity.NoteBook">

   select * from cn_notebook where cn_user_id=#{userId}

  </select>

  <select id="findByNameAndUserId" parameterType="org.tarena.note.entity.NoteBook" resultType="org.tarena.note.entity.NoteBook">

   select * from cn_noteBook where cn_user_id=#{cn_user_id} and cn_notebook_name=#{cn_notebook_name}

  </select>

 

 

</mapper>

package org.tarena.note.service;

import org.tarena.note.entity.NoteResult;

import org.tarena.note.entity.User;

public interface UserService {

 

 public NoteResult checkLogin(String name, String password);

 

 public NoteResult checkLogin(String author);

 

 public NoteResult registUser(User user);

}

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"     

 "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">

 

 <mapper namespace="org.tarena.note.dao.UserDao">

  <select id="findByName" parameterType="string"

    resultType="org.tarena.note.entity.User">

   select * from cn_user where cn_user_name=#{name}

  </select>

  

  <insert id="save" parameterType="org.tarena.note.entity.User">

   insert into cn_user(cn_user_id,cn_user_name,cn_user_password,cn_user_token,cn_user_desc)

   values(#{cn_user_id},#{cn_user_name},#{cn_user_password},#{cn_user_token},#{cn_user_desc})

  </insert>

  

  <update id="updateToken" parameterType="map">

   update cn_user set cn_user_token=#{userToken}

   where cn_user_id=#{userId}

  </update>

 </mapper>

package org.tarena.note.dao;

import java.util.Map;

import org.tarena.note.entity.User;

public interface UserDao {

 

 public User findByName(String name);

 

 public int save(User user);

 

 public int updateToken(Map<String,Object> para);

}

package org.tarena.note.service;

import org.tarena.note.entity.NoteResult;

import org.tarena.note.entity.User;

public interface UserService {

 

 public NoteResult checkLogin(String name, String password);

 

 public NoteResult checkLogin(String author);

 

 public NoteResult registUser(User user);

}

package org.tarena.note.service.impl;

import java.io.Serializable;

import java.util.HashMap;

import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import org.tarena.note.dao.UserDao;

import org.tarena.note.entity.NoteResult;

import org.tarena.note.entity.User;

import org.tarena.note.exception.NoteException;

import org.tarena.note.service.UserService;

import org.tarena.note.util.NoteUtil;

import com.sun.org.apache.xml.internal.security.utils.Base64;

@Service("userService")

public class UserServiceImpl implements UserService, Serializable {

 @Autowired

 private UserDao userDao;

 

 public NoteResult checkLogin(String name, String password) {

  NoteResult result = new NoteResult();

  User user = userDao.findByName(name);

  if(user == null){

   result.setStatus(1);

   result.setMsg("用户名不存在!");

  }else{

   String md5_pwd = NoteUtil.md5(password);

   //System.out.println(md5_pwd);

   //System.out.println(user.getCn_user_password());

   if(user.getCn_user_password().equals(md5_pwd)){

    result.setStatus(0);

    result.setMsg("用户名和密码正确");

    //传出userId和用户token令牌

    String token = NoteUtil.createToken();

    Map<String,Object> data = new HashMap<String, Object>();

    data.put("userToken",token);

    data.put("userId",user.getCn_user_id());

    result.setData(data);

    

    //将令牌号更新到数据表cn_user

    userDao.updateToken(data);

   }else{

    result.setStatus(2);

    result.setMsg("密码不正确");

   }

  }

  return result;

 }

 

 public NoteResult checkLogin(String author){

  try{

   //解析身份信息,获取"Basic 加密消息"部分的消息

   String base64_msg = author.split(" ")[1];

   //System.out.println("密文:"+base64_msg);

   //将"加密消息"还原成明文"用户名:密码"

   byte[] output =

    Base64.decode(base64_msg);

   String msg = new String(output,"UTF-8");

   //System.out.println("明文:"+msg);

   //切割"用户名:密码"获取用户名和密码信息

   String name = msg.split(":")[0];

   String password = msg.split(":")[1];

   //System.out.println("用户名:"+name);

   //System.out.println("密码:"+password);

   //检查用户名和密码正确性

   NoteResult result = checkLogin(

     name, password);

   return result;

  }catch(Exception ex){

   throw new NoteException("身份验证错误");

  }

 }

 public NoteResult registUser(User user) {

  //传递用户名和密码,昵称

  //检测用户名是否重复

  NoteResult result = new NoteResult();

  User u = userDao.findByName(user.getCn_user_name());

  if(u != null){

   result.setStatus(1);

   result.setMsg("用户名被占用");

   return result;

  }

  

  //设置 ID,密码加密

  String userId = NoteUtil.createId();

  user.setCn_user_id(userId);

  String md5_pwd = NoteUtil.md5(user.getCn_user_password());

  user.setCn_user_password(md5_pwd);

  userDao.save(user);

  result.setStatus(0);

  result.setMsg("注册成功");

  return result;

 }

}

package org.tarena.note.web.controller.user;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import org.tarena.note.entity.NoteResult;

import org.tarena.note.service.UserService;

@Controller

@RequestMapping("/user")

public class UserLoginController {

 

 @Autowired

 private UserService userService;

 

 //对应/user/login.do

 @RequestMapping("/login")

 @ResponseBody     //该注解返回json结果: {:}

 public NoteResult execute(HttpServletRequest request){

  String author = request.getHeader("Authorization");

  NoteResult result = userService.checkLogin(author);

  return result;

 }

}

package org.tarena.note.web.controller.user;

import org.junit.Assert;

import org.junit.Before;

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 org.springframework.test.web.servlet.MockMvc;

import org.springframework.test.web.servlet.MvcResult;

import org.springframework.test.web.servlet.RequestBuilder;

import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;

import org.springframework.test.web.servlet.result.MockMvcResultHandlers;

import org.springframework.test.web.servlet.result.MockMvcResultMatchers;

import org.springframework.test.web.servlet.setup.MockMvcBuilders;

import org.tarena.note.entity.NoteResult;

import com.fasterxml.jackson.dat
8fe7
abind.ObjectMapper;

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations={"classpath:applicationContext.xml"})

public class UserLoginControllerTest {

 //注入要测试的controller

 @Autowired

 private UserLoginController controller;

 //发送http测试请求

 private MockMvc mock;

 

 @Before

 public void init(){

  mock = MockMvcBuilders.standaloneSetup(controller).build();

 }

 

 @Test

 public void test1() throws Exception{

  RequestBuilder request =  MockMvcRequestBuilders.post("/user/regist.do")

  .param("cn_user_name", "demo")

  .param("cn_user_password", "123456");

  

  //发送一个http请求

  MvcResult result =  mock.perform(request).andDo(MockMvcResultHandlers.print()).andExpect(MockMvcResultMatchers.status().isOk()).andReturn();

  

  //提取json字符串

  String jsonStr = result.getResponse().getContentAsString();

  System.out.println(jsonStr);

  

  //使用断言判断

  ObjectMapper mapper = new ObjectMapper();

  NoteResult noteResult = mapper.readValue(jsonStr,NoteResult.class);

  Assert.assertEquals(1, noteResult.getStatus());

 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: