Sistema de gerenciamento baseado em Servlet (incluindo código-fonte do servidor + banco de dados)

Link para download de dados

introduzir

Uma versão concisa do sistema de gerenciamento baseado no framework Servlet   ;

Realizar  login  ,  cadastro  ,  inclusão  ,  exclusão  ,  modificação  e  consulta  ;

Pode continuar a melhorar e adicionar front-end, verificação, outras funções, etc.;

Pode ser usado como  modelo básico para exercícios de desenvolvimento de projetos Servlet  ;

Projeto de currículo  ,  base de desenvolvimento do projeto de graduação  ;

Qualquer estrutura complexa é uma combinação e extensão de conhecimento simples, e aprender o básico é o mais importante;

Este projeto é simples, fácil de entender os princípios básicos e estabelece as bases para o desenvolvimento de projetos complexos como Servlet, SSH e SSM.

preparação ambiental

Plataforma de desenvolvimento: Idea 2019

Banco de dados: MySQL 5.0.22

Servidor: Tomcat 9.0.37

Nota: É necessário instalar a plataforma de desenvolvimento IDEA, banco de dados MySQL e servidor Tomcat. As versões podem não ser exatamente as mesmas. Basta fazer um bom trabalho na configuração adaptativa da versão.

estrutura do projeto

1. Banco de dados e arquivos de código Java 

Digite uma descrição da imagem

2. Jsp e outros códigos front-end 

Digite uma descrição da imagem

3. Configuração e operação do servidor Tomcat

Digite uma descrição da imagem

4. Banco de dados MySQL 

Digite uma descrição da imagem

Fundamental

1. Conceitos relacionados

Servlet é uma tecnologia para desenvolvimento de páginas web dinâmicas, que é usada para navegar e modificar dados interativamente e gerar conteúdo web dinâmico. Hoje em dia, o Servlet raramente é usado no desenvolvimento da Web Java para desenvolver aplicativos da Web, e mais é o desenvolvimento de estrutura integrada. Na verdade, a maioria dos frameworks são encapsulados com base em ferramentas básicas, como Struts é o encapsulamento de servlet e filtro, Hibernate é o encapsulamento de JDBC e assim por diante. Portanto, não importa qual framework você aprenda, você deve primeiro entender o conhecimento básico em profundidade, para ter uma compreensão racional e uma solução para os problemas que surgem no framework.

2. Fundamentos

2.1 Fluxo de trabalho

  1. Web Client envia solicitação Http para contêiner Servlet (Tomcat)

  2. Contêiner de servlet recebe solicitações do Web Client

  3. O container Servlet cria um objeto HttpRequest e encapsula as informações solicitadas pelo Web Client neste objeto.

  4. Contêiner Servlet cria um objeto HttpResponse

  5. O contêiner Servlet chama o método de serviço do objeto HttpServlet e passa o objeto HttpRequest e o objeto HttpResponse como parâmetros para o objeto HttpServlet.

  6. HttpServlet chama métodos relacionados do objeto HttpRequest para obter informações de solicitação Http.

  7. HttpServlet chama os métodos relevantes do objeto HttpResponse para gerar dados de resposta.

  8. O container Servlet envia o resultado da resposta do HttpServlet para o Web Client.

Digite uma descrição da imagem

Digite uma descrição da imagem

2.2 Processo de solicitação de processamento

  1. O usuário clica em um link, que leva a um servlet em vez de uma página estática.

  2. O container "vê" que a requisição é um Servlet, então ele cria dois objetos, HttpServletRequest e HttpServletResponse.

  3. O contêiner encontra o Servlet correto de acordo com a URL na solicitação, cria ou aloca um encadeamento para a solicitação e passa os objetos de solicitação e resposta para o encadeamento do Servlet.

  4. O contêiner chama o método service() do Servlet. Dependendo do tipo de solicitação, o método service() chama o método doGet() ou doPost(). Isso pressupõe que o método doGet() é chamado.

  5. O método doGet() gera uma página dinâmica e "enche" esta página no objeto de resposta. Observe que o contêiner também tem uma referência ao objeto de resposta!

  6. Quando o encadeamento termina, o contêiner converte o objeto de resposta em uma resposta HTTP, a envia de volta ao cliente e exclui os objetos de solicitação e resposta.

2.3 Princípio de funcionamento

​ 1. Primeiro, explique brevemente o processo de recebimento e resposta do Servlet às solicitações do cliente. Primeiro, o cliente envia uma solicitação e o Servlet chama o método service() para responder à solicitação. Pode ser visto no código-fonte que o método de solicitação no método service() Após a correspondência, escolha chamar doGet, doPost e outros métodos e, em seguida, insira o método correspondente para chamar o método da camada lógica para realizar a resposta ao cliente. Não existem métodos como doGet(), doPost(), etc. na interface Servlet e GenericServlet. Esses métodos são definidos em HttpServlet, mas todos retornam informações de erro. Portanto, toda vez que definimos um Servlet, devemos implementar doGet ou doPost etc esses métodos.

​ 2. Todo Servlet customizado deve implementar a interface Servlet. Existem cinco métodos definidos na interface Servlet, e os três métodos mais importantes envolvem o ciclo de vida do Servlet, que são init() mencionado acima, service (), destroy ( ) método. GenericServlet é um Servlet genérico, não específico para nenhum protocolo, que implementa a interface Servlet. HttpServlet herda de GenericServlet, então HttpServlet também implementa a interface Servlet. Portanto, quando definimos o Servlet, precisamos apenas herdar o HttpServlet.

3. A interface Servlet e GenericServlet não são específicas para nenhum protocolo, enquanto HttpServlet é uma classe específica para o protocolo HTTP, então o método service() é implementado em HttpServlet, e a requisição ServletRequest e ServletResponse são forçadas para HttpRequest e HttpResponse.

2.4 Ciclo de vida do servlet

O programa servlet é invocado pelo servidor web, e o servidor web implementa o gerenciamento do ciclo de vida do servlet. Quando sua aplicação carrega e usa um Servlet, uma série de eventos irá ocorrer desde a inicialização até a destruição do Servlet.Esses eventos são chamados de eventos (ou métodos) do ciclo de vida do Servlet.

O ciclo de vida do Servlet pode ser resumido como:

Carregamento de servlet ---> instanciação ---> serviço ---> destruição

O ciclo de vida do Servlet define como um Servlet é carregado, inicializado e como ele recebe solicitações, responde a solicitações e fornece serviços.

Digite uma descrição da imagem

1. Criar uma instância do Servlet 

O contêiner da web é responsável por carregar o Servlet. Quando o contêiner da web for iniciado ou quando o Servlet for usado pela primeira vez, o contêiner será responsável por criar a instância do Servlet, mas o usuário deve especificar o local do Servlet através do descritor de implantação (web.xml) , que é o nome da classe onde o Servlet reside.Após o carregamento bem-sucedido, o contêiner web irá instanciar o Servlet por meio de reflexão. 

2. O contêiner WEB chama o método init() do Servlet para inicializar o Servlet. 

Depois que o Servlet é instanciado, o contêiner Servlet chama o método init() para inicializar o objeto, principalmente para permitir que o objeto Servlet conclua algumas tarefas antes de processar solicitações do cliente. Trabalho de inicialização, por exemplo, estabelecer uma conexão com o banco de dados, obter informações de configuração, etc. Para cada instância do Servlet, o método init() só pode ser chamado uma vez. O método init() tem um parâmetro do tipo ServletConfig, e o contêiner do Servlet passa as informações de configuração para o Servlet por meio desse parâmetro. O Servlet usa o objeto ServletConfig para obter parâmetros de inicialização fornecidos na forma de pares nome-valor das informações de configuração do aplicativo da Web. Além disso, no Servlet, o objeto ServletContext que descreve o ambiente operacional do Servlet também pode ser obtido por meio do objeto ServletConfig.Com esse objeto, o Servlet pode se comunicar com seu contêiner de Servlet. Não importa quantos clientes acessem o servlet, init() não será executado repetidamente. 

3. Após a inicialização do Servlet, ele sempre existirá no contêiner, service() responde à solicitação do cliente 

① Se o cliente enviar uma solicitação GET, o contêiner chama o método doGet do Servlet para processar e responder à solicitação 

② Se o cliente envia uma solicitação POST, o contêiner chama o Servlet O método doPost processa e responde à solicitação 

③ ou usa uniformemente o método service() para processar e responder às solicitações do usuário

service() é o núcleo do Servlet, responsável por responder às solicitações dos clientes. Sempre que um cliente solicitar um objeto HttpServlet, o método Service() do objeto será chamado e um objeto "request" (ServletRequest) e um objeto "response" (ServletResponse) serão passados ​​para esse método como parâmetros. O método Service() já existe em HttpServlet. A função de serviço padrão é chamar a função do correspondente ao método da solicitação HTTP. Deve-se observar que antes do método service() ser chamado pelo contêiner, deve-se garantir que o método init() seja concluído corretamente. O contêiner construirá um objeto de solicitação (tipo ServletRequest) representando as informações de solicitação do cliente e um objeto de resposta (tipo ServletResponse) para responder ao cliente como parâmetros para o método service(). No método service (), o objeto Servlet obtém as informações relevantes e solicita informações do cliente por meio do objeto ServletRequest e, após processar a solicitação, chama o método do objeto ServletResponse para definir as informações de resposta. 

4. Quando o contêiner WEB decide destruir o Servlet, ele primeiro chama o método destroy() do Servlet e geralmente destrói o Servlet antes de fechar o aplicativo da web

destroy() é executado apenas uma vez, e este método é executado quando o servidor é parado e o Servlet é descarregado. Quando o contêiner detecta que um objeto servlet deve ser removido do serviço, o contêiner chama o método destroy() do objeto para que o objeto servlet possa liberar os recursos que usa e salvar dados em dispositivos de armazenamento persistentes, por exemplo, Salvar os dados na memória ao banco de dados, feche a conexão com o banco de dados, etc. Quando a memória precisar ser liberada ou o contêiner for fechado, o contêiner chamará o método destroy() do objeto Servlet. Antes de o contêiner do Servlet chamar o método destroy(), se houver outros threads em execução no método service(), o contêiner aguardará que esses threads terminem a execução ou aguarde o valor de tempo limite definido pelo servidor chegar. Depois que o método destroy() do objeto Servlet é chamado, o contêiner não enviará outras solicitações ao objeto. Se o Servlet for necessário para atender o cliente novamente, o contêiner gerará novamente um objeto Servlet para manipular a solicitação do cliente. Depois que o método destroy() é chamado, o contêiner liberará o objeto Servlet e, no tempo seguinte, o objeto será reciclado pelo coletor de lixo do Java. 

Observação 

① Em circunstâncias normais, o Servlet será inicializado apenas uma vez, o serviço de processamento será chamado várias vezes e a destruição será chamada apenas uma vez; mas se um Servlet não for usado por um longo período, ele será destruído automaticamente pelo container, e se precisar ser usado novamente A operação de inicialização será reinicializada quando chegar a hora, ou seja, em casos especiais, a inicialização poderá ser realizada várias vezes, e a destruição também poderá ser realizada várias vezes . 

② Após a criação da instância do servlet, antes que o servlet possa fornecer serviços para as solicitações do cliente, o contêiner chamará o método init() na instância do servlet. Se você tiver um código de inicialização, deverá sobrescrever o método init() da classe servlet, caso contrário, o método init() de GenericServlet será chamado. E para cada solicitação do cliente (não importa quem, se é a mesma pessoa ou não, apenas para a solicitação), o contêiner criará um novo par de objetos de solicitação e resposta e criará uma nova thread/pilha. Nunca haverá várias instâncias de qualquer classe de servlet, exceto para um caso especial (SingleThreadModel).

③ Os quatro ciclos do ciclo de vida do servlet são resumidos da seguinte forma: 
a. O processo de instanciação e carregamento do servlet, novo 

b. Inicialização do init (ServletConfig). 

c. Para processar a solicitação, chame os métodos service, doget e dopost do servlet para passar a solicitação e a resposta como parâmetros. 

d. Saia do serviço e chame o método destroy para liberar recursos.

exibição de página

1. Página de login

Digite uma descrição da imagem

2. Página de registro 

Digite uma descrição da imagem

3. Página inicial 

Digite uma descrição da imagem

4. Página de exibição

Digite uma descrição da imagem

5. Adicionar nova página 

Digite uma descrição da imagem

6. Excluir página 

Digite uma descrição da imagem

7. Modifique a página 

Digite uma descrição da imagem

Acho que você gosta

Origin blog.csdn.net/tianqiquan/article/details/132339037
Recomendado
Clasificación