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获取值
${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获取值
相关文章推荐
- Android Manifest 用法
- kindeditor 批量上传 上传失败 thinkphp swfupload session
- 杰奇登录后的东西都是在session里面的
- 跨越fso、wsh、 application写文件
- IIS 错误 Server Application Error 详细解决方法
- asp 内置对象 Application 详解
- IIS运行错误 Server Application Error 错误代码 Error: 8004的解决方法
- ASP中SESSION无法保存问题的解决办法
- 解决IIS的Server Application Error的2种方法
- Oracle中的Connect/session和process的区别及关系介绍
- Node.js编程中客户端Session的使用详解
- 浅谈COOKIE和SESSION区别
- 解析PHP的session过期设置
- php中Session的生成机制、回收机制和存储机制探究
- php错误提示failed to open stream: HTTP request failed!的完美解决方法
- php中将一个对象保存到Session中的方法
- 深入解析Session是否必须依赖Cookie
- 对比分析php中Cookie与Session的异同
- PHP Session机制简介及用法