Tomcat, problem z mapowanie servletow, odpaleniem projektu, Spring + maven

0

Cześć,
mam problem, stawiam pierwsze kroki ze Springiem, uczę się z tej książki: Spring MVC, przewodnik dla początkujących

kod

package com.packt.webstore.controller;

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

@Controller
public class HomeController {

    @RequestMapping("/")
    public String welcome(Model model){
        model.addAttribute("greeting", "Witaj w sklepie internetowym");
        model.addAttribute("tagline", "Wyjątkowym i jedynym sklepie internetowym");

        return "welcome";
    }
}

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link rel="stylesheet"
          href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
    <title>Witaj</title>
</head>
<body>
<section>
    <div class="jumbotron">
        <div class="container">
            <h1> ${greeting} </h1>
            <p> ${tagline} </p>
        </div>
    </div>
</section>
</body>
</html>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <servlet>
        <servlet-name>DefaultServlet</servlet-name>
        <servlet-class> org.springframework.web.servlet.DispatcherServlet
            </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>DefaultServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
    <mvc:annotation-driven />
    <context:component-scan base-package="com.packt.webstore" />
    <bean class="org.springframework.web.servlet.view.
    InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>
<?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>com.packt</groupId>
    <artifactId>webstore</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--<packaging>war</packaging>  samemu dodalem-->

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>4.3.7.RELEASE</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>

</dependencies>

</project>

tutaj link do screenshota, widać strukture projektu i kod https://ibb.co/k6np8Q

po odpaleniu dostaje: blad 404

ustawienia wszystkiego screen:
konfiguracja run/debug: https://ibb.co/kuUahk
struktura projektu : https://ibb.co/jgtt2k

please help, nie wiem jak z której strony się do tego dobrać

0

Na moje oko zła nazwa widoku- sprawdź nazwę swojego pliku jsp, powinieneś mieć welcome.jsp.

0

Zamiast screenshotów mogłeś dać link do repo na githubie i pewnie ktoś by ci pomógł w 5 minut.

0

MIałam kiedyś coś podobnego. Sprawdz sobie jak wyglada u Ciebie wnetrze pliku war czy jest prawidlowo, czy wszystko jest we wlasciwych folderach. Bo u mnie to był własnie problem. Że IntelliJ składajac moj projekt, robil w nim cuda wianki.

.........

@Edit..
Jeszcze jedna rzecz. . bo zauwazylam ze nie sprecyzowałes.. 404 wyskakuje CI jako error ogolny.. czyli nie dziala link, czy jako view resolver.. bo to 2 rozne rzeczy. To czego mi u Ciebie brakuje to sprecyzowane pliku MainDispatchera.

   <servlet>
        <servlet-name>MainDispatcher</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/MainDispatcher.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>MainDispatcher</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
``````xml

0

Musiałem wygooglać co to view resolver
wyskakuje coś takiego:
HTTP Status [404] – [Not Found]

Type Status Report

Message /webstore

Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.

Apache Tomcat/8.5.15

Jeśli przejdę do strony http://localhost:8081/ to wyskakuje mi strona głowna tomcata, tak powinno być? W tomcatcie mam główną ustawioną na 8080,

co do warów to popatrze, bo tutaj coś pokręciłem pewnie, wcześniej te servlety miałem zmapowane okej, a teraz jak pogrzebałem w konfiguracji to mam info na czerwono, że servlet powinien być zmapowany

1

jest to normalne zachowanie w tomcacie w webapps w folderze ROOT siedzi ta glowna strona tomcata, jesli twoja strona jest pod [tomcat-directoy]/webapps/webstore to jej adres to http://localhost:8081/webstore. Jesli chcialbys aby byla pod http://localhost:8081 to musisz zawartosc webstore przeniesc do ROOT i webstore usunac.

Error, który wskazujesz faktycznie dotyczy View.. czyli inaczej, Servlet nie moze zlokalizowac odpowiedniego pliku welcome.jsp.

Zacznij od sprawdzenia np w tomcacie jak wyglada wolder webstore. Czy w WEB-INF masz faktycznie folder jsp i ten widok.

0

Temat do zamknięcia, miałem parę błędów w kodzie, a IDE nie podkreślało o dziwo, zrobiłem projekt na nowo, poczytałem o artefaktach, deployowaniu i kod działa

1 użytkowników online, w tym zalogowanych: 0, gości: 1