Defines a set of methods that a servlet uses to communicate with its servlet container, for example, to get the MIME type of a file, dispatch requests, or write to a log file. 也就是说,ServletContext是用来和容器通讯的,不是和别的servlet聊天用的

解决方案 »

  1.   

    我测试了一下,没有问题的!
    测试代码如下:
    test.jsp
    <html><body>
    <form action="/servleta" method=post>
    <input type=submit value="servleta">
    </form>
    <form action="/servletb" method=post>
    <input type=submit value="servletb">
    </form>
    </html></body>
    Servleta.java
    ..
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType(CONTENT_TYPE);
        this.getServletContext().setAttribute("test", new TestBean("abc"));
        RequestDispatcher rd = request.getRequestDispatcher("test.jsp");
        rd.forward(request, response);
      }
    ..
    Servletb.java
    ..
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType(CONTENT_TYPE);
        TestBean s = (TestBean)this.getServletContext().getAttribute("test");
        System.out.println(s.getTest());
      }
    ..TestBean.javapublic class TestBean {
      private String test;
      public TestBean() {
      }
      public TestBean(String test) {
        this.test = test;
      }
      public String getTest() {
        return test;
      }
    }
      

  2.   

    to  eyeieye(魔之眼): 你说的不错,但是servleta可以和容器通讯,servletb 就不行吗?a,b 还是可以聊聊的 :)to   Mars_lee(二子):你的测试我已前遇到过,不过不是对ServletContext的,是对Session的,boolean pass=true;session.setAttribute("pass",pass) ,jb7也会报错,不浪用boolean , 换成string就好了,所以我想你的testbean 应该换一下,不应该是个简单的数据类型。-----------------------------无论如何谢谢你们
      

  3.   

    噢?
    TestBean是对象啊!
    除非是分布式,两个虚拟机,那没的说,servletcontext不能交互。
    否则没有问题啊?
    这个代码是我看了你的问题以后写的啊,真的可行的.
      

  4.   

    我试了,tomcat不行,weblogic7中可以根据servlet规范2.3应该可以
      

  5.   

    感谢大家,问题已解决。to :Mars_lee(二子) 谢谢你的例程,是我看错了:)