java基础--加密
2016-06-08 16:53
363 查看
摘要加密的特点:
特点一:不可逆性,即知道密文(即摘要)不能反推出明文
特点二:唯一性,即摘要是唯一的,不同的明文会生存不同的密文
//利用md5加密算法加密字符串
public static Stringencrypt(String origStr) throws NoSuchAlgorithmException{
MessageDigestmd=MessageDigest.getInstance("md5");
byte[]buf=md.digest(origStr.getBytes());
BASE64Encoderencoder=new BASE64Encoder();
Stringstr=encoder.encode(buf);
returnstr;
}
1 转发与重定向的区别
(1)转发所涉及的组件可以共享request,response对象。而重定向不可以,request,response是在请求到达容器之后创建的,一旦响应发送完毕,容器立即删除这两个对象
(2)转发的地址必须是同一个应用内部的某个地址,而重定向的地址不限制
(3)转发之后浏览器地址栏的地址不变,而重定向会变
(4)转发是一件事未完成,而重定向是一件事情已做完,在去做另一件事情。
2 状态管理
(1)什么是状态管理
将客户端(浏览器)与服务器之间多次交互当作一个整体来看,并且将多次交互所涉及的数据保存下来。
(2)如何进行状态管理
第一类方式:将状态保存在客户端
第二类方式:将状态保存在服务器端
(3)cookie技术:
1)cookie是一种客户端的状态管理技术
当浏览器向服务器发送请求的时候,服务器会将少量的数据以set-cookie消息头的方式发送给浏览器,浏览器会将这些数据保存下来。当浏览器再次访问服务器时,会将这些数据以cookie消息头的方式发送给服务器。
2)如何创建cookie?
Cookiec=new Cookie(String name,String value);
response.addCookie(c);
3)cookie的查询
Cookie[]request.getCookies();注意:该方法有可能返回null
Stringcookie.getName();
Stringcookie.getValue();
4)cookie的生存时间:
cookie.setMaxAge(intseconds);注意:单位是秒
seconds>0 : 浏览器会将cookie保存在硬盘上,超过指定的时间,会删除该cookie。
seconds< 0 : 缺省值,浏览器会将cookie保存在内存里,只要浏览器不关闭,cookie一直保存,当浏览器关闭,cookie会被清空。
seconds= 0 : 删除cookie
比如,要删除一个名叫userId的cookie:
Cookiec = new Cookie("userId","");
c.setMaxAge(0);
response.addCookie(c);
5)cookie的编码问题
cookie只能保存ascii字符,对于不合法的字符(比如中文)需要进行编码,即转换成合法的ascii字符。
6)cookie的路径问题
a 什么是cookie的路径问题?
浏览器在向服务器发送请求时,会比较cookie的路径与要访问的服务器的路径是否匹配,只有匹配的cookie才会发送给服务器。
b cookie的默认路径
默认路径等于创建该cookie的组件的路径
c 匹配规则
浏览器要访问的路径必须是cookie的路径或者其子路径时,才会发送对应的cookie。
d 设置cookie的路径
cookie.setPath(Stringpath);
比如cookie.setPath("/web07");
将cookie的路径一般设置为应用名,这样可以保证该cookie可以被该应用的其他组件都能访问到。
7)cookie的限制
a,cookie可以被用户禁止。
b,cookie不安全,敏感数据,比如密码,帐号等等需要加密。
c,cookie的大小有限制,大约是4k左右(具体大小跟浏览器有关系)。
d,cookie的个数也有限制,大约是300个(具体个数跟浏览器有关系)。
e,cookie只能够保存字符串。
(4)session技术
1)什么是session?
a,session是一种服务器端的状态管理技术。
b,当浏览器访问服务器时,服务器创建一个session对象(该对象有一个唯一的id号,称之为sessionId),服务器在默认情况下,会将sessionId以cookie的方式(set-cookie消息头)发送给浏览器,浏览器会将sessionId保存到内存。当浏览器再次访问服务器时,会将sessionId发送给服务器,服务器依据sessionId就可以找到之前创建的session对象。
2)如何获得session对象?
方式一:
HttpSessions = request.getSession(boolean flag);
当flag=true时:
服务器会先查看请求当中有没有sessionId,如果没有,则创建一个session对象。如果有,会依据sessionId查找对应的session对象,如果找到,则返回该session对象,如果找不到,则创建一个新的session对象。
当flag= false时:
服务器会先查看请求当中有没有sessionId,如果没有,会返回null。 如果有,会依据sessionId查找对应的session对象,如果找到,则返回该session对象,如果 找不到,返回null。
方式二:
HttpSessions = request.getSession();
等价于 request.getSession(true)。
3)常用方法
Stringsession.getId();
//obj类型最好实现Serializable接口,因为服务器在持久化session时,会使用java序列化协议。
session.setAttribute(Stringname,Object obj);
//如果name对应的值不存在,返回null。
Objectsession.getAttribute(String name);
//解除绑订
session.removeAttribute(Stringname);
4)session超时
所谓session的超时,指的是服务器会空闲时间过长的session对象从内存空间里删除掉。原因是,过多的session的对象会占用服务器过多的内存空间。大部分服务器都会有一个缺省的超时限制,一般是30分钟。可以修改服务器的缺省的超时限制。比如,可以修改tomcat的web.xml配置文件(conf/web.xml)
<session-config>
<session-timeout>30</session-timeout>
<
4000
span style="font-size:10px;font-weight:normal;"> </session-config>
修改完之后,需要重新启动服务器。 也可以将以上配置放到某个应用的web.xml文件当中。
另外,还有一个方法:
session.setMaxInactiveInterval(intseconds);
5)删除session
session.invalidate();
6)session案例:
a,session验证
step1,在登录成功以后,在session对象上绑订数据比如:session.setAttribute("user",user);
step2,对需要保护的资源(只有登录成功以后,才能访问的资源,比如 main.jsp) ,添加session验证代码:
Objectobj = session.getAttribute("user");
if(obj== null){
//跳转到登录页面
}
b,验证码
特点一:不可逆性,即知道密文(即摘要)不能反推出明文
特点二:唯一性,即摘要是唯一的,不同的明文会生存不同的密文
//利用md5加密算法加密字符串
public static Stringencrypt(String origStr) throws NoSuchAlgorithmException{
MessageDigestmd=MessageDigest.getInstance("md5");
byte[]buf=md.digest(origStr.getBytes());
BASE64Encoderencoder=new BASE64Encoder();
Stringstr=encoder.encode(buf);
returnstr;
}
1 转发与重定向的区别
(1)转发所涉及的组件可以共享request,response对象。而重定向不可以,request,response是在请求到达容器之后创建的,一旦响应发送完毕,容器立即删除这两个对象
(2)转发的地址必须是同一个应用内部的某个地址,而重定向的地址不限制
(3)转发之后浏览器地址栏的地址不变,而重定向会变
(4)转发是一件事未完成,而重定向是一件事情已做完,在去做另一件事情。
2 状态管理
(1)什么是状态管理
将客户端(浏览器)与服务器之间多次交互当作一个整体来看,并且将多次交互所涉及的数据保存下来。
(2)如何进行状态管理
第一类方式:将状态保存在客户端
第二类方式:将状态保存在服务器端
(3)cookie技术:
1)cookie是一种客户端的状态管理技术
当浏览器向服务器发送请求的时候,服务器会将少量的数据以set-cookie消息头的方式发送给浏览器,浏览器会将这些数据保存下来。当浏览器再次访问服务器时,会将这些数据以cookie消息头的方式发送给服务器。
2)如何创建cookie?
Cookiec=new Cookie(String name,String value);
response.addCookie(c);
3)cookie的查询
Cookie[]request.getCookies();注意:该方法有可能返回null
Stringcookie.getName();
Stringcookie.getValue();
4)cookie的生存时间:
cookie.setMaxAge(intseconds);注意:单位是秒
seconds>0 : 浏览器会将cookie保存在硬盘上,超过指定的时间,会删除该cookie。
seconds< 0 : 缺省值,浏览器会将cookie保存在内存里,只要浏览器不关闭,cookie一直保存,当浏览器关闭,cookie会被清空。
seconds= 0 : 删除cookie
比如,要删除一个名叫userId的cookie:
Cookiec = new Cookie("userId","");
c.setMaxAge(0);
response.addCookie(c);
5)cookie的编码问题
cookie只能保存ascii字符,对于不合法的字符(比如中文)需要进行编码,即转换成合法的ascii字符。
6)cookie的路径问题
a 什么是cookie的路径问题?
浏览器在向服务器发送请求时,会比较cookie的路径与要访问的服务器的路径是否匹配,只有匹配的cookie才会发送给服务器。
b cookie的默认路径
默认路径等于创建该cookie的组件的路径
c 匹配规则
浏览器要访问的路径必须是cookie的路径或者其子路径时,才会发送对应的cookie。
d 设置cookie的路径
cookie.setPath(Stringpath);
比如cookie.setPath("/web07");
将cookie的路径一般设置为应用名,这样可以保证该cookie可以被该应用的其他组件都能访问到。
7)cookie的限制
a,cookie可以被用户禁止。
b,cookie不安全,敏感数据,比如密码,帐号等等需要加密。
c,cookie的大小有限制,大约是4k左右(具体大小跟浏览器有关系)。
d,cookie的个数也有限制,大约是300个(具体个数跟浏览器有关系)。
e,cookie只能够保存字符串。
(4)session技术
1)什么是session?
a,session是一种服务器端的状态管理技术。
b,当浏览器访问服务器时,服务器创建一个session对象(该对象有一个唯一的id号,称之为sessionId),服务器在默认情况下,会将sessionId以cookie的方式(set-cookie消息头)发送给浏览器,浏览器会将sessionId保存到内存。当浏览器再次访问服务器时,会将sessionId发送给服务器,服务器依据sessionId就可以找到之前创建的session对象。
2)如何获得session对象?
方式一:
HttpSessions = request.getSession(boolean flag);
当flag=true时:
服务器会先查看请求当中有没有sessionId,如果没有,则创建一个session对象。如果有,会依据sessionId查找对应的session对象,如果找到,则返回该session对象,如果找不到,则创建一个新的session对象。
当flag= false时:
服务器会先查看请求当中有没有sessionId,如果没有,会返回null。 如果有,会依据sessionId查找对应的session对象,如果找到,则返回该session对象,如果 找不到,返回null。
方式二:
HttpSessions = request.getSession();
等价于 request.getSession(true)。
Stringsession.getId();
//obj类型最好实现Serializable接口,因为服务器在持久化session时,会使用java序列化协议。
session.setAttribute(Stringname,Object obj);
//如果name对应的值不存在,返回null。
Objectsession.getAttribute(String name);
//解除绑订
session.removeAttribute(Stringname);
4)session超时
所谓session的超时,指的是服务器会空闲时间过长的session对象从内存空间里删除掉。原因是,过多的session的对象会占用服务器过多的内存空间。大部分服务器都会有一个缺省的超时限制,一般是30分钟。可以修改服务器的缺省的超时限制。比如,可以修改tomcat的web.xml配置文件(conf/web.xml)
<session-config>
<session-timeout>30</session-timeout>
<
4000
span style="font-size:10px;font-weight:normal;"> </session-config>
修改完之后,需要重新启动服务器。 也可以将以上配置放到某个应用的web.xml文件当中。
另外,还有一个方法:
session.setMaxInactiveInterval(intseconds);
5)删除session
session.invalidate();
6)session案例:
a,session验证
step1,在登录成功以后,在session对象上绑订数据比如:session.setAttribute("user",user);
step2,对需要保护的资源(只有登录成功以后,才能访问的资源,比如 main.jsp) ,添加session验证代码:
Objectobj = session.getAttribute("user");
if(obj== null){
//跳转到登录页面
}
b,验证码
相关文章推荐
- StringTokenizer类的使用
- Java基础之图形用户界面的设计
- java实现简单的单点登录
- 执行程序的时候指定jdk和scala
- 工具类:JavaBeanUtil
- spring(6) 渲染web视图
- java基础--javascrip
- java基础--面向对象
- Java搜索工具——Lucene实例总结(一)
- JDK1.8 集合操作工具Stream的实例
- Spring MVC 源码阅读笔记
- java基础--html
- 分治算法的应用,快速排序java实现
- java基础--JDBC
- JAVA_NIO详细解析说明
- java匿名内部类使用外部变量时,外部变量必须是final,为什么?
- Java中操作配置文件
- java 文件上传 与 把文件解析成一个字节数组简单的后台示例
- eclipse无法启动的各种解决方法
- java语言的优缺点