上下文对象在jsp或servlet文件中不起作用

时间:2014-08-04 08:07:42

标签: java jsp servlets

我正在创建许多jsp和servlet文件但是,这次我感到困惑......

我有一个名为test.java的

ServletContext context =  request.getServletContext();

context.setAttribute("Fname","chintan");
context.setAttribute("Lname","popat");
request.getRequestDispacher("test.jsp").forword(request,response);

在test.jsp

<%
   String fname = (String)context.getAttribute("Fname");  //popat
   String lname = (String)context.getAttribute("Lname");  //popat
%> 

在jsp文件中获取存储在最后一个上下文对象中的所有上下文属性值 怎么可能呢 2 diff属性返回样本值,而我设置了diff值

2 个答案:

答案 0 :(得分:0)

你做错了,使用PageContext的forward方法,而不是RequestDispatcher

       pageContext.forward("/resource.jsp"); 

https://tomcat.apache.org/tomcat-7.0-doc/jspapi/javax/servlet/jsp/PageContext.html#forward(java.lang.String)

答案 1 :(得分:0)

这是我的工作测试:

在servlet中:

ServletContext context = request.getServletContext();
context.setAttribute("Fname","chintan");
context.setAttribute("Lname","popat");
request.getRequestDispatcher("/test.jsp").forward(request, response);

test.jsp:

<%
String fname = (String)application.getAttribute("Fname");  //chintan
String lname = (String)application.getAttribute("Lname");  //popat
out.write(fname); out.write(lname);
%> 

正确写入chintanpopat

但是......它同时使用一个请求,因为应用程序的所有请求之间共享应用程序上下文。在jsp中,servlet上下文可以通过application而不是context访问(除非你已将其设置在别处)。