Servlet到Servlet通信

时间:2014-06-18 09:46:49

标签: java servlets

我正在制作Java Web应用程序,但我是Java新手。

我有一个Servlet(/ locatemodules)试图在服务器中找到其他servlet(/ modules / *),当前servlet找到其他servlet的名称(/ modules / logout,/ modules / invoice等) ,但我需要获取一些属性并调用已发现的servlet的方法,所有servlet中的属性和方法都是相同的。

拨打电话:discoveredServlet.getMenuItem();

getMenuItem返回一些值,menuName,menuUrl,sideMenu [],sideUrl []等...在web应用程序中以dinamically方式创建一个菜单项,发现的servlet具有post和get for when在main上调用菜单。

我发现了Inter Servlet Communication文章,但是不能与API 2.2及更高版本一起使用。

如何获得这样的解决方案?

import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Loaded extends HttpServlet {

  public void doGet(HttpServletRequest req, HttpServletResponse res)
                           throws ServletException, IOException {
    res.setContentType("text/plain");
    PrintWriter out = res.getWriter();

    ServletContext context = getServletContext();
    Enumeration names = context.getServletNames();
    while (names.hasMoreElements()) {
      String name = (String)names.nextElement();
      Servlet servlet = context.getServlet(name);
      out.println("Servlet name: " + name);
      out.println("Servlet class: " + servlet.getClass().getName());
      out.println("Servlet info: " + servlet.getServletInfo());
      out.println();
    }
  }
}

2 个答案:

答案 0 :(得分:0)

作为一种设计原则,Servlet只应用于接收来自容器的请求,调用包含业务逻辑的类,并重定向到显示响应的JSP(MVC pattern)。所有业务逻辑都应该是与HTTP协议分离的分支。

因此,我认为您可以做的最好的事情是从servlet中删除这些与菜单相关的方法,将它们放在POJOs上,然后从servlet中调用这个POJO。

另外,请记住,通常,Servlet是单身人士。

答案 1 :(得分:0)

Servlet是应该接受服务器上的请求并响应它们的类。

当您创建HTTPServlet时,它应该通过http getpost等http方法接受http请求(因此您可以获取方法doGet()doPost() servlet),然后servlet处理请求并发送http响应。

如果要在服务器之间进行通信,则应使用setAttribute()方法设置一些属性,然后使用redirect(使用response.sendRedirect())或将请求转发给另一个servlet并使用{{1接收值的方法。

Servlet并不像普通类那样使用,你可以创建servlet类的对象并调用它的方法。