1

у меня довольно не большой код:

вот мои зависимости в pom.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>org.musa.spring.mvc</groupId>
 <artifactId>Spring_MVC</artifactId>
 <packaging>war</packaging>
 <version>1.0-SNAPSHOT</version>
 <name>Spring_MVC Maven Webapp</name>
 <url>http://maven.apache.org</url>
 <properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 <maven.compiler.source>1.8</maven.compiler.source>
 <maven.compiler.target>1.8</maven.compiler.target>
 </properties>
 <dependencies>
 <dependency>
 <groupId>junit</groupId>
 <artifactId>junit</artifactId>
 <version>3.8.1</version>
 <scope>test</scope>
 </dependency>
 <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
 <dependency>
 <groupId>javax.servlet</groupId>
 <artifactId>servlet-api</artifactId>
 <version>2.5</version>
 <scope>provided</scope>
 </dependency>
 <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-core</artifactId>
 <version>6.0.2</version>
 </dependency>
 <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context</artifactId>
 <version>6.0.2</version>
 </dependency>
 <!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-beans</artifactId>
 <version>6.0.2</version>
 </dependency>
 <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
 <dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-webmvc</artifactId>
 <version>6.0.3</version>
 </dependency><!--добавляем спринг MVC-->
 <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
 <dependency>
 <groupId>javax.servlet</groupId>
 <artifactId>jstl</artifactId>
 <version>1.2</version>
 </dependency><!-- добавляем JSTL для views -->
 </dependencies>
 <build>
 <finalName>Spring_MVC</finalName>
 <plugins>
 <plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-war-plugin</artifactId>
 <version>3.3.1</version>
 </plugin>
 <plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-compiler-plugin</artifactId>
 <version>3.8.1</version>
 </plugin>
 </plugins>
 </build>
</project>

вот мой web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
 id="WebApp_ID" version="3.1">
 <display-name>Spring_MVC</display-name>
 <absolute-ordering />
 <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/applicationContext.xml</param-value><!--путь к контекстным данные-->
 </init-param>
 <load-on-startup>1</load-on-startup>
 </servlet><!--тут мы создаем уже сделанный за нас сервлет, который будет принимать данные от клиента-->
 <servlet-mapping>
 <servlet-name>dispatcher</servlet-name>
 <url-pattern>/</url-pattern><!--указываем url на который должен срабатывать сервлет. в данном случае на любой url-->
 </servlet-mapping>
</web-app>

и вот сам код контролера

package org.musa.spring.mvc;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletRequest;
@Controller// один из видов компонента,отвечающий за создание контроллеров. при сканировании он обозначится как компонент контролера
public class MyController {
 @RequestMapping("/")//аннотация для связки url пути, с вызываемой view
 public String showFirstView(){
 return "first-view";//возвращаем имя view. а префикс WEB-INF/view и суффикс .jsp добавится само так как мы это прописли в web файле
 }
 @RequestMapping("/askDetials")//свяжем этот контроллер с url /askDetails
 public String askEmployeeDetails(){
 return "ask-emp-details-view";//вернем нашу вью с формой опроса
 }
 @RequestMapping("/showDetails")
 public String showEmptDetails(HttpServletRequest request, Model model){//HttpServletRequest - имеет
 // всю инфу о запросе. а Model это контейнер для данных, которые мы можем передавать куда угодно
 String empName = request.getParameter("employeeName");//берем парамет переданный ему через форму
 empName = "Mr. " + empName;//изменяем это имя, добавив Mr
 model.addAttribute("nameAtribute", empName);//добавим в модель атрибут, под именем
 // nameAtribute, со значением перменной empName
 return "show-emp-details-view";//возвращает вью с информацией введеной в форму
 }
}

пытался поменять зависимости и версию томкат, но не сработало при этом, до использования HttpServletRequest все работало. использую беслптную версию idea

задан 24 дек. 2022 в 10:51

1 ответ 1

2

У вас не находится зависимость во время выполнения, потому что вы указали область видимости provided — доступно только во время компиляции. Поставьте область видимости в compile или уберите совсем (приоритетнее) и будет вам счастье!

 <dependency>
 <groupId>javax.servlet</groupId>
 <artifactId>servlet-api</artifactId>
 <version>2.5</version>
 <scope>compile</scope>
 </dependency>
ответ дан 24 дек. 2022 в 11:42
5
  • 1
    Спасибо большое! сервер действительно заработал Commented 24 дек. 2022 в 13:26
  • но возникла другая проблема, когда я открываю сайт по url localhost:8080/org.musa.spring.mvc/… то вылезает ошибка HTTP Status 500 – Internal Server Error Type Exception Report Message Request processing failed: java.lang.IllegalStateException: No primary or single unique constructor found for interface javax.servlet.http.HttpServletRequest Description The server encountered an unexpected condition that prevented it from fulfilling the request. Commented 24 дек. 2022 в 13:29
  • jakarta.servlet.ServletException: Request processing failed: java.lang.IllegalStateException: No primary or single unique constructor found for interface javax.servlet.http.HttpServletRequest org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1018) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:902) jakarta.servlet.http.HttpServlet.service(HttpServlet.java:683) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:884) jakarta.servlet.http.HttpServlet.service(HttpServlet.java:792) Commented 24 дек. 2022 в 13:31
  • org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) Commented 24 дек. 2022 в 13:31
  • а все все, решил проблему, я используя томкат 10, а javax только для томкат 9 Commented 24 дек. 2022 в 15:04

Ваш ответ

Черновик сохранён
Черновик удалён

Зарегистрируйтесь или войдите

Регистрация через Google
Регистрация через почту

Отправить без регистрации

Необходима, но никому не показывается

Отправить без регистрации

Необходима, но никому не показывается

Нажимая «Отправить ответ», вы соглашаетесь с условиями пользования и подтверждаете, что прочитали политику конфиденциальности.

Начните задавать вопросы и получать на них ответы

Найдите ответ на свой вопрос, задав его.

Задать вопрос

Изучите связанные вопросы

Посмотрите похожие вопросы с этими метками.