`

http://wenwen.soso.com/z/q206471895.htm?sp=1100

 
阅读更多
http://wenwen.soso.com/z/q206471895.htm?sp=1100
在线等!Java 如何实现“记住密码”
已过期 50 [ 标签:java, 记住密码, 爪哇 ] 匿名 2010-07-18 12:51
Java的C/S模式中 ,登陆界面的“记住密码”一般用什么技术实现?求源码? 问题补充:


像qq这样的 用Java怎么实现?

密码如果存在本地客户端,怎么对文件加密?

密码如果存在服务器端数据库,登录时的具体操作流程是什么样的?

收藏 推荐答案
对于我想回答的  那个问问团队名为 Kitty 的已经说了



如果是你自己写的话  这功能 就是IO流里面的  序列化 

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("D://abc.txt"))) ;

  oos.writeObject(p) ;  写入制定文件内

ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("D://abc.txt"))) ;

  Person p = (Person)ois.readObject() ;从指定文件中读出数据

至于锁  你可以用 NIO中的锁定文件   他不但可以锁定整个文件 也可以锁定 一部分

public abstract class FileLock
extends Object
表示文件区域锁定的标记。

每次通过 FileChannel 类的 lock 或 tryLock 方法获取文件上的锁定时,就会创建一个文件锁定对象。

文件锁定对象最初是有效的。通过调用 release 方法、关闭用于获取该锁定的通道,或者终止 Java 虚拟机(以先到者为准)来释放锁定之前,该对象一直是有效的。可通过调用锁定的 isValid 方法来测试锁定的有效性。

文件锁定要么是独占的,要么是共享的。共享锁定可阻止其他并发运行的程序获取重叠的独占锁定,但是允许该程序获取重叠的共享锁定。独占锁定则阻止其他程序获取任一类型的重叠锁定。一旦释放某个锁定后,它就不会再对其他程序所获取的锁定产生任何影响。

可通过调用某个锁定的 isShared 方法来确定它是独占的还是共享的。某些平台不支持共享锁定,在这种情况下,对共享锁定的请求被自动转换为对独占锁定的请求。

单个 Java 虚拟机在某个特定文件上所保持的锁定是不重叠的。要测试某个候选锁定范围是否与现有锁定重叠,可使用 overlaps 方法。

文件锁定对象记录了在其文件上保持锁定的文件通道、该锁定的类型和有效性,以及锁定区域的位置和大小。只有锁定的有效性是随时间而更改的;锁定状态的所有其他方面都是不可变的。

文件锁定以整个 Java 虚拟机来保持。但它们不适用于控制同一虚拟机内多个线程对文件的访问。

多个并发线程可安全地使用文件锁定对象。

public abstract class FileLock
extends Object
表示文件区域锁定的标记。

每次通过 FileChannel 类的 lock 或 tryLock 方法获取文件上的锁定时,就会创建一个文件锁定对象。

文件锁定对象最初是有效的。通过调用 release 方法、关闭用于获取该锁定的通道,或者终止 Java 虚拟机(以先到者为准)来释放锁定之前,该对象一直是有效的。可通过调用锁定的 isValid 方法来测试锁定的有效性。

文件锁定要么是独占的,要么是共享的。共享锁定可阻止其他并发运行的程序获取重叠的独占锁定,但是允许该程序获取重叠的共享锁定。独占锁定则阻止其他程序获取任一类型的重叠锁定。一旦释放某个锁定后,它就不会再对其他程序所获取的锁定产生任何影响。

可通过调用某个锁定的 isShared 方法来确定它是独占的还是共享的。某些平台不支持共享锁定,在这种情况下,对共享锁定的请求被自动转换为对独占锁定的请求。

单个 Java 虚拟机在某个特定文件上所保持的锁定是不重叠的。要测试某个候选锁定范围是否与现有锁定重叠,可使用 overlaps 方法。

文件锁定对象记录了在其文件上保持锁定的文件通道、该锁定的类型和有效性,以及锁定区域的位置和大小。只有锁定的有效性是随时间而更改的;锁定状态的所有其他方面都是不可变的。

文件锁定以整个 Java 虚拟机来保持。但它们不适用于控制同一虚拟机内多个线程对文件的访问。

多个并发线程可安全地使用文件锁定对象。



如果你有API 你查查 FileLock 这个类  会有你想要的



序列化  查 ObjectInputStream   ObjectOutputStream  同样会有你想要的

羅幕の悲劇り 回答采纳率:23.2% 2010-07-31 22:30 您已经评价过!好:0 您已经评价过!不好:0 相关知识
JAVA中如何实现代码重用?9回答2009-07-18java扩展真的能够实现吗?1回答2009-08-27用JAVA怎样实现1+1=3的代码1回答2012-03-05更多java序列化 加密密码相关知识>>
java序列化java对象序列化用序列化保存密码java字符串加密解密java手机加密软件java 加密java短信加密java 加密解密


答案(15)
你这个问题有些模糊!没明白?



帅的不是哥 2010-07-18 12:53 您已经评价过!好:0 您已经评价过!不好:1 一般用cookie实现。
个人觉得也可以用单独的文件存储加密后的数据,不过这样比较麻烦。
具体实现就找下相关资料就行了,不算复杂。
像QQ这样的肯定是存储在本地的,而且类似功能的论坛之类的也是存在本地的cookie里面的。
继续追问:
是对内容加密还是对文件加密?怎么加密?
补充回答:
如果使用cookie那就对cookie进行加密,

如果是你准备存到自定义的文件里,那就对文件进行加密。

关于如何加密,网上一大堆的例子,随便搜下就有哈。

默念着、幸福 回答采纳率:44.5% 2010-07-18 14:13 您已经评价过!好:0 您已经评价过!不好:0 保存cookie,MD5加密,网上有MD5的类文件,傻瓜都会用
聆聽Savage 回答采纳率:25.0% 2010-07-19 11:51 您已经评价过!好:0 您已经评价过!不好:0 c/s模式貌似不能cookie吧,一般是直接存储在本地文件中的,像qq的记住密码以及聊天记录这些都是存储在本地文件中的,至于密码加密的话,可以采用MD5技术,MD5是不可逆向转换的,就是说现目前转换了之后不能被破解回来的,所以很安全。
淡定 回答采纳率:13.3% 2010-07-20 09:47 您已经评价过!好:0 您已经评价过!不好:0 用cookie实现,

首先你用request 得到password后然后用一下代码实现:
Cookie  thepassword=new Cookie(”password“,String.valueOf(password));
                     response.addCookie(theUsername);

获取的时候用
Cookie myCookie[]=request.getCookies();
然后遍历myCookie[],找到名称为password的cookie,然后取其值。 补充回答: 楼主说的记住密码,和登录密码检测不是一回事,

记住密码的意思就是说下次登录不用输入密码就行了,代码就是我上面写的那种方式。

而密码检测是检测数据库。当用户注册的时候,注册的信息会被记录在数据库中。如果用户登录,用户名和密码会给DAO层的程序做处理,DAO层专门封装了与数据库德连接,如果检测数据库中有这个登录用户名和相匹配的密码,返回个ture值,那么用户就能够登录,如果检测不成功,返回个false顺便报错,错误信息也是自己写的。

绝对没绝对 回答采纳率:9.8% 2010-07-22 13:22 您已经评价过!好:0 您已经评价过!不好:0 在数据库中的用户表中添加一个字段 a(自定义)

a 的值为 0   说明是没记住密码的

a的值为1 说明是记住密码的

  登录的时候选择记住密码 用户信息存入cookies

a=0   就存入密码信息

a=1  就不存入用一个默认值替代

  程序启动时然后通过读取cookie里的用户信息就可以了

(密码要经过加密才行)



个人思路  。。。。没试过

   不过现在的浏览器提供这个功能的。。

科 回答采纳率:57.1% 2010-07-23 11:04 您已经评价过!好:0 您已经评价过!不好:0 如果是从c/s模式可以采用md5加密方式写到本地文件加载时在解密就ok啦。

如果是b/s模式可以用cookies保存。

252045798 2010-07-24 10:41 您已经评价过!好:0 您已经评价过!不好:0 首先得有个地方保存这串字符,IO或者数据库都行;
加密就不用说了,各种加密算法例子到网上一搜一大堆。

颠之 回答采纳率:7.7% 2010-07-26 14:23 您已经评价过!好:0 您已经评价过!不好:0 我想是这样子。

比如QQ 的记住密码



可以存在本地文件的。

然后创造一种你自己独有的加密算法和解密算法

比如把密码解析成数字 然后再将这些数字 乱除啊乱乘啊乱减的



然后读的时候或许可以这样子

把文件内容传到服务端 然后就交给服务端去解析并且判断密码正确否



或许这是愚见

问问团队 Java我的革命 共1人编辑答案 2010-07-27 04:49 您已经评价过!好:0 您已经评价过!不好:0 源码我写不出

不过qq这种绝对不是用的cookie和session

仔细看qq安装路径里面 有以你qq号码命名的文件 里面存储的就是你一些聊天信息和个人设置 包括密码 当然 这些都是经过加密过的 当然 也可以解密 不是有破解qq密码的软件吗?就是通过解密电脑里的文件获得的

Artemis 回答采纳率:44.1% 2010-07-27 21:29 您已经评价过!好:0 您已经评价过!不好:0 你写QQ肯定用到了用户实体类对不对?



既然你写的是QQ,那么肯定是传送对象的对不对?



既然你的实体类要用同网络传输,那么肯定实现了,ser。。。。(单词我记不住,但是他叫中文“序列化”)



既然你实体类实现了序列化,那么你就可以用ObjectOutputStream.writeObject(你的用户对象)



这样就能吧你的用户实体类序列化在本机(包括你的密码)



到时候你在根据他输入的QQ号改变,而去读取不同的序列化文件



你也可以自定义加密密码, 读取的时候在按照你的加密方式解密出来,



不知道你能否明白?
您已经评价过!好:0 您已经评价过!不好:0  问问专家团 Kitty 活到老,学到老! 向他求助
等级:2 共1人编辑答案 2010-07-28 16:33
楼上的楼上的 说的很对 QQ保存用户名密码什么的 是把信息写到本地的配置文件里面的~
您已经评价过!好:0 您已经评价过!不好:0  问问专家团 安靜の聽 没有最好,只有更好~ 向他求助
等级:5 共1人编辑答案 2010-07-28 16:40
cs的一定要写在property里,java有个properties类,你可以设定一个本地文件,然后读取特定的属性,或是改变一个已经存在于属性文件中的值,很简单,你不信去看吧
补充回答: 不过一定要有一定的加密机制,这是肯定的
随时间消逝 回答采纳率:14.8% 2010-07-30 15:50 您已经评价过!好:0 您已经评价过!不好:0 。。。呵呵、这个问题、我昨天才解决、用 cookie 来实现、具体核心代码如下:

这个一个页面模拟的cookie,如果你要实现登录,当用户输入用户名密码时,到控制层用
Cookie user = new Cookie("user",name+"-"+passward);
加到cookie中,然后在访问此登录页面时,就先调用
Cookie[] cookies=request.getCookies(); 看cookie中是否有user这个值,如果有就取得用户名、密码。
代码示例:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String name="nihao";
String passward="nihao";
try{
Cookie user = new Cookie("user",name+"-"+passward);
user.setMaxAge(60);
response.addCookie(user);
Cookie[] cookies=request.getCookies();
if(cookies!=null){
for(int i=0;i<cookies.length;i++){
if(cookies[i].getName().equals("user")){ 
name=cookies[i].getValue().split("-")[0];
passward=cookies[i].getValue().split("-")[1];
request.setAttribute("name",name);
request.setAttribute("pass",passward);
}
}
}
}catch(Exception e){
e.printStackTrace();
}

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<form action="test10.jsp" method="post">
<input type="text" value="${name}" name=name /></br>
<input type="text" value="${pass}" name=pass />
<input type="submit" value="提交">
</form>
</body>
</html>
补充回答:
思路都差不多、方法二如下:

前台登陆主页面的主要代码如下:

<%


Cookie[] cookies = request.getCookies();                        //得到Cookie的值


if(cookies!= null&&cookies.length > 1){

      for(int i=0; i<cookies.length; i++){
     if(cookies[i].getName().equals("userName")){
                        request.setAttribute("name", cookies[i].getValue());                //设置属性值
                }else if(cookies[i].getName().equals("passWord")){
              request.setAttribute("pass",cookies[i].getValue());
              }               

        }               
}else {                        //如果得到的Cookie的值为空
        request.setAttribute("name", "");
        request.setAttribute("pass", "");
}       
%>


<center>
        <form action="testWeb.do" method="post">
                <table>
                        <tr>        <td>用户名</td>
                        <td><input type="text" name="userName" width="150px" value="${name }"></td>
                        </tr>
                        <tr>        <td>密码</td>
                        <td><input type="password" name="passWord" width="150px" value="${pass }"></td>
                        </tr>
                        <tr>                <td></td>
                        <td>        <input type="checkbox" name="rember"  value="rem">记住密码</td>
                        </tr>
                        <tr>       
                        <td><input type="submit" value="提交"></td>        <td></td>
                        </tr>
                </table>
        </form>
</center>

后台Action中的代码如下:

TestWebActionForm taf = (TestWebActionForm)form;


if(request.getParameter("rember") != null && request.getParameter("rember").equals("rem")){


        if(taf.getUserName().equals("a")&&taf.getPassWord().equals("a")){


                Cookie cookie1 = new Cookie("userName", "a");        //添加用户名Cookie


                response.addCookie(cookie1);


                Cookie cookie2 = new Cookie("passWord", "a");        //添加密码Cookie


                response.addCookie(cookie2);


                return mapping.findForward("success");                               


        }else{


                return mapping.findForward("fail");


        }                       


}else {


        if(taf.getUserName().equals("a")&&taf.getPassWord().equals("a")){


                return mapping.findForward("success");


        }else{


                return mapping.findForward("fail");


        }


}

。。。希望你早日实现该功能哈 。。。嗯 。。。

坏o小磊呢o? 回答采纳率:36.8% 2010-08-01 23:20 您已经评价过!好:0 您已经评价过!不好:0 如果保存在服务器端数据库,我能想到的只有根据客户端的IP地址,然后服务端给这个密码了。

如果保存在本地,你就找一下StringWriter类、FileOutputStream类等几个类,再上网找一下md5或者sha1加密算法(要java实现的),就ok了。
您已经评价过!好:0 您已经评价过!不好:0  问问专家团 微软首席专家团 我们爱你们。 向他求助
等级:6 共1人编辑答案 2010-08-02 15:24
搜索答案提 问
分享到:
评论

相关推荐

    eMule VeryCD 0.48a

    2002年05月13日 一个叫做 Merkur 的人,他不满意当时的 eDonkey2000 客户端并且坚信他能做出更出色的 P2P 软件,于是便着手开发。他凝聚了一批原本在其他领域有出色发挥的程序员在他的周围,eMule 工程就此诞生。...

    玩转手机及破解3

    玩转手机可以让用户通过数据线、红外适配器或蓝牙适配器等通信装置,在PC上管理手机短信、彩信、电话本、日程、图片、铃声、游戏、文件等资料;与手机自动同步电话本、日历等数据;引导用户在PC上通过手机拨号上网。...

    问答平台网址大全.pdf

    2. **腾讯搜搜问问** (http://wenwen.soso.com) - 腾讯旗下的知识搜索系统,不仅提供问答服务,也是用户获取和分享知识的平台,对计算机科学爱好者和专业人士来说是一个有价值的资源。 3. **天涯问答** ...

    问答平台网址大全.docx

    2. **腾讯搜搜问问** (http://wenwen.soso.com/) - 腾讯旗下的知识搜索系统,提供问答服务,用户可以在这里交流信息,与他人互动。 3. **天涯问答** (http://wenda.tianya.cn/) - 由天涯社区与Google合作开发的问答...

    有关-------seo外链

    搜搜问问(http://wenwen.soso.com)** - **特点**:腾讯旗下的问答平台,用户群体广泛。 - **建议**:关注热门话题,积极参与讨论。 **6. 搜狗问答(http://wenda.sogou.com)** - **特点**:搜狗搜索引擎支持...

    win7使用答疑3000条

    http://wenwen.soso.com/z/q150314654.htm 搜搜问问 2009-8-17 win7什么时候能出正式中文版的? win7什么时候能出正式中文版的? 10月22日正式版的就上市了!正式版中包含中文版的! ...

    VPS服务器之VZ、VM、HVM虚拟机.doc

    VPS服务器之VZ、VM、HVM虚拟机VPS是利用VPS(VirtualPrivateServer)技术,...每个VPS都可分配独立公网IP地址、独立操作系统、独立超大空间、独立内存、独立CPU资源、独立HYPERLINK"http://wenwen.soso.com/z/Search.e?...

    团队名片-【编程狂】

    问问团队——编程狂 团队一直致力于编程类问题的回答,包括Java、vb、SQL等编程语言。欢迎求助! 团队地址:http://wenwen.soso.com/z/TeamHome.e?sp=260701

    搜搜问问小偷采集程序升级版 1.3.zip

    数据源是搜搜问问(wenwen.soso.com)。 搜搜问问小偷采集程序升级版 1.3 更新内容:  解决百度关键字不能获取问题更新和验证码解决 虽然没完美解决过验证码 但对出现验证码发出错误http头 减少搜索引擎索引弊端...

    Wenwen:使用 Flask 构建的类似 Quora 的网站

    host.keychmod 400 host.keyopenssl req -new -x509 -nodes -sha1 -days 365 -key host.key &gt; host.crt设置环境 virtualenv appcd appsource bin/activategit clone https://github.com/yhfyhf/Wenwen mysitecd ...

    seo外链资源

    5. 搜搜问问:wenwen.soso.com 在这些平台回答问题,提供专业见解,并在允许的情况下插入网站链接,可以增加网站的曝光度和权威性。 三、贴吧类网站 贴吧是中文社区的重要组成部分,可以吸引大量潜在用户: 1. ...

    UIImageView-AnimationForSDWebImage:一个SDWebImage 类别 加载图片有一个过度动画效果

    UIImageView-AnimationForSDWebImage一个SDWebImage 类别 加载图片有一个过度动画效果,就像网易新闻加载图片动画过渡一样用法[self.imageView sd_setImageWithURL:[NSURL URLWithString:@... placeholderImage:...

    VB 6.0 精确到毫秒的计时器 demo

    一个基于系统时间的计时器,精确到毫秒。 根据wenwen.sogou.com/z/q170447361.htm 收到启发。 代码可以访问下面的博客来查看: http://blog.csdn.net/wc250025/article/details/50579201

    i486_nt_ptc_setvars.exe

    工具类PRO/E 5.0 M60 版本 下载完 没有PTC_WF5_Corrector.exe 这各破解档 请各位大大帮忙提供此档PRO/E 5.0 M60 版本 下载完 没有PTC_WF5_Corrector.exe ... wenwen.soso.com/z/q2583133...htm 2013-3-30 - 百度快照

    精仿360问答伪静态

    &lt;rule name="ljww360:wenwen_home"&gt; &lt;match url="^(.*/)*wenda\?*(.*)"/&gt; &lt;action type="Rewrite" url="{R:1}/plugin.php?id=ljww360:wenwen&{R:2}"/&gt; &lt;/rule&gt; ``` - `&lt;match&gt;` 元素用于指定匹配模式,这里指定了...

    Visual Studio 2005 Remote Debugger 32/64位

    这个链接说的更加的详细:http://wenwen.soso.com/z/q165079372.htm 注意:win7/vsita下winsxs是没有权限往里面写东西的,所以要更改权限,这个可以网上搜索,我就不详述了。 现在已经可以正常运行debug版本的程序...

    wenke-dev:搜狗社区搜索实时开发辅助工具

    文科夫 wenke-dev是腾讯/搜狗社区搜索部实时开发辅助工具,主要用于将ES6 / 7/8,React,Preact,前端模板,CSS,图片等静态资源实时编译为浏览器中可以...script src="http://local.wenwen.sogou.com/src/js/lib/wen

    人教版《學习之友》七年级下册答案

    第一单元1从百草园到三味书屋积累运用ZoqshuichnmshisYunfihbttngsutucunkushulin初步感知1从HYPERLINK"http://wenwen.sogou.com/s

    AndroidStudio_jar_aar_aidl_demosAll

    jar包,aar包,aidl,aidl打成aar包的正确使用方式,基于Android Studio 3.2的各种demo。 配合博客https://blog.csdn.net/Mis_wenwen/article/details/83084657进行学习

    Windows 10 安装 Oracle 19c 步骤

    在本例中,提供了百度网盘的链接(https://pan.baidu.com/s/14Ofd3TZ9GSgoPR5fwD6HpA?pwd=opmi),请确保该链接有效且安全。通常,Oracle的安装包会包含多个文件,如WINDOWS.X64_193000_db_home.zip,这代表64位...

Global site tag (gtag.js) - Google Analytics