您的位置:首页 > 编程语言 > Java开发

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,验证码

              
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: