1: <%@ page contentType="text/html;charset=gb2312"%> 
<html> 
<head> 
<title>实现简单购物车1 </title> 
</head> 
<body> 
<center> 
<% 
session.setAttribute("product","54寸液晶电视机"); 
session.setAttribute("price","10000"); 
session.setAttribute("chanpin",session.getAttribute("product")+","); 
  session.setAttribute("jiaqian",session.getAttribute("price")+","); 
  out.print(session.getAttribute("chanpin")+" <br>"); 
  out.print(session.getAttribute("jiaqian")+" <br>"); 
  %> 
  <a href="test40.jsp">去买计算机 </a> 
  </center> </body> 
  </html> 
上述红色的部分换成这样写: 
<%@ page contentType="text/html;charset=gb2312"%> 
<html> 
<head> 
<title>实现简单购物车1 </title> 
</head> 
<body> 
<center> 
<%//初始化session对象 
if(session.getAttribute("flag")==null){ 
session.setAttribute("flag","ok"); 
session.setAttribute("product",""); 
session.setAttribute("price",""); 

session.setAttribute("chanpin",session.getAttribute("product")+"54寸液晶电视机,"); 
  session.setAttribute("jiaqian",session.getAttribute("price")+"10000,"); 
  out.print(session.getAttribute("chanpin")+" <br>"); 
  out.print(session.getAttribute("jiaqian")+" <br>"); 
  %> 
  <a href="test40.jsp">去买计算机 </a> 
</center> </body> 
  </html> 
这样写都可以通过编译且一样,我就想问一下是不是无论在什么样的编译要求下,这两种编译方式都可以相互使用,还是在一些情况下只能用第一种(第二种),其他情况用另一种。 
还有这两句是什么意思呀:if(session.getAttribute("flag")==null) 
session.setAttribute("flag","ok"); 
躬谢大家了!

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【gjk11】截止到2008-06-23 08:15:18的历史汇总数据(不包括此帖):
    发帖数:3                  发帖分:70                 
    结贴数:2                  结贴分:40                 
    未结数:1                  未结分:30                 
    结贴率:66.67 %            结分率:57.14 %            
    楼主加油
      

  2.   

    没什么区别啊,第二种只不过是加了一个if判断而已啊
    楼主可以看看api
      

  3.   

    session是对应用户与服务器会话的一个变量,对应服务器内存里面一片内存。1.这样写都可以通过编译且一样,我就想问一下是不是无论在什么样的编译要求下,这两种编译方式都可以相互使用,还是在一些情况下只能用第一种(第二种),其他情况用另一种。
    你的这段程序没有什么特别的意思。无非就是往session里面存一些对象。只要语法没有错误编译都能通过。而你写的这两段程序都没有语法错误,所以编译都通过了。2.还有这两句是什么意思呀:if(session.getAttribute("flag")==null) 
    session.setAttribute("flag","ok"); flag一般用做表示“标志位”一般用来标志某些变量是否已经完成,或者有效,失效等。
    你的程序里面的标志位用来表示session是否存储过product和price
    if(session.getAttribute("flag")==null) //判断session是否存储了标志位,也就是是否存储过product和pricesession.setAttribute("flag","ok"); //设置标志位,证明sessoin已经存储过product和price 下次访问if(session.getAttribute("flag")==null)时判断条件就不一样了。
      

  4.   

    举个比较常用的例子(用户登录):一般做法,如果用户登录成功会将用户登录信息保存在session里,为了站点的安全性.
    如果用户没用通过登录界面,而是直接方法站点的某个页面,一般用if(session.getAttribute("username")==null)来判断用户是否登录或者是否登录成功.
    所以要使用哪种方式,是根据需求来制定的.楼书所说的两种情况并没什么大的区别.if(session.getAttribute("flag")==null) 来判断session中是否存在flag这个属性,如果不存在,则通过session.setAttribute("flag","ok")来设置flag属性.
      

  5.   

    看看API SESSION COOKIE  等的区别
      

  6.   

    第一种写法
    session.setAttribute("product","54寸液晶电视机");
    session.setAttribute("price","10000");
    和第二种写法
    session.setAttribute("product","");
    session.setAttribute("price","");
    你可以发现都是对session的属性product和price赋值。他们不同的就是第二种赋的是空值,第一种有值。
    关于
    if(session.getAttribute("flag")==null){
    session.setAttribute("flag","ok"); 
    这个代码,我想flag大约是一个是否登录的标志
    一般在有权限的网站都要对页面进行是否登录的验证,如果没有登录,则跳到登录页面或者不能做某些操作。
    只是你这里给的代码太少,还看不出flag的主要作用是什么。