No estágio inicial de aprendizado do JavaWeb, todos encontrarão os métodos doGet e doPost no HttpServlet. Eu li "Head First Servlets & JSP" há dois dias e vi que ele fala sobre a diferença entre solicitações get e solicitações post em Servlets.
1: O tamanho dos dados solicitados é diferente.
Como os dados solicitados por get são anexados ao URL e o tamanho dos dados do URL geralmente não pode exceder 2K, há um limite para o tamanho dos dados usando o método de solicitação get. O método de pós-solicitação coloca os dados no corpo da mensagem, portanto, em teoria, não há limite na quantidade de dados. (Mas não pode ser muito grande na operação real)
2: A segurança é diferente
Como os dados solicitados por get são anexados ao URL, usuários externos podem vê-los facilmente. Dessa perspectiva, não é seguro. O método post coloca a solicitação no corpo da mensagem e não será exibida diretamente na URL, portanto nessa perspectiva os dados ficarão mais seguros.
3: Criação de favoritos
Solicitações de obtenção podem criar marcadores; solicitações de postagem não. Por exemplo: suponha que você tenha uma página que permite aos usuários especificar regras de pesquisa. O usuário pode voltar uma semana depois e querer obter os dados originais, mas neste momento há novos dados no servidor.
4: Uso de métodos
get serve para obter algo, apenas uma simples aquisição, sem fazer nenhuma alteração no servidor. Postar significa que o usuário envia dados para processamento e pode modificar os dados no servidor.
5: A solicitação é idempotente?
A solicitação get é idempotente, apenas obtém algo e não modifica o conteúdo do servidor. Pode ser realizado várias vezes sem quaisquer efeitos colaterais ruins. A postagem não é idempotente e os dados enviados no corpo da postagem podem ser usados para transações irreversíveis. Portanto, dessa perspectiva, você deve usar a função doPost() com cautela.
Se method="POST" não for especificado no formulário, o padrão será uma solicitação HTTP GET. Ou seja, o estado padrão é chamar a solicitação get.
No estágio inicial de aprendizado do JavaWeb, todos encontrarão os métodos doGet e doPost no HttpServlet.
(1) método doGet: lida principalmente com solicitações Get em Http (2) método doPost: lida principalmente com solicitações Post em Http
Então, qual é a diferença entre solicitação Get e solicitação Post?
(1) get possui apenas um fluxo. Os parâmetros são anexados ao URL. O número de parâmetros é estritamente limitado e só pode ser strings.
(2) Os parâmetros da postagem são passados por outro fluxo, não pela URL, por isso podem ser muito grandes e também podem ser passados dados binários, como upload de arquivo.
Quando usar os métodos doGet e doPost:
1. Para o servlet enviado por meio do formulário, veja se o método do formulário é get ou post.
2. servlet acessado através do link <a href...>, doGet
3. Digite o endereço do servlet diretamente na barra de endereços do IE, doGet