Spring- MVC: HTTP-статус 404 - не найден - PullRequest
1 голос
/ 25 марта 2020

Я создал простой проект spring- mvc с использованием сервера Tomcat v9.0, чтобы просто проверить, все ли работает нормально или нет. На главной странице, когда я нажимаю кнопку «Отправить», в консоли ожидается сообщение, но вместо этого я получаю следующее сообщение:

Статус HTTP 404 - Не найдено

Описание: Исходный сервер не нашел текущего представления для целевого ресурса или не хочет раскрывать, что он существует.

Вот код: web. xml

<web-app>
  <display-name>Archetype Created Web Application</display-name>

  <servlet>
    <servlet-name>Spring-MVC</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>Spring-MVC</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>

Пом. xml файл:

<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mvc</groupId>
  <artifactId>SpringMVC</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>SpringMVC Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <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>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>

  </dependencies>
  <build>
    <finalName>SpringMVC</finalName>
  </build>
</project>

index. jsp:

<html>
<body>

<form action="add">
    <input type="text" name="t1"/><br>
    <input type="text" name="t2"/><br>
    <input type="submit"/>
</form>

</body>
</html>

Контроллер:

@Controller
public class AddController {

    @RequestMapping("/add")
    public void add() {
        System.out.println("Working!!");
    }

Spring- MVC -сервлет. xml:

<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.spring"></ctx:component-scan>
</beans>

1 Ответ

0 голосов
/ 25 марта 2020

То, как вы определили здесь действие формы -

<form action="add">
    <input type="text" name="t1"/><br>
    <input type="text" name="t2"/><br>
    <input type="submit"/>
</form>

неверно.

Значением действия формы должен быть URL-адрес. В зависимости от протокола, хоста и номера порта это значение будет отличаться от add.

Если вы работаете на локальном хосте с http на порту 8080, то это должно быть - http://localhost:8080/add. Это будет отличаться в зависимости от того, на каком порту вы запускаете приложение. Если вы не знаете, вероятно, это 8080, так как это порт по умолчанию для tomcat.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...