2.1 klase ng HttpServletRequest

Karamihan sa mga gawaing kailangang gawin ng iyong servlet batay sa impormasyong natanggap mula sa kahilingan. Ang bagay ay may pananagutan para dito HttpServletRequest, kung saan ang lalagyan ay ipapasa sa iyong servlet (sa pamamaraan serviceo pamamaraan doGet(), doPost()atbp.)

Ang bagay na ito ay may ilang mga pamamaraan, dahil iniimbak lamang nito ang data ng kahilingan, at sa pamamagitan nito maaari kang makipag-ugnayan sa lalagyan.

Ang mga pamamaraan ay maaaring nahahati sa 2 malalaking grupo:

  • Mga pamamaraan na nauugnay sa awtorisasyon ng gumagamit
  • Mga pamamaraan para sa pagtatrabaho sa data ng kahilingan

Ibibigay ko ang mga pamamaraan ng awtorisasyon ng gumagamit sa anyo ng isang talahanayan, ngunit hindi namin susuriin ang mga ito. Ang katotohanan ay ang mga ito ay napakabihirang ginagamit upang pahintulutan ang isang gumagamit. Gumagamit ang lahat ng sikat na framework ng sarili nilang, mas advanced na mga diskarte sa pagpapahintulot.

Dapat kong ilista ang mga ito, ngunit muli, wala akong nakitang gumagamit nito.

Pamamaraan Paglalarawan
1 authenticate(HttpServletResponse) Nagsasagawa ng pagpapatunay ng tugon
2 changeSessionId() Sapilitang baguhin ang session ID
3 getAuthType() Ibinabalik ang uri ng pagpapatotoo na ginamit: ASIC_AUTH, FORM_AUTH, CLIENT_CERT_AUTH, DIGEST_AUTH
4 getRemoteUser() Ibinabalik ang login ng user
5 getRequestedSessionId() Ibinabalik ang SessionID ng kliyente
6 getSession() Nagbabalik ng object ng HttpSession
7 getUserPrincipal() Nagbabalik ng java.security.Principal object
8 login(username, password) Nagsasagawa ng pag-login ng user
9 logout() Nila-log out ang session ng user

2.2 Humiling ng data

Ang pangalawang pangkat ng mga pamamaraan ay mas kawili-wili. Anong uri ng data ang mayroon tayo sa kahilingan?

  • http na pamamaraan
  • URI
  • Mga pagpipilian
  • Mga pamagat

Tingnan natin kung anong mga pamamaraan ang magagamit para sa pagtatrabaho sa kanila:

Pamamaraan Paglalarawan
1 getMethod() Ibinabalik ang pamamaraan ng HTTP: GET, POST, DELETE, ...
2 getRequestURI() Ibinabalik ang kahilingang URI: http://codegym.cc/my/data
3 getRequestURL() Ibinabalik ang URL ng kahilingan: http://codegym.cc/my/data
4 getQueryString() Nagbabalik ng Query, ibig sabihin, lahat pagkatapos ng ?
5 getParameterMap() Nagbabalik ng listahan ng mga parameter ng query
6 getParameter(String name) Ibinabalik ang halaga ng parameter sa pamamagitan ng pangalan nito
7 getContentType() Ibinabalik ang katawan ng kahilingan sa MimeType
8 getReader() Reader na basahin ang katawan ng kahilingan bilang teksto
9 getInputStream() InputStream para basahin ang request body bilang byte[]
10 getSession() Nagbabalik ng object ng HttpSession
labing-isa getCookies() Nagbabalik ng hanay ng mga object ng Cookie[].
12 getHeaderNames() Nagbabalik ng listahan ng mga pamagat, mga pangalan lamang
13 getHeader(String name) Ibinabalik ang halaga ng header ayon sa pangalan
14 getServletPath() Ibinabalik ang bahagi ng URL na tumutukoy sa servlet
15 getContextPath() Ibinabalik ang bahagi ng URI na tumutukoy sa nilalaman ng kahilingan

At hindi iyon ang lahat ng mga pamamaraan ...

Bagama't pagkatapos nating pag-aralan ang HTTP protocol at matutunan kung paano magtrabaho sa HttpClient, halos lahat ay pamilyar dito, hindi ba?

Sumulat tayo ng isang servlet na maaaring ipasa ang teksto at isang kulay, at magbabalik ito ng isang HTML na pahina na may nakasulat na teksto sa tinukoy na kulay. Paano mo gusto ang ideya?

Magsimula tayo sa pagsulat ng ating servlet:


public class ColorTextServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
          //write your code here
    }
}

Ngayon kailangan nating makuha ang teksto at kulay na ipinasa mula sa URI ng gumagamit:


public class ColorTextServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {

        // Getting the parameter “text” and “color” from request
        String text= request.getParameter("text");
        String color = request.getParameter("color");
 
    }
}

At sa wakas, kailangan mong i-output ang teksto bilang HTML. Tatalakayin natin ito sa susunod na panayam, ngunit narito ako ay magbibigay ng kaunting pahiwatig:

public class ColorTextServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {

        // Get the "text" and "color" parameters from the request
        String text = request.getParameter("text");
        String color = request.getParameter("color");


        // Print the HTML as a response to the browser
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out =  response.getWriter();
        try {
            out.println("<html>");
            out.println("<head> <title> ColorTextServlet </title> </head>");
            out.println("<body>");
            out.println("<h1 style="color:"+color+">"+text+"</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }
}