发表于: 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路径问题
收获:路径问题的解决,过滤器拦截器区别
评论