我正在制作一个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及更高版本一起工作。
怎么能得到这样的解决方案呢?
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();
}
}
}发布于 2014-06-18 17:51:34
作为设计原则,Servlets应该只用于接收来自容器的请求,调用包含业务逻辑的类,并重定向到显示响应的JSP (MVC pattern)。所有业务逻辑都应该位于与HTTP协议解耦的类上。
因此,我认为最好的做法是从servlets中删除这些与菜单相关的方法,将它们放在POJOs上,然后从servlets中调用这个POJO。
另外,请记住,通常情况下,Servlets是单例的。
发布于 2014-06-18 17:57:24
Servlet是应该接受服务器上的请求并响应它们的类。
当您创建HTTPServlet时,它应该通过get和post等http方法接受http请求(因此在servlet中获得方法doGet()和doPost() ),然后servlet处理该请求并发送http响应。
如果您想在服务器之间通信,那么您应该使用setAttribute()方法设置一些属性,然后使用redirect ()(使用response.sendRedirect()),或者将您的请求转发到另一个servlet并使用getAttribute()方法接收值。
servlet并不意味着像普通类那样使用,您可以创建servlet类的对象并调用它的方法。
https://stackoverflow.com/questions/24282312
复制相似问题