发表于: 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中,只要一个类extends了java.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
评论