Я пытался выполнить пример добавления Spring MVC с помощью Maven, но когда я пытаюсь запустить страницу index.jsp, я получаю эту ошибку:
HTTP Status 500 - Error instantiating servlet class org.springframework.web.servlet.DispatcherServlet java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet while executing spring mvc
pom.xml (to include the jars)
--------
<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.spring1</groupId>
<artifactId>mvcexample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>mvcexample</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.1.8.RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
</project>
1. pom для добавления зависимостей maven
index.jsp
---------
<html>
<body>
<form action = "add">
<input type = "text" name = "t1"><br>
<input type = "text" name = "t2"><br>
<input type = "text" name = "t3"><br>
<input type = "submit" value = "submit">
</form>
</body>
</html>
2. страница, которая используется для ввода
display.jsp
------------
<%@ page language = "java" contentType = "text/html; charset=ISO-8859-1"
pageEncoding = "ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv = "Content-Type" content = "text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
Result is :<%=request.getAttribute("result") %>
</body>
</html>
3. страница дисплея для отображения результата
web.xml
-------
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>spring1</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>spring1</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
4. Чтобы определить сервлет диспетчера
spring1-servlet.xml
-------------------
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:ctx = "http://www.springframework.org/schema/context"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc = "http://www.springframework.org/schema/mvc"
xsi:schemaLocation = "http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd ">
<ctx:annotation-config></ctx:annotation-config>
<ctx:component-scan base-package = "com.spring1.mvcexample"></ctx:component-scan>
</beans>
App.java
---------
package com.spring1.mvcexample;
@Controller
public class App
{
@RequestMapping("/add")
public ModelAndView add(HttpServletRequest request,HttpServletResponse response)
{
int i=Integer.parseInt(request.getParameter("t1"));
int j=Integer.parseInt(request.getParameter("t2"));
int k=Integer.parseInt(request.getParameter("t3"));
int l=i+j+k;
ModelAndView mv=new ModelAndView();
mv.setViewName("display.jsp");
mv.addObject("result",l);
return mv;
}
}
5. код, содержащий контроллер
Я упомянул все классы и файлы, которые использовал. Я пытался много раз, но не смог устранить ошибку. Пожалуйста, посоветуйте мне, как я могу исправить ошибку. Заранее спасибо.
@ kerem-can Вы удалили конкретное исключение из заголовка, вы должны были вставить его в тело.
Пожалуйста, отредактируйте вопрос, добавив исключение, которое вы получаете. Уточните, какой класс не обнаруживается.
Попробуйте очистить и обновить проект maven. это должно решить вашу проблему. проверьте, доступна ли соответствующая банка.
вам не хватает некоторых jar зависимостей в вашем pom.xml, любезно добавьте их, некоторые зависимости, которые я вижу, отсутствуют,
org.springframework.beans-3.0.1.RELEASE-A
org.springframework.core-3.0.1.RELEASE-A
org.springframework.web-3.0.1.RELEASE-A
org.springframework.web.servlet-3.0.1.RELEASE-A
org.springframework.web.portlet-3.0.1.RELEASE-A
org.springframework.web.struts-3.0.1.RELEASE-A
Я добавил все зависимости в файл pom, но я все еще получаю сообщение об ошибке. Запуск ProtocolHandler ["ajp-nio-8009"] 2 мая 2018 г. 18:13:48 org.apache.catalina.startup.Catalina start INFO: Запуск сервера через 27559 мс 2 мая 2018 г. 18:14:00 org.springframework.web.servlet.PageNotFound noHandlerFound ПРЕДУПРЕЖДЕНИЕ: не найдено сопоставление для HTTP-запроса с URI [/ mvc2 / add] в DispatcherServlet с именем 'spring1'
Это ясно показывает, что сопоставление URL-адресов страницы неверно. Поэтому в шаблоне URL-адреса укажите *
Вы можете просто добавить следующий тег load-on-startup в web.xml
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>spring1</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring1</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
Я добавил строку load-on -startup, после чего получаю следующую ошибкуFO: Запуск ProtocolHandler ["ajp-nio-8009"] 2 мая 2018 г. 18:13:48 org.apache.catalina.startup.Catalina start INFO: Server запуск через 27559 мс 2 мая 2018 г. 18:14:00 org.springframework.web.servlet.PageNotFound noHandlerFound ПРЕДУПРЕЖДЕНИЕ: не найдено сопоставление для HTTP-запроса с URI [/ mvc2 / add] в DispatcherServlet с именем 'spring1'
Можете ли вы попробовать заменить <ctx: component-scan base-package = "com.spring1.mvcexample"> </ ctx: component-scan> на <ctx: component-scan base-package = "com.spring1.mvcexample. *" > </ ctx: component-scan>
@SaipriyadarshiniBandi Вы получаете другую ошибку. Ранее вы утверждали, что это исключение java.lang.ClassNotFoundException. Теперь вы получаете org.springframework.web.servlet.PageNotFound noHandlerFound. Пожалуйста, отредактируйте свой вопрос, указав эту новую информацию. Обратите внимание, что ваше приложение пытается получить доступ к / mvc2 / add. Где-то вы неправильно заменили отображение. Найдите "mvc2" в своих файлах.
напишите ниже строку под тегом <servlet>
:
<load-on-startup>1</load-on-startup>
Также убедитесь, что ваши файлы web.xml и spring1-servlet.xml должны находиться в папке / WEB-INF.
Не могли бы вы прикрепить консольный вывод? Вы получаете какую-либо ошибку времени компиляции в XML-файле?
Вы уверены, что выполнили все шаги в примере? Вы должны развернуть файл войны на своем сервере, и вместо этого вы создаете jar. Ваша ошибка указывает на то, что некоторые весенние банки не обнаруживаются вашим сервером. Ознакомьтесь с инструкциями по развертыванию.