发表于: 2017-10-21 22:49:58

2 677


今日完成:

  解决昨日问题1,样式无法加载问题.

首先直接访问jsp页面能全部加载,但是通过tiles后,全部加载失败...猜想css link连接路径问题,添加绝对路径!成功!但是图片有加载不出来,同样的问题,对所有图片的src 同样添加绝对路径.是所有!


<link rel="stylesheet" href="${pageContext.request.contextPath}/css/task8-three.css">
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/task8-two.css">
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/task8-home.css">

这里采用通配符,方便配置

完美,在将加载页面时,从mysql查询传出数据.增加两条查询sql语句.

测试页面2这边就意思了一下




这里为了完美,加一个默认首页的拦截

测试完美部署到服务器后又出了问题,出现如下情况


但是更换到chrom浏览器 测试成功!

这里就是前端的锅了,我不接了.......提交task4



来到task5


根据步骤2,自己写了一个过滤器玩,进行拦截进行权限判定,这里只有2个页面就很方便.

根据需求

要求用户必须登录才能访问的url统一增加前缀 /u/,这样我单独再建立一个controller,前缀为/u,将过滤器拦截地址写为/u/


先暂时还用session进行校验,写过滤器

在web.xml文件中加载过滤器文件,并设置过滤内容,这里要注意一定要写在核心控制器前面!

<!--配置登录验证过滤器-->
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>cn.ssm.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>


开始测试,未登录下被拦截跳转到错误提示界面,登录成功后成功跳转!


但根据要求这里应当使用拦截器,做一下对比说明


Java过滤器与SpringMVC拦截器之间的关系与区别

  过滤器和拦截器的区别:

  ①拦截器是基于Java的反射机制的,而过滤器是基于函数回调。

  ②拦截器不依赖与servlet容器,过滤器依赖与servlet容器。

  ③拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。

  ④拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。

  ⑤在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。

  ⑥拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。



执行顺序:过滤前 – 拦截前 –DispatcherServlet– 拦截后 – 过滤后。个人认为过滤是一个横向的过程,首先把客户端提交的内容进行过滤(例如未登录用户不能访问内部页面的处理);过滤通过后,拦截器将检查用户提交数据的验证,做一些前期的数据处理,接着把处理后的数据发给对应的Action;Action处理完成返回后,拦截器还可以做其他过程(还没想到要做啥),再向上返回到过滤器的后续操作。








回到步骤1,将要使用的是4个东西:cookie,Token,md5和des.



Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992)。

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。

MD5算法具有以下特点:

1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

2、容易计算:从原数据计算出MD5值很容易。

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。


http://blog.csdn.net/liu1782291245/article/details/73467266典型的轮子,不造了

MD5的特点不可逆向解密!

创建加密工具类,在注册时对密码进行md5加密存储到数据库,在登录时从前端取出密码,后台在加密后与数据库对比查看是否一致!

import java.security.MessageDigest;

public class AppMD5Util {
/**
    * 对字符串md5加密(小写+字母)
    *
    * @param str 传入要加密的字符串
    * @return  MD5加密后的字符串
    */
   public static String getMD5(String str) {
try {
// 生成一个MD5加密计算摘要
           MessageDigest md = MessageDigest.getInstance("MD5");
// 计算md5函数
           md.update(str.getBytes());
// digest()最后确定返回md5 hash值,返回值为8为字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符
           // BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值
           return new BigInteger(1, md.digest()).toString(16);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}

测试,注册后.

进行登录操作


加密成功



这里对jsp 9大对象4大域很熟悉,但是cookie是什么还不了解,先学习!

核心步骤认为是3步

①新建    在后端controller新建cookie并将值存放到cookie中

②传出    通过HttpServletResponse响应返回给浏览器,浏览器保存到本地

③拿取    通过HttpServletRequest从请求头信息中拿取cookie,进行后续校验等操作


今天就到这了



明日计划:争取提交task5


问题:不少.还有url路径问题


收获:路径问题的解决,过滤器拦截器区别


返回列表 返回列表
评论

    分享到