Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
10
respostas

Dúvida para criação do projeto web com o Maven / Spring e Hibernate

Boa tarde pessoal!!!

Preciso MUITO da ajuda de alguém, por favor me ajudem !!!

Eu tenho um projeto "Maven", e mais dois módulos um "quickstart" e um "webapp"...

Eu consegui consegui configurar o Maven, pra usar o Spring...

Eu criei um formulário.jsp, dentro do módulo "webapp", na pasta src\main\webapp\WEB-INF\jsp COM:

<body>
    <h1>Cadastro de Produtos</h1>
    <form action="<c:url value='/nomeDoModuloWeb/formulario' />" method="post"><br/>
        Nome:         <input type="text"><br/>
        Descricao :   <input type="text"><br/>
</body>

Eu acesso o http://localhost:8080 => Mostra a página de configuração do Tomcat normalmente - Tudo OK.

Eu acesso o http://localhost:8080/nomeDoModuloWeb => Mostra a msg Hello World! - Tudo OK.

Agora se eu tento acessar a página Eu acesso o http://localhost:8080/nomeDoModuloWeb/formulario => Gera erro 500

Aonde e como eu tenho que mapear meu .jsp ?

Eu criei minha classe "modelo" - produto no módulo "quickstart"... Mas não consigo incluir as anotações... @Entity, etc...

10 respostas

Sem a stack trace do erro 500 a gente nao tem como te ajudar Ewerton....

No browser:

HTTP Status 500 - Error instantiating servlet class org.springframework.web.service.DispatcherServlet

type Exception report
message Error instantiating servlet class org.springframework.web.service.DispatcherServlet

description The server encountered an internal error that prevented it from fulfilling this request.

exception
javax.servlet.ServletException: Error instantiating servlet class org.springframework.web.service.DispatcherServlet
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Unknown Source)


root cause
java.lang.ClassNotFoundException: org.springframework.web.service.DispatcherServlet
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Unknown Source)


note The full stack trace of the root cause is available in the Apache Tomcat/8.0.30 logs.


Apache Tomcat/8.0.30

No console:

mar 11, 2016 4:43:50 PM org.apache.catalina.core.ApplicationContext log
INFORMAÇÕES: Marking servlet spring mvc as unavailable
mar 11, 2016 4:43:50 PM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Allocate exception for servlet spring mvc
java.lang.ClassNotFoundException: org.springframework.web.service.DispatcherServlet
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:520)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:501)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:120)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1095)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:817)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:521)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1096)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:674)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

Importei o projeto Maven...

Criei um módulo "quickstart" e um "webapp" nesse projeto...

Configurei as dependências do "Javax", do "Spring", os plugins do "Maven" e os dois módulos no pom.xml do projeto Maven...

Onde eu devo criar o .jsp que irá receber os dados?

Segue abaixo pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.fiveware</groupId>
    <artifactId>fiveware-test</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <name>Test Parent</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <javax.inject.version>1</javax.inject.version>
    </properties>

    <dependencies>

        <!-- JavaX -->
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>
        <!-- FIM - JavaX -->

        <!-- Spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.2.5.RELEASE</version>
        </dependency>
        <!-- FIM Spring -->

    </dependencies>

    <build>

        <plugins>

            <plugin>
                <artifactId>maven-eclipse-plugin</artifactId>
                <configuration>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>true</downloadJavadocs>
                    <wtpversion>2.0</wtpversion>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

        </plugins>

    </build>

    <modules>
        <module>fiveware-test-service</module>
        <module>fiveware-test-web</module>
  </modules>
</project>

Obrigado pela ajuda!!

Criei dentro do módulo webapp, na pasta:

src/main/webapp/WEB-INF/jsp

O formulario.jsp

Está correto ?


Eu importei o projeto, criei os módulos (um quickstart e outro webapp), configurei o Maven pra usar o Spring, e adicionei as dependências do Spring e do Hibernate no pom.xml do “Projeto Maven”...

Criei um formulario.jsp no módulo webapp, na pasta src/main/webapp/WEB-INF/views (que é o padrão dos .jsp no Spring)

Criei a classe modelo “Produto”, criei o ProdutoController e fiz o mapeamento com o @RequestMapping.

Quando eu clico com o direito no projeto e estolho Run on Server, carrega normalmente a tela do index.jsp (Hello World!)

Mas quando eu digito /nomeQueEstaNoRequestMapping, gera erro 404, e a msg no console:

mar 13, 2016 11:45:37 PM org.springframework.web.servlet.PageNotFound noHandlerFound
ADVERTÊNCIA: No mapping found for HTTP request with URI [/fiveware-test-web/form] in DispatcherServlet with name 'spring mvc'

Está faltando algum mapeamento, ele está errado... Ou está faltando alguma dependencia no pom.xml ??

Obrigado pela atenção!!

Oi Ewerton,

Você colocou @Controller em cima da classe ProdutoController?

Além do @RequestMapping (que vai no método), precisa usar a @Controller (que vai na classe).

Abraço

Sim coloquei...

package org.fiveware.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class ProdutoController {

    @RequestMapping("/form")
    public String formulario() {
        return "formulario";
    }
}

Deixa eu ver sua configuração XML e também coloca aqui a StackTrace completa para ver o erro todo.

Abraço

solução!

Obrigado pela tentativa de me ajudar Paulo Alves Jr !!

Mas meu tempo para fazer a prova acabou...

Abraço

Ewerton, vamos tentar matar esse exercicio, como pratica mesmo, que acha? E mandar mesmo assim la pra empresa. Essa perseveranca sempre da uma impressionada.