Quanto sabem a tecnologia de servlet de programação da web java?
1. Noções básicas para servlet <r /> Para o desenvolvimento da tecnologia de servlet, a Sun Company fornece algumas interfaces e classes de coluna, a mais importante das quais é a interface javax.servlet.servlet. Os dois pacotes importantes são Javax.Servlet e Javax.Servlet.http. Servlet é uma classe que implementa a interface do servlet. É chamado e criado por um contêiner da web (Tomcat/Jetty, etc.) para receber e responder às solicitações do usuário. 5 Métodos abstratos são definidos na interface do servlet:
A estrutura de classe de nível superior do servlet é a seguinte:
2. O primeiro programa de servlet
Crie um novo projeto da Web Java e, em seguida, crie uma nova classe Hello. O código -fonte Hello.java é o seguinte:
pacote zzz; importar java.io.ioException; importar java.io.printwriter; importar javax.servlet.http.httpServlet; importar javax.servlet.http.httpServLeveLeQuest; Import javax.Servlet.http.HtPSLevensOnsOnsensport; Doget (solicitação httpServletRequest, httpServletResponse Response) lança ioexception {// Definir mensagem de resposta que codifica a resposta.setContentType ("text/html; charset = utf-8"); PrintWriter out = Response.getWriter (); out.println ("Hello World"); } @Override public void DoPost (solicitação httpServletRequest, httpServletResponse resposta) lança IoException {this.Doget (solicitação, resposta); }}O arquivo de configuração web.xml é o seguinte:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id = "webApp_id" versão = "3.1"> <nome-name> zzz </libe-name> <stetlet> <!-Registre servlet-> <Verlet-name> hello </servlet-name> <!-especifique o nome do servlet-> <Vertlet-class> zzz.hello </servlet-class> <!-especificar o fulltlet Full Nome- -> <ame-name> Olá </servlet-name> <!-Especifique o nome do servlet-> <url-tattern>/hello </url-tattern> <!-Especifique o caminho virtual para acessar o servlet-> </servlet-mapping> </web-app>
Iniciando e executando o navegador exibe da seguinte maneira:
3. Ciclo de vida de servlet
O ciclo de vida do servlet é dividido aproximadamente em 3 estágios, o estágio de inicialização, o estágio de operação e o estágio de destruição . Os seguintes são descrições detalhadas de cada estágio:
Fase de inicialização: Quando o cliente faz uma solicitação ao contêiner do servlet para acessar o servlet, o contêiner divulga primeiro a solicitação para verificar se o objeto Servlet está na memória e se for usado diretamente; Caso contrário, crie o objeto Servlet e ligue para o método init (). Observe que o init () será chamado apenas uma vez durante todo o ciclo de declaração do servlet.
Estágio de corrida: este é o estágio mais importante do servlet. Nesse estágio, o contêiner construirá um objeto ServletRequest e ServletResponse como parâmetros e o passará para o método Servlet Service (). Para cada acesso de um servlet, o contêiner servlet chamará o método Service () uma vez. O método Service () será chamado várias vezes durante todo o ciclo de vida do servlet
Estágio de destruição: quando o servidor é fechado ou o aplicativo da Web é removido do contêiner, este estágio será inserido. Neste momento, o método Destroy () será chamado. Durante todo o ciclo de vida, o método Destroy () será chamado apenas uma vez. Quando o cliente acessa primeiro o servlet, o contêiner cria o objeto Servlet, mas às vezes espera -se que o objeto servlet seja iniciado assim que o Tomcat for iniciado. Como lidar com isso? Neste momento, você só precisa usar o elemento <Olad-on-startup> em web.xml. A configuração de exemplo é a seguinte:
<servlet> <servlet-name>Hello</servlet-name> <servlet-class>zzz.Hello</servlet-class> <!-- Automatic loading of servlet program--> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
4. ServletConfig e ServletContext
Durante a interface ServletConfig , se for necessária algumas informações auxiliares, como codificação de arquivos, empresas que usam servlets etc., essas informações podem ser configuradas usando o elemento <iit-param> no web.xml. Quando o Tomcat inicializa um servlet, as informações de configuração do servlet serão encapsuladas em um objeto ServletConfig e passadas para o servlet através do init (servletConfig config). ServletConfig define uma série de métodos para obter informações de configuração:
Em seguida, tome getInitParameter () como exemplo para explicar o uso desse método:
O arquivo de configuração web.xml é o seguinte:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id = "webapp_id" versão = "3.1"> <lame-name> zzz </sisplay-name> <Verlet> <Verlet-name> hello </ervlet-name> <Servlet-class> zzz.hello </servlet-class> <itir--param> <amam-name> </param-name> <aMLET> dahua </param-name> <Verlet-name> Hello </ervlet-name> <url-tattern>/hello </url-tattern> </servlet-mapping> </web -pp>
Hello.java o arquivo é o seguinte:
package zzz;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletConfig;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Hello extends HttpServlet {@Override public void Doget (solicitação httpServletRequest, httpServletResponse resposta) lança ioexception {// Definir mensagem de resposta codificação Response.setContentType ("text/html; charset = utf-8"); PrintWriter out = Response.getWriter (); Servletconfig config = this.getServletConfig (); String param = config.getInitParameter ("Company"); out.println ("Company:" + Param); } @Override public void DoPost (solicitação httpServletRequest, httpServletResponse resposta) lança IoException {this.Doget (solicitação, resposta); }} Interface ServletContext
Quando o contêiner do servlet é iniciado, um objeto exclusivo servletContext é criado para cada aplicativo da web representar o aplicativo Web atual. Esse objeto não apenas encapsula todas as informações do aplicativo da Web, mas também implementa o compartilhamento de dados entre vários objetos do servlet. No web.xml, você pode não apenas configurar as informações de inicialização do servlet, mas também configurar as informações de inicialização de todo o aplicativo da Web. O método de configuração é o seguinte:
<Cexexp-Param> <amam-name> nome </amam-name> <amam-value> luoxn28 </param-value> </context-param> <context-param> <amam-name> Company </amam-Name> <amam-value> dahua </a Param-value> </context-paparam>
Nota: Pode haver apenas um <am-name> e <amam-value> em um elemento <Context-Param>, e a configuração acima é configurada em <web-app> em web.xml. Hello.java o arquivo é o seguinte:
pacote zzz; importar java.io.ioException; importar java.io.printwriter; importar java.util.enumeration; importar javax.servlet.servletContext; importar javax.servlet.http.httpslet; import javax.ervlet.port.http.HtPSTPLEV; javax.servlet.http.httpServletResponse; classe pública Hello estende httpServlet {@Override public void Doget (httpServletRequest solicitação, httpServletResponse) lança "text); PrintWriter out = Response.getWriter (); ServletContext context = this.getServletContext (); Enumeração <string> paramnames = context.getInitParameterNames (); while (paramnames.hasMoreElements ()) {string name = paramnames.nextElement (); String value = context.getInitParameter (nome); out.println (nome + ":" + valor + "<br/>"); }} @Override public void DoPost (solicitação httpServletRequest, httpServletResponse resposta) lança ioexception {this.Doget (request, resposta); }}Como todos os servlets em um aplicativo da web compartilham um objeto ServletContext, as propriedades do domínio do objeto ServletContext podem ser acessadas por todos os servlets no aplicativo da web. Na interface ServletContext, quatro métodos são definidos para adicionar, excluir e definir as propriedades do domínio do servletContext:
Através do método acima, você pode realizar o compartilhamento de dados entre vários servlets. Este exemplo específico não será publicado com código. Existem muitas informações que podem ser referenciadas on -line, como clicar:
Javaweb Servlet Development Resumo (ii)
O exposto acima é tudo sobre este artigo, e espero que seja útil que todos entendam a tecnologia de servlet da web java.
Referências
1.