request.setAttribute


  request.setAttribute("name"   "hello");进行设置,以后再进入此页面a.jsp的时候则直接用request.getAttribute("name");取得hello字符串,请问怎么实现啊?  
  我这样实现达不到效果:  
   
    String   s1   ="";  
  if   (request.getAttibute("name")==null)   {  
          request.setAttribute("name"   "hello");  
  }   else   {  
        s1   =   request.getAttribute("name");  
  }  
  ;  
    
  以上是在同一个请求时有效!一般用于请求转发!

 

分清楚以下对象的作用域:  
  servletContext  
  session  
  request  
  page  
   
  搞清以后一切都很明朗。

 

 if   (session.getAttibute("name")==null)   {  
          session.setAttribute("name","hello");  
  }   else   {  
        s1   =   session.getAttribute("name");  
  }  
  ;  
   
  或者   想要的   是    
  if   (session.getParameter("。。。")==null)   {  
          session.setAttribute("name","hello");  
  }   else   {  
        s1   =   session.getAttribute("name");  
  }

 

重要的要理解什么是一次请求!!!!!

 

request是请求。。在当前请求内有效。  
  但是你在页面中用了转向会附带request的。。因为这只是一次请求。。  
  楼主可能还没有明白HTTP的请求-相应的含义。。  
  可以查看一个各个对象的生命周期就会明白了  
   
  当你第二次打开a.jsp时是一个新请求。存在原来请求里的内容失效了。。。  
   
  可以用Session、Cookies或者数据库存储请求里的数据。。  
   
  而且要理解数据持久的概念。。

 

要实现你的功能,可以另外设一个b.jsp,a.jsp提交都跳转到b.jsp中。b.jsp中:  
  String   a   =null;  
  a   =   request.getAttribute("name");  
  if(a==null)  
  {  
        request.setAttribute("name",a);  
        response.sendRedirect("a.jsp");  
  }  
   
  现在基本上都用struts来实现了  

 

 其次request的生命周期就是在服务器端页面之间,来自客户端的请求经Servlet容器处理后,由request对象进行封装,它作为jspService()方法的一个参数由容器传递给JSP页面,因此,JSP转发时,request会随着发到下一个页面,但一旦最后一个页面处理完成,这个request的生命周期也就结束了,客户端再次提交请求Servlet又会生成一个新的request对象。  
  楼主你对第二次提交的请求request.getAttibute()当然不会得到先前保存的东西,因为不是同一个request了,如果楼主不想把东西放到session里,可以放到form的hidden域里,下个请求连form一起传。  

 

request.getParameter("companyName");是获得表单(前台页面表单中名称为companyName)提交的数据
request.getAttribute("cc")是获得你setAttribute的数据(获得是你自己存起来的参数cc的值。)
在超链接里带的参数用。。request.getParameter(参数名)

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值