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
spring-mvc-demo-servlet.xml
Das Projekt wie im abgehangenen Bild aufgebaut und enthält keine Konfiguration im Code, bis auf einen Controller:

Weiterhin habe ich eine AppConfiguration angelegt, da ich glaube, dass diese den internen Tomcat startet.
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
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?
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>

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?