当前位置: 技术问答>java相关
大虾们,帮帮我----怎样在两个Servlet之间通信?
来源: 互联网 发布时间:2015-06-26
本文导语: 有两个Servlet: Servlet A 和 Servlet B. Servlet A 先运行,运行一段时间后,Servlet B 由另外的请求启动运行, 现在,Servlet B 在运行中需要知道 Servlet A 中的一些变量当前值。 如何解决?请大虾们帮帮我。 ...
有两个Servlet: Servlet A 和 Servlet B.
Servlet A 先运行,运行一段时间后,Servlet B 由另外的请求启动运行,
现在,Servlet B 在运行中需要知道 Servlet A 中的一些变量当前值。
如何解决?请大虾们帮帮我。
Servlet A 先运行,运行一段时间后,Servlet B 由另外的请求启动运行,
现在,Servlet B 在运行中需要知道 Servlet A 中的一些变量当前值。
如何解决?请大虾们帮帮我。
|
1.应用ServletContext
a.在Servlet A中,用setAttribute()设置你要共享的数据
b.在Servlet B中,用getAttribute()读取以上的object
2.Session中使用的方法相同,但是保存在session中的object必须实现serizable 接口。以下是使用session保存数据的例子,读取数据也类似,建议看看有关ServletContextSession方面的资料,很有帮助。GOOD LUCK! public void service(HttpServletRequest request, HttpServletResponse, response) throws IOException{ // Get the session and the counter param attribute HttpSession session = request.getSession (true); Integer ival = (Integer) session.getAttribute("simplesession.counter"); if (ival == null) // Initialize the counter ival = new Integer (1); else // Increment the counter ival = new Integer (ival.intValue () + 1); // Set the new attribute value in the session session.setAttribute("simplesession.counter", ival); // Output the HTML page out.print(""); out.print(" You have hit this page "); out.print(ival + " times!"); out.print("");}
a.在Servlet A中,用setAttribute()设置你要共享的数据
b.在Servlet B中,用getAttribute()读取以上的object
2.Session中使用的方法相同,但是保存在session中的object必须实现serizable 接口。以下是使用session保存数据的例子,读取数据也类似,建议看看有关ServletContextSession方面的资料,很有帮助。GOOD LUCK! public void service(HttpServletRequest request, HttpServletResponse, response) throws IOException{ // Get the session and the counter param attribute HttpSession session = request.getSession (true); Integer ival = (Integer) session.getAttribute("simplesession.counter"); if (ival == null) // Initialize the counter ival = new Integer (1); else // Increment the counter ival = new Integer (ival.intValue () + 1); // Set the new attribute value in the session session.setAttribute("simplesession.counter", ival); // Output the HTML page out.print(""); out.print(" You have hit this page "); out.print(ival + " times!"); out.print("");}
|
public void service(HttpServletRequest request, HttpServletResponse, response) throws IOException
{ // Get the session and the counter param attribute HttpSession
session = request.getSession (true);
Integer ival = (Integer)session.getAttribute("simplesession.counter");
if (ival == null) // Initialize the counter
ival = new Integer (1);
else // Increment the counter
ival = new Integer (ival.intValue () + 1);
// Set the new attribute value in the session
session.setAttribute("simplesession.counter", ival);
}
{ // Get the session and the counter param attribute HttpSession
session = request.getSession (true);
Integer ival = (Integer)session.getAttribute("simplesession.counter");
if (ival == null) // Initialize the counter
ival = new Integer (1);
else // Increment the counter
ival = new Integer (ival.intValue () + 1);
// Set the new attribute value in the session
session.setAttribute("simplesession.counter", ival);
}
|
FT~~~~
这两个Servlet不能通过以上的方法通讯。
这算什么设计?还想得到A的引用
FT~~~
哦!可以用Application传!!!
跟sesion 和request用法一样
在Servlet里
this.getServletContext().setAttribute("a",yourObject);
Object a =this.getServletContext().getsetAttribute("a");
这两个Servlet不能通过以上的方法通讯。
这算什么设计?还想得到A的引用
FT~~~
哦!可以用Application传!!!
跟sesion 和request用法一样
在Servlet里
this.getServletContext().setAttribute("a",yourObject);
Object a =this.getServletContext().getsetAttribute("a");
|
不太明白你说的,你是说的另一个请求是是谁发出的?
Serlet A?要不就是另一个IE启动的一个请求?
还是Frame的有两个Servlet(A,B)一个改变另一个要刷新?
建议在Serlet中传参数用request和session
Serlet A?要不就是另一个IE启动的一个请求?
还是Frame的有两个Servlet(A,B)一个改变另一个要刷新?
建议在Serlet中传参数用request和session
|
很简单了,
|
request.setAttribute()
request.getAttribute()
request.getAttribute()
|
你的设计有些问题
|
context, session, request, attribute这些都可以啊
|
把请求转给另一个servlet就可以了啊
然后接收另一个servlet的返回数据
然后接收另一个servlet的返回数据