首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Servlet到Servlet的通信

Servlet到Servlet的通信
EN

Stack Overflow用户
提问于 2014-06-18 17:46:49
回答 2查看 1.1K关注 0票数 0

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

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

调用方式:discoveredServlet.getMenuItem();

getMenuItem返回一些值,如menuName、menuUrl、sideMenu[]、sideUrl[]等。要在web应用程序中动态创建菜单项,当在主菜单上调用时,所发现的servlet具有post和get。

我找到了Inter的文章,但不能与API 2.2及更高版本一起工作。

怎么能得到这样的解决方案呢?

代码语言:javascript
复制
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();
    }
  }
}
EN

回答 2

Stack Overflow用户

发布于 2014-06-18 17:51:34

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

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

另外,请记住,通常情况下,Servlets是单例的。

票数 0
EN

Stack Overflow用户

发布于 2014-06-18 17:57:24

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

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

如果您想在服务器之间通信,那么您应该使用setAttribute()方法设置一些属性,然后使用redirect ()(使用response.sendRedirect()),或者将您的请求转发到另一个servlet并使用getAttribute()方法接收值。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24282312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档