#java #spring-mvc #webjars #spring5
Вопрос:
Привет, я пытаюсь добавить загрузочную загрузку в приложение Spring-MVC 5, работающее в контейнере Servlet 3.0 (Websphere 8.5).
Перед добавлением начальной загрузки в мое приложение. Конфигурация моего приложения и контроллер тестирования выглядят следующим образом:
- Web.xml
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</context-param>
- dispatcher-servlet.xml
<context:component-scan base-package="com.lagatahk.controller" />
<context:annotation-config />
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/views/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
- helloworldController.java
@Controller
public class HelloWorldController {
String message = "Welcome to Spring MVC5!";
@RequestMapping("/index")
public ModelAndView showIndex(
@RequestParam(value = "name", required = false, defaultValue = "World") String name) {
System.out.println("in /index controller");
ModelAndView mv = new ModelAndView("index");
mv.addObject("message", message);
mv.addObject("name", "UserName");
return mv;
}
With this configuration, I added in pom.xml the webjars for bootstrap and jquery:
- pom.xml
<dependency>
<groupId>org.webjars</groupId>
<artifactId>bootstrap</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery</artifactId>
<version>3.6.0</version>
</dependency>
- Added this line in my dispatcher-servlet.xml
<mvc:resources mapping="/webjars/**" location="/webjars/" />
- Измените представление, index.jsp со ссылкой на таблицу стилей начальной загрузки
<!DOCTYPE html>
<html>
<head>
<script src="/webjars/jquery/3.6.0/jquery.min.js"></script>
<script src="/webjars/bootstrap/5.1.0/js/bootstrap.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet"
href="/webjars/bootstrap/5.1.0/css/bootstrap.min.css" />
<title>Spring 5 MVC - Index Page</title>
</head>
<body>
<center>
<h1>Welcome to this Spring 5 MVC Sample Project</h1>
<p>This is a Spring 5 MVC Example App using apache maven webapp
archieType. <br/>
<ol>
<li><a href="https://www.google.com">First
Reference</a></li>
</ol>
</p>
</center>
<div class="container">
<br />
<div class="alert alert-success">
<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>
<strong>Hi ${name}!</strong> It is working as we expected. Your
message is ${message}
</div>
</div>
</body>
</html>
Однако после запуска моего приложения мои исходные контроллеры и представления, похоже, больше не работают. В журнале сервера приложений :
[8/15/21 22:57:48:062 CST] 0000009f PageNotFound W
org.springframework.web.servlet.DispatcherServlet noHandlerFound No mapping found for HTTP
request with URI [/springlearnweb/index] in DispatcherServlet with name 'dispatcher'
Я пропустил какую-либо конфигурацию? Пожалуйста, помогите !
Комментарии:
1. 1. Удалите
<context:annotation-config />
уже подразумеваемое<context:component-scan />
. 2. добавьте<mvc:annotation-driven />
, 3 добавьте свой<mvc:resources ..
тег. 4. убедитесьmvc
, что пространство имен сопоставлено! (это не ясно из вашего кода, так как заголовок xml-файла отсутствует).