2016-11-11 10 views
0

我已經在doGet下調用了這個方法。請幫我擺脫這一點。 這是我自己的方法,我想打電話給這個。我正在使用servlet,只有一個deGet和DoPost方法。我寫了一個新的方法。 。我如何直接訪問新的方法?

public void doYourThingHere(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException, IOException { 

     HttpSession session = request.getSession(); 
     String[] checkedQues = request.getParameterValues("ttom"); 
     List<String> checkedQuesList = Arrays.asList(checkedQues); 
     Map<String, String> preferences = new LinkedHashMap<String, String>(); 
     if (session.getAttribute("username") != null) { 
      List<Question> questionsList = (List<Question>) session 
        .getAttribute("restaurantQuestionList"); 

      List<Question> questionsListTemp1 = new ArrayList<>(); 
      for (int i = 2; i < 4; i++) { 
       questionsListTemp1.add(questionsList.get(i)); 
      } 
      session.setAttribute("tomtomRestaurantQuestionList1", 
        questionsListTemp1); 

      for (Question question : questionsList) { 
       String questionId = String.valueOf(question.getId()); 
       if (checkedQuesList.contains(questionId)) { 
        String answerId = request.getParameter(questionId); 
        // PreferenceDAO.storePreferences(questionId, answerId, 
        // CATEGORY); 
        preferences.put(questionId, answerId); 
        System.out.println("queid : " + questionId + "answerid : " 
          + answerId); 

       } 
      } 

      String username = (String) session.getAttribute("username"); 
      PreferencesProcessor.process(preferences, username); 

      RequestDispatcher requestdp = request 
        .getRequestDispatcher("WEB-INF/jsp/table.jsp"); 
      requestdp.forward(request, response); 
     } else { 
      RequestDispatcher requestdp = request 
        .getRequestDispatcher("WEB-INF/jsp/login.jsp"); 
      requestdp.forward(request, response); 
     } 

    } 

    protected void doPost(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException, IOException { 
     // TODO Auto-generated method stub 
    } 
} 

/** 
* @see HttpServlet doPost(HttpServletRequest request, HttpServletResponse 
*  response) 
*/ 
+0

歡迎來到堆棧溢出!爲了給你一個很好的答案,如果你有一個[問],如果你還沒有看過,它可能會幫助我們。如果你可以提供[mcve],它可能也很有用。 – Mat

回答

1

Servlets將HTTP請求標頭映射到預定義的方法,如doGet(),doPost()等。

https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/http/HttpServlet.html

因爲你的方法修改數據,你應該POST調用它。

最簡單的方法就是你的doPost()轉發給這個方法:

public void doPost(HttpServletRequest request, HttpServletResponse response) { 
    doYourThingHere(request, response); 
} 

什麼通常會發生的情況是,你會添加一些路由邏輯給您的doPost這樣的:

public void doPost(...) { 
    String action = request.getParameter("action"); 

    switch (action) { 
     case "doSomething": 
      doSomething(request, response); 
      break; 
     case "somethingElse": 
      doSomethingElse(request, response); 
      break; 
     ... 
    } 
} 
+0

很好解釋.. –

相關問題