我正在制作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();
}
}
}
答案 0 :(得分:0)
作为一种设计原则,Servlet只应用于接收来自容器的请求,调用包含业务逻辑的类,并重定向到显示响应的JSP(MVC pattern)。所有业务逻辑都应该是与HTTP协议分离的分支。
因此,我认为您可以做的最好的事情是从servlet中删除这些与菜单相关的方法,将它们放在POJOs上,然后从servlet中调用这个POJO。
另外,请记住,通常,Servlet是单身人士。
答案 1 :(得分:0)
Servlet是应该接受服务器上的请求并响应它们的类。
当您创建HTTPServlet时,它应该通过http get
和post
等http方法接受http请求(因此您可以获取方法doGet()
和doPost()
servlet),然后servlet处理请求并发送http响应。
如果要在服务器之间进行通信,则应使用setAttribute()
方法设置一些属性,然后使用redirect
(使用response.sendRedirect())或将请求转发给另一个servlet并使用{{1接收值的方法。
Servlet并不像普通类那样使用,你可以创建servlet类的对象并调用它的方法。