关于cookie的问题 我现在做的一个网上购物的项目,其中要求实现用Cookies来记录用户访问了那些商品,并要求用户访问网页是可以出现用户近期查看的商品,我这个项目是用struts+dao来实现的,我想知道各部分的代码怎么写,那些是写在action中,哪些是写在jsp中谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 好象不行吧,如果用户浏览器禁用cookie或时常清cookie的话, 你这个功能就没办法实现了,给个解决方法:当用户没次查看商品时写到数据库里,当用户等陆时就显示。不过不知道这样是否合理,不过肯定能够满足你的需求。 # <% Cookie c = new Cookie("username", "Linda"); c.setComment("A test cookie"); c.setMaxAge(3600); response.addCookie(c); %> 这个就可以写入cookie了。读取的你自己找吧。目前禁止coookie的并不多, 你给我的代码我以知道了,就是不知道要写在那里,我使用struts框架的,你给我的代码是不是要写在action中呢? 写个cookieUtil类嘛!用户近期查看的商品时,你action就调用cookieUtil的你cookie的商品id public class CookieAction extends Action { public ActionMapping execute(ActionForward mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { Cookie cookie = new Cookie("name", "value"); response.addCookie(cookie); }}别忘了导入类 这里是将cookie创建并放入客户端,但是怎么从客户端将cookie取出来呢,是在jsp上取还是在action中取呢? 但是怎么从客户可以用jsp读取啊 public class CookieAction extends Action { public ActionMapping execute(ActionForward mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // request.getCookies();得到本次提交的cookies Cookie cookie = new Cookie("name", "value"); response.addCookie(cookie); }} 转帖有很多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(2*3600);cookie.setPath("/"); response.addCookie(cookie);如果使用上面的代码,即使浏览器关闭,在两小时之内,Web程序仍然可以自动登录。 乍看之下很好,如果所有的用户都放在session里,那服务器还受的了? csdn得验证就是直接读cookie得,不通过服务器验证。因为不管客户端怎么改,服务器端验证都还在所以楼上的验证只适用于流量较小的网站。 不用每浏览一样商品就更新一次数据库,可以把浏览过的商品 ID 先存 Session 中的一个列表里,什么时候等用户注销了在一次性存入数据库。 STRUTS不就是要实现MVC分层实现嘛,ACTION中调用DAO操作数据库,在JSP中只做显示的操作,嘿嘿,刚刚弄完你说的那个项目 <% Cookie c = new Cookie("username", "Linda"); c.setComment("A test cookie"); c.setMaxAge(3600); response.addCookie(c); %> 初学DWR(版本为DWR3)自已写了个polling的demo不成功,有些问题弄不明白 java 在线购物系统 Servlet中导入javax出错 现在急需大家的帮助 如何用javascrip打开一个新的网页 请教:如何实现在页面编辑框中保存并能显示多个以前输入的数据,急!!! JB适合开发javabean吗? 请教TOMCAT中文问题 为什么javascript代码实现的跳转操作失效 在使用微博第三方登录的时候,没有授权就直接跳转 请问这是报的什么错? 今天发现,baidu也支持类似google的ajax输入提示功能拉
给个解决方法:当用户没次查看商品时写到数据库里,当用户等陆时就显示。不过不知道这样是否合理,不过肯定能够满足你的需求。
Cookie c = new Cookie("username", "Linda");
c.setComment("A test cookie");
c.setMaxAge(3600);
response.addCookie(c);
%> 这个就可以写入cookie了。读取的你自己找吧。目前禁止coookie的并不多,
用户近期查看的商品时,你action就调用cookieUtil的你cookie的商品id
public ActionMapping execute(ActionForward mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
Cookie cookie = new Cookie("name", "value");
response.addCookie(cookie);
}
}
别忘了导入类
可以用jsp读取啊
public ActionMapping execute(ActionForward mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
// request.getCookies();得到本次提交的cookies
Cookie cookie = new Cookie("name", "value");
response.addCookie(cookie);
}
}
有很多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(2*3600);
cookie.setPath("/");
response.addCookie(cookie);
如果使用上面的代码,即使浏览器关闭,在两小时之内,Web程序仍然可以自动登录。
因为不管客户端怎么改,服务器端验证都还在
所以楼上的验证只适用于流量较小的网站。
不用每浏览一样商品就更新一次数据库,可以把浏览过的商品 ID 先存 Session 中的一个列表里,什么时候等用户注销了在一次性存入数据库。
Cookie c = new Cookie("username", "Linda");
c.setComment("A test cookie");
c.setMaxAge(3600);
response.addCookie(c);
%>