发表于: 2018-01-23 10:09:54

1 627


今天完成的事情:

1.今天师兄审核任务提出了要求:

  批量套用TIles模板,我在寻找的过程中碰到了这种,虽说不合适,但是觉得算个知识点:

<tiles:insertDefinition name="index"></tiles:insertDefinition>

直接在jsp页面引入模板

但是这种方法还是不够简便,所游戏选用下面的方法:

<!--在使用的时候记得加上路径,否则所有的页面都会套用这个页面-->
<!--<definition name="*" extends="11">-->
   <!--<put-attribute name="body" value="/jsp/{1}.jsp"/>-->
<!--</definition>-->

使用通配符。{1}代表请求的原始界面,比如http://localhost:8080/slark/blog   ,则这里{1}会被替换为blog,即相当于在原blog.jsp页面下增加了一个footer部分。这样的话就很舒服。

2.搞任务五遇到问题,关于重定向和转发的,百度了一下两者的区别:

http://blog.csdn.net/u012877472/article/details/50804568

这个博客没写那么多定义,而是举例子说明,很好。我在这里总结一下两者的区别:

重定向,其实是两次request

第一次,客户端request   A,服务器响应,并response回来,告诉浏览器,你应该去B。这个时候IE可以看到地址变了,而且历史的回退按钮也亮了。重定向可以访问自己web应用以外的资源。在重定向的过程中,传输的信息会被丢失。

请求转发是服务器内部把对一个request/response的处理权,移交给另外一个对于客户端而言,它只知道自己最早请求的那个A,而不知道中间的B,甚至C、D。传输的信息不会丢失。

转发在服务器端完成的;重定向是在客户端完成的
转发的速度快;重定向速度慢。

转发的是同一次请求;重定向是两次不同请求

转发不会执行转发后的代码;重定向会执行重定向之后的代码

转发地址栏没有变化;重定向地址栏有变化

转发必须是在同一台服务器下完成;重定向可以在不同的服务器下完成。

3.学习了一波加密,发现是真的搞不懂,于是参考师兄日报,原来是直接使用加密的工具类。。。

http://z2009zxiaolong.iteye.com/blog/1562197

于是我从上面的连接里面直接复制出来加密工具类。。。过程不表。然后就是新建一个数据表,用来存放账号密码,这个也比较简单。做完了这些准备工作之后仍然没有任何头绪,百度也找不到比较好的博客啥的,于是直接先把师兄的代码拷贝过来了,跑通再理解吧。。。

这是新建的数据表

然后是加密工具类,就不贴了,都在上面了

然后和表对应的model类,也不贴了

service方法传一下吧:

packagecom.ptteng.service;

importcom.ptteng.model.User;
importorg.springframework.stereotype.Service;

@Service
public interfaceUserService {
UsergetUser(String username);
   booleancompareUser(String username,String password);
   voidinsertUser(User user);
   voidupdateLogtime(String username,longlogtime);
}

serviceImpl的话,就不贴了吧。。

dao层新添加的东西:


UsergetUser(String username);
voidinsertUser(User user);
voidupdateLogTime(@Param("username") String username,@Param("logtime")longlogTime);

因为是两个参数,用到了@Param注解,dao层加了之后,对应的mapper.xml文件也要加上对应的sql语句:

<selectid="getUser"resultType="com.ptteng.model.User">
   SELECT*FROM user WHERE username = #{username}
</select>
<updateid="updateLogTime">
   UPDATE user set logtime = #{logtime} WHERE username = #{username}
</update>
<insertid="insertUser"parameterType="com.ptteng.model.User">
   insert into user (username,password,logtime) VALUES (#{username},#{password},#{logtime})
</insert>

那么这里面有了对应的语句,还学要service层来调用:

再写一个service:

packagecom.ptteng.service;

importcom.ptteng.model.User;
importorg.springframework.stereotype.Service;

@Service
public interfaceUserService {
UsergetUser(String username);
   booleancompareUser(String username,String password);
   voidupdateLogtime(String username,longlogtime);
}

然后是serviceImpl:


importcom.ptteng.dao.PageDao;
importcom.ptteng.model.User;
importcom.ptteng.util.Md5Util;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.stereotype.Service;

@Service
public classUserServiceImplimplementsUserService {

@Autowired
   privatePageDaopageDao;

   public booleancompareUser(String username,String password) {
String pwd = Md5Util.getMd5(password);
       System.out.println(pwd);
       User user =pageDao.getUser(username);
       try{
if(user.getUsername().equals(username) && user.getpassword().equals(password)) {
return true;
           }else{
return false;
           }
}catch(Exception e) {
System.out.println(e);
           return false;
       }
}

publicUsergetUser(String username) {
User user =pageDao.getUser(username);
   return user;
   }

public voidupdateLogtime(String username, longlogtime) {
pageDao.updateLogTime(username,logtime);
   }


   }
}

  至此,基层的配置已经完成了

接下来就是在controller里面造作了:

@RequestMapping(value = "/login", method = RequestMethod.POST)
public String Login(HttpServletRequest request, HttpServletResponse response, User user, Model model) throws Exception {

//定义一个时间,也是登陆时间,插进这个用户
   Long time = System.currentTimeMillis();
   user.setLogtime(time);
   userService.updateLogtime(user.getUsername(), user.getLogtime());

   System.out.println(user);

   //定义加密需要的token
   String s = user.getUsername() + "," + time;
   //将这个字符串进行加密生成Token
   String Token = new DesUtil("xizi").encrypt(s);

   //保存到cookies
   Cookie cookie = new Cookie("Token", Token);
   //对cookies进行设置
   cookie.setMaxAge(60);
   cookie.setPath("/");
   //添加到请求
   response.addCookie(cookie);

   //service层去鉴定账号密码是不是和数据库的对应
   Boolean loginResult = userService.compareUser(user.getUsername(), user.getpassword());

   if (loginResult == true) {
System.out.println(user.getLogtime());
       return "redirect:/index";

   } else {
return "error";

   }
}

现在的确可以跑通项目,但是不是很理解这些操作为什么这样做,目前的程度是可以验证,但不知道是怎么样实现的,明天会继续加深理解。

今天遇到的问题:

对这个东西无从下手啊。。。教程也找不到合适的,就先copy大佬了,打算跑通了再去理解这些东西。至此呢,算是知道了这个加密的大概流程。

今天的收获:

接触到了MD5加密,知道了加密的大概流程以及重定向和转发的区别。

明天计划的事情

 继续推进任务五,加深理解


返回列表 返回列表
评论

    分享到