补一个



<?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.databind.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());
 }
}


Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值