Pergunta

Esta questão já tem uma resposta aqui:

Eu tenho um aplicativo que envia o cliente para outro site para lidar com os pagamentos. O outro local, fora do cliente, chama uma página no nosso servidor para nos informar que o status é do pagamento. Os chamados cheques página os parâmetros que são dadas pelo aplicativo de pagamento e verifica se a transação é conhecido por nós. Em seguida, ele atualiza o banco de dados para refletir o status. Tudo isto é feito sem qualquer interação com o cliente.

Eu pessoalmente tenho escolhido para implementar essa funcionalidade como um JSP, uma vez que é mais fácil simplesmente soltar um arquivo no sistema de arquivos do que para compilar e empacotar o arquivo e, em seguida, adicionar uma entrada em um arquivo de configuração.

Considerando a funcionalidade da página que eu presumiria que um servlet seria a opção preferida. A questão (s) são os seguintes:

  • É a minha presunção correto?
  • Existe um motivo real para usar um servlet ao longo de um JSP?
  • Quais são essas razões?
  • Foi útil?

    Solução

    A JSP é compilado para um servlet a primeira vez que é executado. Isso significa que não há diferença de tempo de execução real entre eles.

    No entanto, a maioria tem uma tradição de servlets de uso para os controladores e JSPs para vistas. Desde controladores são apenas classes Java você pode obter suporte completo de ferramentas (conclusão de código etc.) de todos os IDEs. Isso dá vezes melhor qualidade e desenvolvimento mais rápido em comparação com JSPs. (IntelliJ IDEA vem à mente) Alguns do IDE mais avançada tem grande apoio JSP, tornando esse argumento obsoleto.

    Se você está fazendo o seu próprio quadro ou apenas fazer com JSPs simples, então você deve se sentir livre para continuar a usar JSPs. Não há nenhuma diferença de desempenho e se você sentir JSPs são mais fáceis de escrever, em seguida, por todos os meios continuar.

    Outras dicas

    JSPs: Para apresentar os dados para o usuário. Nenhuma lógica de negócios deve estar aqui, e certamente nenhum acesso banco de dados.

    Servlets: Para introduzir alça a partir de uma URL formulário ou específico. Normalmente as pessoas vão usar uma biblioteca como Struts / Primavera no topo de Servlets para esclarecer a programação. Independentemente do servlet deve apenas validar os dados que vêm em e, em seguida, passá-lo para uma implementação de camada de negócios de back-end (que você pode casos de teste código contra). Em seguida, deverá colocar os valores resultantes do pedido ou sessão, e chamar um JSP para exibi-los.

    Modelo: Um modelo de dados que contém seus dados estruturados que o website alças. O servlet pode levar os argumentos, colocá-los no modelo e, em seguida, chamar a camada de negócios. O modelo pode então interagir com DAOs back-end (ou hibernação) para acessar o banco de dados.

    Qualquer projeto não-trivial deve implementar uma estrutura MVC. É, evidentemente, um exagero para a funcionalidade trivial. No seu caso eu iria implementar um servlet que chama um DAO para atualizar o status, etc, ou o que for necessário.

    JSPs devem ser usados ??na camada de apresentação, servlets para lógica de negócios e back-end (normalmente camada de banco de dados) de código.

    Eu não conheço nenhuma razão para que você não pode usar uma JSP como você descreve (ele é compilado para um servlet pela containter de qualquer maneira), mas você está certo, o método preferido é torná-lo um servlet em o primeiro lugar.

    JSPs são um atalho para escrever um servlet. Na verdade, eles são convertidos para servlet java de código antes da compilação. (Você pode verificá-lo sob algum subdir tomcat wich eu não me lembro o nome).

    Para escolher entre servlet uma JSP Eu uso uma regra simples: se a página contém mais código html que o código java, ir para JSP, caso contrário, basta escrever um servlet. Em geral, que traduz aproximadamente a: uso JSPs para apresentação de conteúdo e servlets para o controle, validação, etc

    .

    Além disso, é mais fácil de organizar e estruturar o seu código dentro de um servlet, uma vez que utiliza a sintaxe classe java simples. JSPs tendem a ser mais monolítico, embora a sua possível criar métodos dentro então.

    Há 2 regras muito simples:

    1. Sempre que você quiser escrever código Java (lógica de negócio), fazê-lo em uma classe Java (assim, Servlet).
    2. Sempre que você quiser escrever HTML / CSS / JS código (ver / lógica template), fazê-lo em um JSP.

    questão relacionada:

    de

    JSP são essencialmente de marcação que automaticamente é compilado para um servlet pelo servlet container, então a etapa de compilação vai acontecer em ambos os casos. É por isso que um servlet container que suporta JSP deve ter o JDK completo disponível em oposição a precisando apenas da JRE.

    Assim, a principal razão para JSP é reduzir a quantidade de código necessário para processar uma página. Se você não tem que processar uma página, um servlet é melhor.

    Eu sei que esta não é a resposta popular hoje, mas: Quando eu estou projetando um aplicativo a partir do zero, eu sempre usar JSPs. Quando a lógica é não-trivial, eu criar classes Java comuns para fazer o trabalho pesado que eu chamo do JSP. Nunca entendi o argumento de que você deve usar servlets porque, como classes Java puras, são mais sustentável. A JSP pode facilmente chamar uma classe Java pura, e, claro, uma classe Java comum é tão sustentável como qualquer servlet. É mais fácil para formatar uma página em um JSP, porque você pode colocar toda a marcação em linha, em vez de ter que escrever um monte de de println. Mas a maior vantagem de JSPs é que você pode simplesmente deixá-los em um diretório e são directamente acessíveis: você não precisa mexer com a criação de relações entre o URL e o arquivo de classe. Segurança é facilmente manipulado por ter cada JSP começar com uma verificação de segurança, que pode ser uma única instrução de chamada, por isso não há necessidade de colocar a segurança em uma camada de expedição.

    A única razão que eu posso ver que usar um servlet é se você precisa de um mapeamento complexo entre URLs e a classe execução resultante. Como, se você deseja examinar o URL e, em seguida, chamar um de muitas classes, dependendo do estado da sessão ou algo assim. Pessoalmente, eu nunca quis fazer isso, e aplicativos que eu vi que o fazem tendem a ser difíceis de manter, porque antes que você possa sequer começar a fazer uma mudança que você tem que descobrir o que o código está realmente sendo executado.

    A maioria dos aplicativos java são hoje em dia construir sobre o padrão MVC ... No lado do controlador (servlet) você implementar lógica de negócios. O controlador servlet geralmente encaminhar a solicitação para um jsp que irá gerar a resposta HTML real (a exibição no MVC). O objetivo é separar preocupações ... Milhares de livros foram escritos sobre o assunto.

    Em uma arquitetura MVC, servlets são utilizados como controlador e JSP como vista. Mas ambos são tecnicamente o mesmo. JSP será traduzida em servlet, quer em tempo de compilação (como no JDeveloper) ou quando acedida pela primeira vez (como no Tomcat). Assim, a diferença real está na facilidade de uso. Tenho certeza que você vai ter um tempo difícil renderização de páginas HTML usando servlet; mas oposta ao senso comum, você vai realmente achar que é muito fácil de código sequer uma lógica bastante complexa todos dentro JSP (com a ajuda de alguns classe auxiliar preparado talvez). PHP caras fazem isso o tempo todo. E assim eles caem na armadilha de criar códigos de espaguete. Assim, a minha solução para o seu problema: se você achou mais fácil de código em JSP e não envolveria muitos código, fique à vontade para código em JSP. Caso contrário, o uso servlet.

    Concordou com todos os pontos acima sobre as diferenças entre JSPs e Servlets, mas aqui estão algumas considerações adicionais. Você escreve:

    Eu tenho um aplicativo que envia o cliente para outro site para lidar com a pagamentos. O outro local, fora do o cliente, chama uma página em nosso servidor para que possamos saber o que o estado é do pagamento. A página chamada verifica os parâmetros que são dadas pelo aplicativo de pagamento e cheques para ver se a transação é conhecido por nós. Em seguida, ele atualiza o banco de dados para refletir o status. este tudo é feito sem qualquer interação com o cliente.

    O aplicativo está consumindo o serviço de pagamento de outro aplicativo. Sua solução é frágil porque se o serviço de pagamento nas outras mudanças no aplicativo, que quebra sua página JSP. Ou se você deseja alterar as políticas de pagamento da sua aplicação, em seguida, sua página vai ter que mudar. A resposta curta é que sua aplicação deve consumir serviços de pagamento do aplicativo através de um serviço web. Nem um servlet ou uma página JSP é o lugar apropriado para colocar a sua lógica de consumo.

    Em segundo lugar, ao longo destas linhas, a maioria dos usos de servlets / JSP nos últimos anos têm sido postas dentro do contexto de um quadro como Spring ou Struts. Eu recomendaria Primavera, pois oferece-lhe a pilha completa do que você precisa a partir das páginas do servidor a lógica gateway de serviço web para DAOs. Se você quer entender as porcas e parafusos da Primavera, eu recomendaria Spring em Ação . Se você precisa para entender melhor como camadas de uma arquitetura corporativa escrito em uma linguagem como Java (ou C #), eu recomendaria do Fowler Patterns of Enterprise Application Architecture .

    Sim, este deve ser um servlet. A JSP pode ser mais fácil de desenvolver, mas um servlet será mais fácil de manter. Imaginem ter que corrigir alguns erros aleatórios em 6 meses e tentando lembrar como funcionava.

    Em Java Servlet o HTML tags são embeded em java codificação. Em JSP os códigos Java são embeded em HTML tags.

    Para grande aplicação para grande problema do servlet é complexo para ler, entender, depuração, etc por causa da ilegibilidade de embeding mais tags HTML dentro do java coding..So usamos jsp.In jsp é fácil de entender, depurar etc.

    Obrigado e cumprimentos, Sivakumar.j

    eu acho que é até você? Porque JSP é Java dentro de HTML e Servlet é um Java que pode fazer o interior HTML

    hmmm ... servlet é mais sercure de jsp porque se você enviar para Servlet e JSP para outra não há nenhuma extensão de arquivo aparecer e também você não pode ver o que a página é ..

    mas a vantagem de JSP é que você pode codificar lá facilmente.

    Licenciado em: CC-BY-SA com atribuição
    Não afiliado a StackOverflow
    scroll top