如何从另一个 Servlet 调用 Servlet?两者都在一个应用程序中。
public class DBaddData extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
....some actions here...
...get data from JSP...
...call INSERT INTO method...
...and then I want to call SELECT servlet...
RequestDispatcher view = getServletContext().getRequestDispatcher("/myServlets/DBselTankList");
view.forward(req, resp);
}
}
但我只得到:
请求的资源不可用。
"选择 servlet"调用数据库中的选择方法,然后显示带有结果的 JSP
public class DBselTankList extends HttpServlet {
protected void processRequest(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
DBSelectRows dbSR = new DBSelectRows();
List<DBObjBaseStd> dboBStd=new ArrayList<DBObjBaseStd>();
dboBStd=dbSR.sel(DBConnStrings.driver, DBConnStrings.url, DBConnStrings.dbName, DBConnStrings.userName, DBConnStrings.password, DBConnStrings.sslState);
req.setAttribute("list", dboBStd);
RequestDispatcher view = req.getRequestDispatcher("selectedTankList.jsp");
view.forward(req, resp);
}
}
我还想通过标题的链接获取这个选定的坦克列表.jsp
<a href="selectedTankList.jsp">Tank list</a>
但是如何在没有表单和提交按钮的情况下调用"选择 servlet"?
最终我发现了。当您通过单击链接调用Servlet
时(即,您首先调用在doGet
内执行代码的 Servlet,然后才将 JSP 发送到客户端),您需要输入 URL 用于href
,这必须是您在映射目标 servlet 期间<url-pattern>...</url-pattern>
web.xml
中的标记之间的内容。对于上面的示例,它必须是:
<a href="DBselTankList">Tank list</a>
为什么DBselTankList
?因为看看我的web.xml
:
<servlet-name>DBselTankList</servlet-name>
<servlet-class>myServlets.DBselTankList</servlet-class>
<servlet-mapping>
<servlet-name>DBselTankList</servlet-name>
<url-pattern>/DBselTankList</url-pattern>
</servlet-mapping>
顺便说一句,名字不好,让我感到羞耻。我必须花时间研究命名的好方法。因此,当您从另一个Servlet
(都在一个项目中)调用Servlet
时,请这样做:
RequestDispatcher view = getServletContext().getRequestDispatcher("/DBselTankList");
view.forward(req, resp);
即,在与href
相同的名称之前添加"/"