您的位置:首页 > 移动开发

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

2016-05-13 11:35 148 查看
+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获取值
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息