Spring MVC mit XML Konfiguration

looparda

Top Contributor
Ich "befolge" gerade einen Videokurs zu Spring MVC. Für mich ist der JEE Web-Krempel neu. Ich habe schon ein paar mal eine Spring Applikation mit MVC aufgesetzt, jedoch meist ausschließlich in Java konfiguriert. Im besagten Kurs wird ein Projekt aufgesetzt, welche beim Aufruf von "/" die main-menu.jsp parsen und anzeigen soll. Jedoch wird das Projekt etwas seltsam aufgesetzt, indem libs manuell herunterladen und zum Buildpath hinzugefügt werden. Außerdem wird Tomcat manuell auf dem Host als Service installiert. Beide Punkte finde ich schrecklich unnötig und möchte ich nicht befolgen.

web.xml
XML:
<?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.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- Step 3: Add support for component scanning -->
    <context:component-scan base-package="prototype" />

    <!-- Step 4: Add support for conversion, formatting and validation support -->
    <mvc:annotation-driven/>

    <!-- Step 5: Define Spring MVC view resolver -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/" />
        <property name="suffix" value=".jsp" />
    </bean>

</beans>

spring-mvc-demo-servlet.xml
XML:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <display-name>spring-mvc-demo</display-name>

   <!-- Step 1: Configure Spring MVC Dispatcher Servlet -->
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-mvc-demo-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

   <!-- Step 2: Set up URL mapping for Spring MVC Dispatcher Servlet -->
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>
Das Projekt wie im abgehangenen Bild aufgebaut und enthält keine Konfiguration im Code, bis auf einen Controller:
1584369226811.png
Java:
@Controller
public class HomeController {

    @RequestMapping("/")
    public String showPage() {
        return "main-menu";
    }
}

Weiterhin habe ich eine AppConfiguration angelegt, da ich glaube, dass diese den internen Tomcat startet.
Java:
@SpringBootApplication
@EnableWebMvc
public class AppConfig {

    public static void main(String[] args) {
        SpringApplication.run(AppConfig.class, args);
    }

}

Ich betreibe Brute-Force mit den relativen Pfadangaben und schiebe den WEB-INF Ordner zwischen /src/main/webbapp und /src/main/resources hin und her, bekomme aber immer
Code:
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Could not resolve view with name 'main-menu' in servlet with name 'dispatcherServlet'] with root cause

javax.servlet.ServletException: Could not resolve view with name 'main-menu' in servlet with name 'dispatcherServlet'
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1353) ~[spring-webmvc-5.2.4.RELEASE.jar:5.2.4.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1118) ~[spring-webmvc-5.2.4.RELEASE.jar:5.2.4.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1057) ~[spring-webmvc-5.2.4.RELEASE.jar:5.2.4.RELEASE]
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943) ~[spring-webmvc-5.2.4.RELEASE.jar:5.2.4.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.2.4.RELEASE.jar:5.2.4.RELEASE]
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.2.4.RELEASE.jar:5.2.4.RELEASE]
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:634) ~[tomcat-embed-core-9.0.31.jar:9.0.31]
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.2.4.RELEASE.jar:5.2.4.RELEASE]

Ich bin etwas verzweifelt und mir nicht sicher, ob die Konfiguration via XML überhaupt noch eingelesen wird in dieser Konstellation. Vielleicht weiß jemand mehr zur Konfiguration?
 

mrBrown

Super-Moderator
Mitarbeiter
Ehrliche Meinung? Kurse, die das ohne Maven oder Gradle machen, würde ich generell ganz vergessen, und ohne Spring Boot und Konfigurationen über Annotationen würde ich auch nicht mehr anfangen.

Oder willst du es unbedingt auf dem "alten Weg" machen?
 

looparda

Top Contributor
Ich hab vermutlich mit "legacy"-Systemen zutun, die alle möglichen Konfigurationen benutzen. Deshalb wollte ich gern beide halbwegs verstehen und migrieren können.
 

Ähnliche Java Themen

Neue Themen


Oben