у меня довольно не большой код:
вот мои зависимости в 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
1 ответ 1
У вас не находится зависимость во время выполнения, потому что вы указали область видимости provided — доступно только во время компиляции. Поставьте область видимости в compile или уберите совсем (приоритетнее) и будет вам счастье!
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>compile</scope>
</dependency>
ответ дан 24 дек. 2022 в 11:42
ulxanxv
1,0256 серебряных знаков15 бронзовых знаков
-
1Спасибо большое! сервер действительно заработалМуса– Муса2022年12月24日 13:26:40 +00:00Commented 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.Муса– Муса2022年12月24日 13:29:45 +00:00Commented 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)Муса– Муса2022年12月24日 13:31:11 +00:00Commented 24 дек. 2022 в 13:31
-
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)Муса– Муса2022年12月24日 13:31:16 +00:00Commented 24 дек. 2022 в 13:31
-
а все все, решил проблему, я используя томкат 10, а javax только для томкат 9Муса– Муса2022年12月24日 15:04:35 +00:00Commented 24 дек. 2022 в 15:04
Начните задавать вопросы и получать на них ответы
Найдите ответ на свой вопрос, задав его.
Задать вопросlang-java