Подтвердить что ты не робот

JspException и PageContext не могут быть разрешены

Это вопрос о доступе к ресурсам на странице jsp приложения spring mvc Благодаря @kmb385 я смог решить эту проблему, но теперь я получаю следующие ошибки eclipse в моем JSP файле javax.servlet.jsp.JspException не может быть разрешено для типа и

javax.servlet.jsp.PageContext не может быть разрешен для типа

как подсказывает kmb385, вот мой контроллер:

@Controller
public class AdminController {

        @RequestMapping("/")
        protected ModelAndView handleRequestInternal(HttpServletRequest request,
            HttpServletResponse response) throws Exception {

            ModelAndView model = new ModelAndView("index");
            model.addObject("msg", "hello world");

            return model;
        }   
    }

и вот моя страница index.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">
<!-- <link type="text/css" rel="stylesheet" href="css/style.css"/> -->
<style type="text/css">
    <%@include file="css/style.css" %>
    </style>
<title>My Project - MainPage</title>
</head>
<body>
<h2 class="main_heading2">My Project - MainPage</h2>
<div style="float: right; width: 30%; text-align: center">
<p style="float:left;">an image should be here</p>
<img src="images/logo.jpg" alt="Logo"/>
<img src="${pageContext.servletContext.contextPath}/resources/images/logo.jpg" />
</div>

</body>

Я столкнулся с "решениями" этого, отключив его в валидаторе JSP, но, пожалуйста, не предлагайте это, если вы не можете дать законную причину. Я предпочел бы правильно исправить эту проблему.

Любая помощь оценена

UPDATE: Выполнить захват экрана пути по запросу @kmb385 Eclipse Build Path

4b9b3361

Ответ 1

Попробуйте установить зависимость servlet-api в вашем pom.xml как предоставленную. Эта банка может противоречить предоставленному коту сервлету-api.jar.

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>

Также обязательно включите зависимость jsp-api, еще раз установив ее следующим образом:

    <!-- Servlet -->
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.3.3</version>
        <scope>provided</scope>
    </dependency>

Убедитесь, что все ваши maven-зависимости используются для построения проекта, щелкнув правой кнопкой мыши ваш проект> Свойства. На вкладке сборки развертывания нажмите кнопку "Добавить", затем "Java Build Path Entries", затем "Зависимости Maven" и, наконец, "Finish".

Вам также может понадобиться добавить зависимости maven в путь сборки. Щелкните правой кнопкой мыши свой проект> Maven> Обновить конфигурацию проекта.

Ответ 2

Если вы загрузили все зависимости в maven и ошибка все равно не исчезла, выполните следующие действия:

  • Щелкните правой кнопкой мыши по проекту и перейдите к свойствам
  • Нажмите на целевое время выполнения
  • Установите флажок перед сервером, который вы используете.

Это должно работать.

Ответ 3

Попробуйте импортировать класс.

Измените первую строку jsp, чтобы выглядеть так:

<%@ page language="java" import="javax.servlet.jsp.PageContext" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>

Ответ 4

Добавить в зависимости pom.xml:

     <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.1</version>
        <scope>provided</scope>
    </dependency>

JSP:

Обязательно добавьте jsp перед тегом:

<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

Получить контекст на JSP:

<c:set var="contextPath" value="${pageContext.request.contextPath}"/>

Стиль импорта css:

<link type="text/css" rel="stylesheet" href="${contextPath}/css/yourCssFile.css"/>

Диспетчер-сервлет:

На вашем "spring -dispatcher-servlet.xml" добавьте следующие строки:

<beans xmlns="... xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="...
http://www.springframework.org/schema/mvc 
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

<mvc:resources mapping="/resources/**" location="/resources/css/" />

Возможно, вам нужно добавить эти адаптеры:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> [Optional]
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
    <property name="order" value="0"/>
</bean>  

здесь: как включить js и css в jsp с помощью spring MVC

Ответ 5

Как решить javax.servlet.jsp.PageContext не может быть разрешен для типа

1: - Выберите свой проект и щелкните правой кнопкой мыши

2: - Перейдите в раздел Свойства

3: - Нажмите Targated Runtimes

4: - Отметка "Apache Tomcat v8.0"

Я использую Apache v8.0 в моем случае

Ответ 6

This will solve the problem 

<!-- Need this to compile JSP -->
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
            <scope>provided</scope>
        </dependency>

Ответ 7

Эта альтернатива сработала для меня <%=request.getContextPath()%>, которая получает контекст приложения.