2016-11-11 1 views
0

Ich habe diese Methode unter doGet aufrufen. Bitte helfen Sie mir, hier rauszukommen. Das ist meine eigene Methode und ich wollte das so nennen.Ich arbeite an Servlets, die nur eine deGet- und DoPost-Methode haben. Ich habe eine neue Methode dafür geschrieben. . Wie kann ich direkt auf diese neue Methode zugreifen?

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

Willkommen bei Stack Overflow! Um Ihnen eine gute Antwort zu geben, könnte es uns helfen, wenn Sie einen Blick auf [fragen] haben, falls Sie das nicht bereits getan haben. Es könnte auch nützlich sein, wenn Sie ein [mcve] bereitstellen könnten. – Mat

Antwort

1

Servlets Karte HTTP-Anfrage-Header zu vordefinierten Methoden, wie doGet(), doPost() und einige andere.

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

Da Ihre Methodendaten ändert, sollten Sie es mit POST nennen.

einfachste Weg ist Ihr doPost(), um dieses Verfahren zu übermitteln:

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

in der Regel Was passiert, ist, dass man so etwas Routing-Logik zu Ihrem doPost hinzufügen werden:

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

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

Schön erklärt .. –

Verwandte Themen