2

我是 spring 的新手,尝试创建应用程序,以便我可以了解它的工作原理。但是当我写代码时Eclipse IDE gives

无法解析类型 javax.servlet.http.HttpServletResponse。它是从所需的 .class 文件中间接引用的

这是我的课

package testPackage;  
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import domain.serviceLayer.UserService;
import domain.userDetails.User;

@SuppressWarnings("deprecation")
public class UserLoginFormController extends SimpleFormController  {
    private UserService userService;

    public UserLoginFormController() {
        setCommandClass(User.class);
        setCommandName("user");
    }
    public void setUserService(UserService userService) {
        this.userService = userService;
    }

    @Override
    public ModelAndView onSubmit(Object command) throws Exception {
        // TODO Auto-generated method stub

        User user = (User) command;
        userService.add(user);
        ModelAndView modelAndView = new ModelAndView("success", "user", user);
        return modelAndView;
    } 
}

和 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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>learnSimpleFormController</groupId>
    <artifactId>learnSimpleFormController</artifactId>
    <version>1.0</version>
    <packaging>war</packaging>  
    <properties>
        <spring.version>3.2.3.RELEASE</spring.version>
    </properties>
    <dependencies>
        <!-- Spring 3 dependencies -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>   
    <!-- Servlet -->
        <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>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        </dependencies>
    <build>
        <finalName>learnSimpleFormController</finalName>
    </build>
</project>

请问是什么问题以及如何消除该错误

4

3 回答 3

3

你的项目没有引用 servlet.jar 所以只需在你的 pom 中添加这个依赖项

<dependency>
    <groupId>org.apache.geronimo.specs</groupId>
    <artifactId>geronimo-servlet_2.5_spec</artifactId>
    <version>1.2</version>
</dependency>
于 2013-09-05T10:18:34.570 回答
2

您的项目不是指任何运行时环境。您可以执行以下操作:在您的类中导入 jar 文件:

import javax.servlet.http.HttpServletResponse

添加 Apache Tomcat 库,如下所示:

项目 > 属性 > Java 构建路径 > 库 > 添加库 > 服务器运行时 > 下一步 > Apache Tomcat v 6.0 > 完成 > 确定

于 2016-02-10T07:52:52.017 回答
0

我有同样的例外。我使用的是 spring-boot 1.5.3.RELEASE,但我的同事使用的是 spring-boot 1.5.4.RELEASE。

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

所以当我得到他的代码时,我得到了这个异常。

可能在我的 PC 中,我有 spring boot 的旧 maven jar 文件,maven 无法更新这些 jar 文件。即使我从 .m2 文件夹中删除了 spring-boot 的所有文件夹,但仍然产生相同的错误

最后,我通过将 pom.xml 中的 spring boot 版本从 1.5.4 更改为 1.5.3 得到了解决方案。

于 2017-09-23T07:05:22.137 回答