发表于: 2017-11-30 23:06:44

1 657


今日完成的事情:

今日完善了一下任务七的代码:

首先是修改密码模块,仿照着修真院官网的写了一个:

代码:

@RequestMapping(value = "/u/updatePassWord/{phone}", method = RequestMethod.POST)
public String updatePassWord(@PathVariable String phone, String oldPassWord, String passWord1,
                            String passWord2, Model model) {
if (oldPassWord == "" || passWord1 == "" || passWord2 == "") {
model.addAttribute("msg", "密码不能为空");
       return "error";
   }
String userPassWord = userService.showUserDetails(phone).passWord;
   String salt = userService.showUserDetails(phone).salt;
   if (!userPassWord.equals(Md5Util.getMd5((Md5Util.getMd5(oldPassWord) + salt))) ) {
model.addAttribute("msg","原密码不正确");
       return "error";
   }
if(!passWord1.equals(passWord2)){
model.addAttribute("msg","两次密码不一致");
       return "error";
   }else {
User user=new User();
       user.setPhone(phone);
       user.setPassWord(Md5Util.getMd5((Md5Util.getMd5(passWord1) + salt)));
       userService.updateUser(user);
       return "redirect:/login";
   }

}

修改头像和修改个人信息也分开了。都放在主页展示:

用a标签可以跳转到相应的页面:

<a href="${ctx}/u/details/${loginPhone}">个人信息</a><br>
<a href="${ctx}/u/updatePassWord/${loginPhone}">修改密码</a><br>
<a href="${ctx}/u/updateHead/${loginPhone}">修改头像</a><br>

还有登陆模块,当用户登陆成功用session来保存用户的登陆账号:

//把账号放入session中
HttpSession session = request.getSession();
session.setAttribute("loginPhone", phone);//用户的登陆手机号存储在session中
return "redirect:/u/home";

具体的代码太长了,不贴出来了。

上传头像上传成功,直接保存在云服务器上面,然后返回一个外链保存在数据库中,这样可以节省数据库空间:

if (file != null) {
String fileName = file.getOriginalFilename();
   aliDemo.uploadAsStream(file.getInputStream(),fileName);
   user.setHead(aliDemo.getUrl(fileName).toString());
   userService.updateUser(user);

主要的代码部分。

接下来的时间看了一下RMI。

本来是打算直接从springrmi官方文档看起,结果没有找到,然后就直接开始开案例了。

rmi是什么:

RMI(即Remote Method Invoke 远程方法调用)。在Java中,只要一个类extendsjava.rmi.Remote接口,即可成为存在于服务器端的远程对象,供客户端访问并提供一定的服务。JavaDoc描述:Remote 接口用于标识其方法可以从非本地虚拟机上调用的接口。任何远程对象都必须直接或间接实现此接口。只有在远程接口(扩展 java.rmi.Remote 的接口)中指定的这些方法才可远程使用 

然后今天试着写了一个Java rmi ,没有集成spring:

首先是服务端:

一个接口,一个实现:

public interface RmiService extends Remote {
String server(String content) throws RemoteException;
}
public class RmiServiceImpl extends UnicastRemoteObject implements RmiService {
private String name;

   public RmiServiceImpl(String name) throws RemoteException {
this.name=name;
   }

@Override
   public String server(String content) throws RemoteException {
return "server>>" + content;
   }

在这里要注意的一个问题是序列化问题,如果没有实现序列化会报错。

然后是一个main方法,用来启动服务端:

RmiService rmiService=new RmiServiceImpl("service02");
LocateRegistry.createRegistry(1234);
Naming.bind("rmi://127.0.0.1:1234/RmiService",rmiService);
System.out.println("======success======");

运行之后:

成功运行,然后这个服务会一直运行:

这里这个服务一直运行,可以让客户端调用:

然后是客户端:

另外新建一个java project(我没有集成spring,只是Java的rmi),新建一个接口,要与服务端的相同:

public interface RmiService {
String server(String content) throws RemoteException;
}

然后是main方法,调用服务端的实现类:

  RmiService rmiService = (RmiService) Naming.lookup("rmi://127.0.0.1:1234/RmiService");
   System.out.println(rmiService.server("content"));
} catch (NotBoundException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();

客户端成功调用了服务端。

明日计划的事情:

明天把Java的rmi和spring整合。

遇到的问题:

刚开始不是很理解rmi的概念,最后自己动手做了一个简单的demo之后,有点理解了,我这个demo,就是建了连个java projiect,一个模拟服务端,一个模拟客户端,最后成功调用。

收获:

通过demo,简单的了解了rmi。

我的登陆账号是:17186387659

密码:123456

任务开始时间:2017/11/23

预计完成时间:2017/12/1

延期:无

禅道:http://task.ptteng.com/zentao/my-task.html



返回列表 返回列表
评论

    分享到