2017-01-30 20 views
0

私は、ユーザが入力した3つの文字列パラメータが、コントローラという名前のサーブレットに送信されるプロジェクトを作成しました。 ここでは、これらの3つのパラメータをJSPページに転送して印刷するためにRequestDispatcherを使用しました。 私は何かして、それを動作させましたが、service()メソッドにすべてのコマンドを置いた場合にのみ動作する理由を混乱させます。 私はこの同じ結果を達成するための正しい方法または標準的な方法を知りたいです。 また、doGet()、doPost()、service()、ProcessRequest()メソッドの実際の作業を知ってうれしく思います。 これは、サーブレットのコードです:サーブレットのどこでdoGet、doPost、およびserviceが動作するのですか?

public class controller extends HttpServlet { 

    public String TName,TUserName,TPassword; 

    @Override 
    public void service(HttpServletRequest request, HttpServletResponse response) 
     throws IOException, ServletException{  
     TName = request.getParameter("name"); 
     TUserName = request.getParameter("UserName"); 
     TPassword = request.getParameter("Password");  
     RequestDispatcher rd =getServletContext().getRequestDispatcher("/welcome.jsp"); 
     request.setAttribute("TName,TUserName,TPassword", rd); 
     rd.forward(request, response); 
    } 

    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
    } 
} 

答えて

0

あなたはクラスあなたのエクステントをチェックする場合は、リクエストが最初のように対応する具体的な方法に配布よりも、サービスメソッドに来る見るように次のコード

protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
    String method = req.getMethod(); 
    long errMsg; 
    if(method.equals("GET")) { 
     errMsg = this.getLastModified(req); 
     if(errMsg == -1L) { 
      this.doGet(req, resp); 
     } else { 
      long ifModifiedSince = req.getDateHeader("If-Modified-Since"); 
      if(ifModifiedSince < errMsg/1000L * 1000L) { 
       this.maybeSetLastModified(resp, errMsg); 
       this.doGet(req, resp); 
      } else { 
       resp.setStatus(304); 
      } 
     } 
    } else if(method.equals("HEAD")) { 
     errMsg = this.getLastModified(req); 
     this.maybeSetLastModified(resp, errMsg); 
     this.doHead(req, resp); 
    } else if(method.equals("POST")) { 
     this.doPost(req, resp); 

が表示されます"GET"、 "POST"など。

サービスを使用せずに実行する場合は、doGetまたはdoPost、またはその両方を上書きする必要があります。

関連する問題