Solucionado (ver solução)
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.