在一个应用程序中从servlet调用servlet和JSP(wo Form)



如何从另一个 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相同的名称之前添加"/"

最新更新