javaEE--request.getRequestDispatcher--URL後帶參數實現自定義跳轉

javaEE web項目,需求以下:QueryServlet(數據庫查詢操做),每一次添加(addUser.jsp),刪除(delUser.jsp)和修改(updateUser.jsp)的操做後都須要調用QueryServlet,如何可以在實現QueryServlet裏的查詢功能後,實現不一樣頁面的跳轉–如:java

  • 添加後跳回添加頁面–addUser.jsp–QueryServlet–addUser.jsp
  • 刪除後跳回刪除界面–delUser.jsp–QueryServlet–delUser.jsp
  • 更新後跳回更新界面–updateUser.jsp–QueryServlet–updateUser.jsp

這裏就利用了request.getRequestDispatcher(「url?id=」+id+」「),URL後帶參數傳值實現自定義跳轉web

具體操做看下列代碼數據庫

addUser.jspmarkdown

<form action="addServlet" method="post">
        <label for="username">管理員用戶名</label><input type="text" id="username" name="username" placeholder="請輸入用戶名">
        <label for="password">管理員密碼</label><input type="text" id="password" name="password" placeholder="請輸入密碼">
          <button type="submit">添加</button>
</form>

AddServlet.javajsp

public class AddServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {  
        this.doPost(request, response);
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            //...具體添加數據操做
        request.getRequestDispatcher("queryAdminServlet?").forward(request, response);
        //String url = "jsp/addUser.jsp";
        //request.getRequestDispatcher("queryAdminServlet?url="+url+"").forward(request, response);
    }
}

queryServlet.javapost

public class QueryServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {  
        this.doPost(request, response);
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            //...遍歷查詢數據操做
        request.getRequestDispatcher(jsp/addUser.jsp).forward(request, response);
        //String url = request.getParameter("url");
        //request.getRequestDispatcher(url).forward(request, response);
    }
}

以上是一套添加用戶的操做,這裏的跳轉邏輯爲 – 打開addUser.jsp進行添加用戶操做 – 經過form的action – 跳轉到AddServlet進行入庫操做–跳轉到QueryServlet進行一次遍歷更新查詢結果 – 再跳回addUser.jsp。由於QueryServlet相似一個公共類,被反覆調用,因此跳轉的地址須要不一樣的變更,鑑於此問題,找到解決方法:
利用了request.getRequestDispatcher(「url?id=」+id+」「)語句,URL後附加參數,經過頁面傳值後引用實現自定義跳轉。以下注釋內容:this

AddServlet.javaurl

String url = "jsp/addUser.jsp";
    request.getRequestDispatcher("queryAdminServlet?url="+url+"").forward(request, response);

這裏在getRequestDispatcher傳值時在servlet後面跟上自定義的url參數,而後傳入另外一個頁面後,如本例中的QueryServlet.java,經過request.getParameter()取到值,進行跳轉,便可實現自定義的頁面跳轉操做spa

QueryServlet.javacode

String url = request.getParameter("url");
    request.getRequestDispatcher(url).forward(request, response);
相關文章
相關標籤/搜索