j2ee项目登录是怎么做自动登录啊? 网上搜下cookie,会出来一大把,慢慢学就可以了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 weblogic的realm 去搜一下SSO 有一些开源的产品可以用。 J2EE的自动登陆有两种实现方式,一是在客户端种cookie,二是用Session实现.cookie是保留在客户端的用户信息,Session是在服务器端的.楼主可以根据情况使用. 建议先去学习一下别人的经验,到这里问这个,我想很多人都是给你找找,这里我也给你找来一个,大致上,都是用cookie来做的,这个就是核心,然后就可以自己去想怎么做,不会就去看看别人怎么做的,就可以慢慢的学习了,呵呵,实现Java Web程序的自动登录有很多Web程序中第一次登录后,在一定时间内(如2个小时)再次访问同一个Web程序时就无需再次登录,而是直接进入程序的主界面(仅限于本机)。实现这个功能关键就是服务端要识别客户的身份。而用Cookie是最简单的身从验证。如果用户第一次登录,可以将用户名作为Cookie写到本地,代码如下:复制内容到剪贴板代码:Cookie cookie = new Cookie("user", user);cookie.setMaxAge(365 * 24 * 3600);cookie.setPath("/");response.addCookie(cookie); 当用户再次访问程序时,服务端程序应该检测这个Cookie是否存在,代码如下:复制内容到剪贴板代码:Cookie[] cookies=request.getCookies();for(Cookie cookie: cookies){ if(cookie.getName().equals(user)) { // 如果user Cookie存在,进行处理 break; }} 尽管从客户端可以获得User Cookie,但这上Cookie可能存在很长时间,而且仅凭这个Cookie就自动登录并不安全,因此,可以在服务端使用一个Session来管理用户。也就是当第一次登录成功后,就创建一个Session,并将用户的某些信息保存在Session顺。代码如下:复制内容到剪贴板代码:HttpSession session =request.getSession();session.setAttribute(user, user);session.setMaxInactiveInterval(2 * 3600); // Session保存两小时当再次访问程序时,确定了cookie存在后,就会继续验证User Session的存在,代码如下:复制内容到剪贴板代码:Cookie[] cookies=request.getCookies();for(Cookie cookie: cookies){ if(cookie.getName().equals(user)) { if(session.getAttribute(user) != null) { // 直接forward到主界面 break; } else { // forward到登录界面 } }} 虽然上面的代码可以很好地实现自动登录功能,但是当浏览器关闭,再次启动后,由于Servlet用于保存Session ID的JSESSIONID Cookie是临时的(也就是说不是持久Cookie,当浏览器关闭后,这个Cookie就会被删除),因此,需要将JSESSIONID进行持久化。代码如下:复制内容到剪贴板代码:HttpSession session = request.getSession();session.setAttribute(user, user);session.setMaxInactiveInterval(2 * 3600); // Session保存两小时Cookie cookie = new Cookie("JSESSIONID", session.getId());cookie.setMaxAge(2 * 3600); // 客户端的JSESSIONID也保存两小时session.setMaxInactiveInterval(interval)cookie.setPath("/"); response.addCookie(cookie);如果使用上面的代码,即使浏览器关闭,在两小时之内,Web程序仍然可以自动登录。如果我们自已加一个JSESSIONID Cookie,在第一次访问Web程序时,HTTP响应头有两个JSESSIONID,但由于这两个JSESSIONID的值完全一样,因此,并没有任何影响。如果在响应头的Set-Cookie字段中有多个相同的Cookie,则按着path和name进行比较,如果这两个值相同,则认为是同一个Cookie,最后一个出现的Cookie将覆盖前面相同的Cookie,如下面的两个Cookie,最后一个将覆盖前一个:Set-Cookie: JSESSIONID=DDB2274CAC6739E1D6747B0043D5D90E; Path=/webSet-Cookie: JSESSIONID=mysession; Expires=Thu, 05-Jun-2008 05:02:50 GMT; Path=/web 由于下面两个Cookie的path不同,因此,它们是完全不同的两个Cookie:Set-Cookie: JSESSIONID=DDB2274CAC6739E1D6747B0043D5D90E; Path=/web1Set-Cookie: JSESSIONID=mysession; Expires=Thu, 05-Jun-2008 05:02:50 GMT; Path=/web2 cookie.getName().equals(user)这样能比吗?user不是值吗?cookie.getName()是得到名字的. ANT 编译工程错误“编码 GBK 的不可映射字符”警告 ■■跪求■■JAVA实现 CRC16■。已经有C 和 C#版本了。仅做成JAVA版本即可 Google AppEngine的问题access denied struts html标签的使用。 如何在Red Linux下装J2EE环境 连接oracle出错 axis的客户端调用的问题 JBOSS 4下怎样使用类似TOMCAT的虚拟目录 java通过JNI调用VC下写的一个MFC扩展DLL,出错!请指教! 用resin能不能使用EJB? 【求SSH书籍】 Struts配置文件的疑问
cookie是保留在客户端的用户信息,Session是在服务器端的.
楼主可以根据情况使用.
这里我也给你找来一个,大致上,都是用cookie来做的,这个就是核心,然后就可以自己去想怎么做,不会就去看看别人怎么做的,就可以慢慢的学习了,
呵呵,实现Java Web程序的自动登录
有很多Web程序中第一次登录后,在一定时间内(如2个小时)再次访问同一个Web程序时就无需再次登录,而是直接进入程序的主界面(仅限于本机)。实现这个功能关键就是服务端要识别客户的身份。而用Cookie是最简单的身从验证。
如果用户第一次登录,可以将用户名作为Cookie写到本地,代码如下:
复制内容到剪贴板
代码:
Cookie cookie = new Cookie("user", user);
cookie.setMaxAge(365 * 24 * 3600);
cookie.setPath("/");
response.addCookie(cookie);
当用户再次访问程序时,服务端程序应该检测这个Cookie是否存在,代码如下:
复制内容到剪贴板
代码:
Cookie[] cookies=request.getCookies();
for(Cookie cookie: cookies)
{
if(cookie.getName().equals(user))
{
// 如果user Cookie存在,进行处理
break;
}
} 尽管从客户端可以获得User Cookie,但这上Cookie可能存在很长时间,而且仅凭这个Cookie就自动登录并不安全,因此,可以在服务端使用一个Session来管理用户。也就是当第一次登录成功后,就创建一个Session,并将用户的某些信息保存在Session顺。代码如下:
复制内容到剪贴板
代码:
HttpSession session =request.getSession();
session.setAttribute(user, user);
session.setMaxInactiveInterval(2 * 3600); // Session保存两小时当再次访问程序时,确定了cookie存在后,就会继续验证User Session的存在,代码如下:
复制内容到剪贴板
代码:
Cookie[] cookies=request.getCookies();
for(Cookie cookie: cookies)
{
if(cookie.getName().equals(user))
{
if(session.getAttribute(user) != null)
{
// 直接forward到主界面
break;
}
else
{
// forward到登录界面
}
}
} 虽然上面的代码可以很好地实现自动登录功能,但是当浏览器关闭,再次启动后,由于Servlet用于保存Session ID的JSESSIONID Cookie是临时的(也就是说不是持久Cookie,当浏览器关闭后,这个Cookie就会被删除),因此,需要将JSESSIONID进行持久化。代码如下:
复制内容到剪贴板
代码:
HttpSession session = request.getSession();
session.setAttribute(user, user);
session.setMaxInactiveInterval(2 * 3600); // Session保存两小时
Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(2 * 3600); // 客户端的JSESSIONID也保存两小时
session.setMaxInactiveInterval(interval)
cookie.setPath("/");
response.addCookie(cookie);如果使用上面的代码,即使浏览器关闭,在两小时之内,Web程序仍然可以自动登录。
如果我们自已加一个JSESSIONID Cookie,在第一次访问Web程序时,HTTP响应头有两个JSESSIONID,但由于这两个JSESSIONID的值完全一样,因此,并没有任何影响。如果在响应头的Set-Cookie字段中有多个相同的Cookie,则按着path和name进行比较,如果这两个值相同,则认为是同一个Cookie,最后一个出现的Cookie将覆盖前面相同的Cookie,如下面的两个Cookie,最后一个将覆盖前一个:
Set-Cookie: JSESSIONID=DDB2274CAC6739E1D6747B0043D5D90E; Path=/web
Set-Cookie: JSESSIONID=mysession; Expires=Thu, 05-Jun-2008 05:02:50 GMT; Path=/web
由于下面两个Cookie的path不同,因此,它们是完全不同的两个Cookie:
Set-Cookie: JSESSIONID=DDB2274CAC6739E1D6747B0043D5D90E; Path=/web1
Set-Cookie: JSESSIONID=mysession; Expires=Thu, 05-Jun-2008 05:02:50 GMT; Path=/web2
这样能比吗?
user不是值吗?
cookie.getName()是得到名字的.