2016-05-24 3 views
2

Wie Servlet von einem anderen Servlet aufrufen? beides in einer App.Aufruf Servlet von Servlet und JSP (wo Form) innerhalb einer Anwendung

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); 
} 

} 

Aber ich habe nur:

Die angeforderte Ressource ist nicht verfügbar.

"Select-Servlet" ruft select-Methode von DB und zeigen dann JSP mit Ergebnissen

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); 
} 

} 

ich auch von Kopf dieses selectedTankList.jsp von Link zu bekommen

<a href="selectedTankList.jsp">Tank list</a> 

Aber wie "Select Servlet" ohne Formular und Aufruf Butto aufrufen n?

+0

ja, zum Teil. Meine Frage betrifft auch 'href'. –

Antwort

1

Schließlich habe ich herausgefunden. Wenn Sie Servlet aufrufen, indem Sie auf Link klicken (dh Sie rufen zuerst Servlet Code in doGet ausführen und danach JSP an Client senden) müssen Sie URL für href setzen und das muss sein, was Sie zwischen Tags <url-pattern>...</url-pattern> in Ihrem web.xml während setzen das Zuordnungsziel-Servlet. Für das obige Beispiel muss es sein:

<a href="DBselTankList">Tank list</a> 

Warum DBselTankList? schauen, weil an meinem 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> 

BTW, sind die Namen nicht gut, Schande über mich. Ich muss mir Zeit nehmen, um den guten Ansatz der Namensgebung zu studieren. Also, wenn Sie Servlet von einem anderen Servlet (beide in einem Projekt) nennen tun es wie folgt aus:

RequestDispatcher view = getServletContext().getRequestDispatcher("/DBselTankList"); 
view.forward(req, resp); 

nämlich add "/" vor dem gleichen Namen wie für href