page,session,application的请求区别+page,session的参数放置与获取

本文详细阐述了Web开发中page、session与application的作用域区别及其参数的设置与获取方法,帮助开发者更好地管理Web应用程序的状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

+session中放置的是对象怎么在前台获取?  2016-06-14+

${sessionScope.employee.company.comCode}

+2016-06-14+


=======page、session 、application 的区别=======


page:页面级别的请求,比如请求流程     1.jsp?name=1  ——>  2.jsp  可以获取name=1   ——> 3.jsp  不能获取name的值


session :会话级别的,在服务器正常的情况下,只要浏览器窗口不关闭,防止在session中的值一直是有效的,但是仅仅是本服务器端,不可以跨服务器。

                 !需要注意的是,session一般是有有效期的,超过有效期session会被销毁。


application:服务器级别的,只要服务器是启动的,保存的参数一直是有效的,除非服务器关闭或者重启了,保存的参数就失效了。



=======page、session 、application 的对应对象的获取=======

page-对应的是HttpServletRequest


ActionContext context=ActionContext.getContext();  

 HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);


转化而来,在filter中:

          public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        ServletContext context = this.filterConfig.getServletContext();//获取的是application
        HttpServletRequest req = (HttpServletRequest) request;


session-是HttpSession或者Map-二者是同一个session,一个是JSP规范,一个是struts2框架协议

HttpSession

 

ActionContext context=ActionContext.getContext();  

 HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);

 HttpSession session = req.getSession();

Map:

     ActionContext context=ActionContext.getContext();  

     Map<String, Object> session=context.getSession();  


application -还是ServletContext 

     ActionContext ctx = ActionContext.getContext();       

   HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);

    ServletContext application = request.getSession().getServletContext(); 


       从filter中获取

转化而来,在filter中:

          public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        ServletContext context = this.filterConfig.getServletContext();//获取的是application


==============page、session 、application 的中的参数的赋值与获取================

page-

       增加参数:

ActionContext context=ActionContext.getContext();  

HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);

         request.setAttribute("demoName", "Jecket");

       

       获取参数, 这里有两种情况:

      对于前台页面,或者url地址栏里传递来的,http://localhost:8080/test/testnamespace/test.do?demoName=123,一般是page层的,获取方式为

ActionContext context=ActionContext.getContext();  

HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);

         request.getParameter("demoName");

        
       对于,page-增加参数的,获取方式是对应的

ActionContext context=ActionContext.getContext();  

HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);

         request.getAttribute("demoName");


session-

        增加参数:

        ActionContext context=ActionContext.getContext();  
        Map<String, Object> session=context.getSession();  
        session.put("demoName", "Jecket");


         非map的赋值方式:

         HttpSession session = request.getSession();
   session.setAttribute("demoName", "Jacket");



      

  如果不想使用Map对象,可以直接获取:

ActionContext context=ActionContext.getContext();  

        context.getSession().put("demoName", "Jecket");

     

       获取参数:

        ActionContext context=ActionContext.getContext();  
        Map<String, Object> session=context.getSession();  
        session.get("demoName");

       

        如果不想使用Map对象,可以直接获取:

ActionContext context=ActionContext.getContext();  

        context.getSession().get("demoName");


       还有一种非map的获取方式

 HttpSession session = request.getSession();
   session.getAttribute("demoName");


application-

       增加参数:

ActionContext context=ActionContext.getContext();  

 HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);
 ServletContext application = request.getSession().getServletContext(); 
application.setAttribute("
demoName", "Jacket");

         获取参数:

        

ActionContext context=ActionContext.getContext();  

 HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);
 ServletContext application = request.getSession().getServletContext(); 
application.
getAttribute("demoName");


=============其他相关-不定期补充==================

·获取session 的Id

ActionContext ctx = ActionContext.getContext();       
 HttpServletResponse response = (HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);
  HttpServletRequest request = (HttpServletRequest) ctx.get(ServletActionContext.HTTP_REQUEST);

request.getSession().getId()
 

-如果使用getter和setter方法

  通过chain跳转多个本服务器的请求,前台依旧可以获取到这个具有get和set的参数

 在js中,如果这段js代码就在跳转到的jsp页面,即<script>var a='${name}';</script>是可以获取到的,但是如果是单独的js文件就不行了,这个时候就需要先把值存在页面的隐藏域中,然后再在js文件中通过id获取值


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值