Este artigo compartilha o ciclo de vida e o princípio de funcionamento do servlet para sua referência. O conteúdo específico é o seguinte
O ciclo de vida do servlet é dividido em três estágios:
1. Chame o método init () no estágio de inicialização
2. Ligue para o método Service () em resposta ao estágio de solicitação do cliente
3. Método de destruição de chamada () no estágio de rescisão
Fase de inicialização do servlet:
Nos momentos seguintes, o contêiner de servlet carrega o servlet:
1. Quando o contêiner do servlet inicia, alguns servlets são carregados automaticamente. Para implementá -lo, você só precisa adicionar o seguinte código entre <Verlet> </servlet> no arquivo web.xml:
<adounon-startup> 1 </farlon-startup>
2. Depois que o contêiner do servlet é iniciado, o cliente envia uma solicitação para o servlet pela primeira vez
3. Depois que o arquivo da classe servlet é atualizado, recarregue o servlet
Depois que o servlet é carregado, o contêiner do servlet cria uma instância do servlet e chama o método init () do servlet para inicialização. O método init () é chamado apenas uma vez durante toda a vida de um servlet.
Como funcionam os servlets:
Primeiro, vamos explicar brevemente o processo de receber e responder às solicitações dos clientes. Primeiro, o cliente envia uma solicitação. O servlet chama o método Service () para responder à solicitação. Pode ser visto através do código -fonte. O método Service () corresponde ao método de solicitação. Selecione para chamar Doget, DoPost e outros métodos e digite o método correspondente para chamar o método da camada lógica para realizar a resposta ao cliente. Não há métodos como Doget, DoPost, etc. Na interface do servlet e GenicServlet. Esses métodos são definidos no HTTPServlet, mas todos retornam informações de erro. Portanto, toda vez que definimos um servlet, devemos implementar métodos como Doget ou DoPost.
Cada servlet personalizado deve implementar a interface do servlet. Cinco métodos são definidos na interface do servlet, entre os quais os três métodos mais importantes envolvem o ciclo de vida dos métodos de servlet, a saber, os métodos init (), Service () e Destroy () mencionados acima. O GenericServlet é geral, não específico para qualquer protocolo, servlet, que implementa a interface do servlet. HttpServlet herda do GenericServlet, então o HTTPSERVlet também implementa a interface do servlet. Então, quando definimos um servlet, precisamos apenas herdar o httpServlet.
A interface do servlet e o GenicServlet não são específicos para nenhum protocolo, enquanto o HTTPServlet é uma classe específica para o protocolo HTTP, portanto, o método Service () é implementado no HTTPServlet e o servleTReTReSTeSTeSTeSonse de servlet e servir.
Public Void Service (ServletRequest Req, ServletResponse res) lança servletexception, ioexception {httprequest solicitação; Resposta httpro -resposta; tente {req = (httprequest) solicitação; res = (HTTPRESPOnsion) Resposta; } Catch (ClassCastException e) {lança nova servletexception ("Resposta de solicitação não-http"); } serviço (solicitação, resposta);}O código finalmente chama o método de serviço (Solicitação, resposta) do HTTPServlet e, em seguida, chama o método DOXXX correspondente de acordo com a solicitação, porque o método Doxxx no HTTPServlet retorna informações de erro.
Void protegido Doget (httpServletRequest res, httpServletResponse resp) lança servletexception, ioexception {string protocol = req.getprotocol (); String msg = istrings.getString ("http.method_get_not_supported"); if (protocol.equals ("1.1")) {resp.Senderror (httpServletResponse.sc.method.not.allowed, msg); } esle {resp.senderror (httpServletResponse.sc_bad_request, msg); }}Portanto, precisamos substituir esses métodos em um servlet personalizado!
Não há segredo na frente do código -fonte!
Fase de solicitação de resposta de servlet:
Para solicitações do usuário para alcançar o servlet, o contêiner do servlet criará um objeto ServletRequest e um objeto ServletResponse específico para essa solicitação e, em seguida, chamará o método de serviço do servlet. O método de serviço obtém informações de solicitação do cliente do objeto ServletRequest, processa a solicitação e retorna informações de resposta ao cliente através do objeto ServletResponse.
Para Tomcat, ele colocará os parâmetros aprovados em uma hashtable, e a definição de hashtable é:
A cópia do código é a seguinte: Hashtable privado <String String []> paramhashStringArray = new Hashtable <String String []> ();
Este é um mapa de valor-chave da string-> string [].
O thread hashmap não é seguro, o thread de hashtable é seguro.
Fase de terminação de servlet:
Quando o aplicativo da Web é encerrado, ou o contêiner servente termina em execução, ou o contêiner servlet recarrega uma nova instância do servlet, o contêiner do servlet chama primeiro o método Destroy () do servlet, que pode liberar os recursos ocupados pelo método do servlet no método do Método ().
Quando é criado um servlet:
1. Por padrão, quando o cliente da Web solicitar acesso a um servlet pela primeira vez, o contêiner da Web criará uma instância do servlet.
2. Quando um elemento filho <Load-on-startup> é especificado no elemento <Verlet> no arquivo web.xml, o contêiner do servlet criará e inicializará o objeto Servlet em ordem ao iniciar o servidor da Web.
NOTA: No arquivo web.xml, alguns servlets têm apenas elementos <erlvet> e não possuem elementos <vapping>, para que não possamos acessar esses servlets através do URL. Esse servlet geralmente configura um elemento filho <Load-on-startup> no elemento <Verlet>, para que o contêiner carregue automaticamente esses servlets e chama o método init () quando é iniciado, concluindo algum trabalho de inicialização global.
Quando o aplicativo da web será iniciado:
1. Quando o contêiner do servlet for iniciado, todos os aplicativos da Web serão iniciados.
2. O controlador inicia o aplicativo da web
Comparação entre Servlet e JSP:
Existem muitas semelhanças que podem gerar páginas dinâmicas da Web.
A vantagem do JSP é que ele é bom na produção de páginas da web e é mais intuitivo gerar páginas dinâmicas, mas a desvantagem é que não é fácil rastrear e solucionar problemas.
O Servlet é uma língua pura Java e é boa em processos de processamento e lógica de negócios. A desvantagem é que não é intuitivo gerar páginas dinâmicas da Web.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.