如何从另一个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"从DB调用select方法,然后显示带结果的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);
}
}
我还希望通过标题链接获取 selectedTankList.jsp
<a href="selectedTankList.jsp">Tank list</a>
但是如何调用&#34;选择servlet&#34;没有表单和提交按钮?
答案 0 :(得分:1)
最终我发现了。
当您通过单击链接调用Servlet
时(即您调用第一个在doGet
内执行代码的Servlet,并且只在此之后将JSP发送到客户端),您需要为href
添加URL,这必须是您在映射目标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);
即添加&#34; / &#34;在与href