As Servlets são pequenos servidores que são responsáveis por servir algum conteúdo (página) para o cliente. Estas servlets recebem uma requisição (request), processam e retornam uma resposta (response).
Uma servlet é implementada como uma classe que estende de HttpServlet
(javax.servlet.http
) e é acessada através de um dos seus métodos do* ou através do método service
. Os métodos do* são: doGet
, doPost
, doPut
, doDelete
, doHead
, doOptions
e doTrace
, e são acessados apenas através dos seus equivalentes métodos HTTP: GET, POST, PUT, DELETE, HEAD, OPTIONS e TRACE. Já o método service, por sua vez, é acessado por qualquer um desses. Todos esses métodos recebem como parâmetro a requisição HttpServletRequest
(javax.servlet.http
) e a resposta HttpServletResponse
(javax.servlet.http
).
Os métodos de acesso mais comumente utilizados são o doGet
e o doPost
. Devemos portanto sobrescrever ao menos um deles para podermos acessar o conteúdo.
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
}
Um dos modos de retornar o resultado do processamento da página para o client é através da utilização do PrintWriter
(java.io
), através do método de. O PrinterWriter
é obtido através do método getWriter
do HttpServletResponse
.
PrintWriter writer = response.getWriter();
writer.println("<html><body></body></html>“);
Para acessar uma servlet, podemos fazer isto de 2 maneiras: mapeando-a no web.xml
ou anotando-a na classe.
web.xml
:
Primeiramente, define-se a servlet com o seu nome e sua classe, usando a tag <servlet>
. Depois, mapeia-se o padrão da url utilizando o nome definido anteriormente.
<servlet>
<servlet-name>servletName</servlet-name>
<servlet-class>br.com.package.ServletClass</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servletName</servlet-name>
<url-pattern>/url</url-pattern>
</servlet-mapping>
@WebServlet
(javax.servlet.annotation
) para informar que a classe é uma servlet. O padrão da url é definido utilizando-se o parâmetro urlPatterns
.
@WebServlet(urlPatterns = "/url")
public class ServletClass extends HttpServlet {
Os parâmetros da requisição são enviados como String
e podem ser acessados no servidor através do método getParameter
do HttpServletRequest
.
String parametro = req.getParameter("parametro");