Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSP未使用Spring引导和MongoDB呈现_Spring_Mongodb_Spring Boot_Jsp - Fatal编程技术网

JSP未使用Spring引导和MongoDB呈现

JSP未使用Spring引导和MongoDB呈现,spring,mongodb,spring-boot,jsp,Spring,Mongodb,Spring Boot,Jsp,我试图在Spring Boot中运行JSP,但显示的是单词welcome,而不是我的实际内容。在调用MongoDB之后调用JSP。当我从Java代码调用MongoDB时,也会遇到这些异常 com.mongodb.mongoscocketreadTimeoutException:接收消息时超时 在com.mongodb.internal.connection.InternalStreamConnection.translateradexception(InternalStreamConnectio

我试图在Spring Boot中运行JSP,但显示的是单词
welcome
,而不是我的实际内容。在调用MongoDB之后调用JSP。当我从Java代码调用MongoDB时,也会遇到这些异常

com.mongodb.mongoscocketreadTimeoutException:接收消息时超时
在com.mongodb.internal.connection.InternalStreamConnection.translateradexception(InternalStreamConnection.java:553)~[mongo-java-driver-3.9.1.jar:na]
在com.mongodb.internal.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:444)~[mongo-java-driver-3.9.1.jar:na]
在com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:295)~[mongo-java-driver-3.9.1.jar:na]
在com.mongodb.internal.connection.InternalStreamConnection.sendandereceive(InternalStreamConnection.java:255)~[mongo-java-driver-3.9.1.jar:na]
在com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:83)~[mongo-java-driver-3.9.1.jar:na]
在com.mongodb.internal.connection.CommandHelper.executeCommand(CommandHelper.java:33)~[mongo-java-driver-3.9.1.jar:na]
在com.mongodb.internal.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:106)~[mongo-java-driver-3.9.1.jar:na]
在com.mongodb.internal.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:63)~[mongo-java-driver-3.9.1.jar:na]
在com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:127)~[mongo-java-driver-3.9.1.jar:na]
在com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunName.run(DefaultServerMonitor.java:117)~[mongo-java-driver-3.9.1.jar:na]
在java.base/java.lang.Thread.run(Thread.java:844)[na:na]
原因:java.net.SocketTimeoutException:读取超时
在java.base/java.net.SocketInputStream.socketRead0(本机方法)~[na:na]
在java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:116)~[na:na]
在java.base/java.net.SocketInputStream.read(SocketInputStream.java:171)~[na:na]
在java.base/java.net.SocketInputStream.read(SocketInputStream.java:141)~[na:na]
在com.mongodb.internal.connection.SocketStream.read(SocketStream.java:109)~[mongo-java-driver-3.9.1.jar:na]
在com.mongodb.internal.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:570)~[mongo-java-driver-3.9.1.jar:na]
在com.mongodb.internal.connection.InternalStreamConnection.receiveMessage(InternalStreamConnection.java:441)~[mongo-java-driver-3.9.1.jar:na]
... 省略9个公共帧

welcome.jsp

<!DOCTYPE html>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html lang="en" ng-app="employeeApp">
<head>
    <title>Frank's App</title>
        <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
        <script src="app.js"></script>
        <style>
            table, th, td {
                border: 1px solid black;
            }
        </style>
    </head>
<body>
    <h2>Frank's App</h2>
    <div ng-app="myApp" ng-controller="myCtrl">
        <table>
            <tr>
                <th>First Name</th>
                <th>Last Name</th>
                <th>Employee Number</th>
                <th>Pay Rate</th>
            </tr>
            <tr ng-repeat="employee in employees">
                <td>{{ employee.firstName }}</td>
                <td>{{ employee.lastName }}</td>
                <td>{{ employee.empNumber }}</td>
                <td>{{ employee.payRate }}</td>
            </tr>
        </table>
    </div>
</body>

弗兰克的应用程序
表,th,td{
边框:1px纯黑;
}
弗兰克的应用程序
名字
姓
员工编号
工资率
{{employee.firstName}
{{employee.lastName}
{{employee.empNumber}
{{employee.payRate}

控制器代码:

@RequestMapping("/welcome")
public String welcome(Model model) {
    model.addAttribute("employees", getEmployees());
    return "welcome";
}

@RequestMapping("/getEmployees")
public List<Employee> getEmployees() {
    MongoDatabase db = getDatabase();
    MongoCollection<Document> collection = db.getCollection(COLLECTION);
    Document query = new Document();
    List<Employee> employees = collection.find(query, Employee.class).into(new ArrayList<Employee>());
    return employees;
}

private MongoDatabase getDatabase() {
    CodecRegistry pojoCodecRegistry =     org.bson.codecs.configuration.CodecRegistries.fromRegistries(
            MongoClientSettings.getDefaultCodecRegistry(),     org.bson.codecs.configuration.CodecRegistries.fromProviders(PojoCodecProvider.builder().automatic(true).build()));
    MongoDatabase database = mongo.getDatabase("testdb").withCodecRegistry(pojoCodecRegistry);
    return database;
}
@RequestMapping(“/welcome”)
公共字符串欢迎(模型){
addAttribute(“employees”,getEmployees());
返回“欢迎”;
}
@请求映射(“/getEmployees”)
公开名单{
MongoDatabase db=getDatabase();
MongoCollection collection=db.getCollection(collection);
单据查询=新建单据();
List employees=collection.find(query,Employee.class).into(new ArrayList());
返回员工;
}
私有MongoDatabase getDatabase(){
CodecRegistry pojoCodecRegistry=org.bson.codecs.configuration.CodecRegistries.fromRegistries(
MongoClientSettings.getDefaultCodecRegistry(),org.bson.codecs.configuration.CodecRegistries.fromProviders(PojoCodecProvider.builder().automatic(true.build());
MongoDatabase database=mongo.getDatabase(“testdb”)。带有CodeRegistry(POJOCodeRegistry);
返回数据库;
}

在HTML代码中不使用JSP,它是一个角度框架。Angular不会读取您在控制器中作为“employees”属性推送的数据

而是这个

<tr ng-repeat="employee in employees">
                <td>{{ employee.firstName }}</td>
                <td>{{ employee.lastName }}</td>
                <td>{{ employee.empNumber }}</td>
                <td>{{ employee.payRate }}</td>
</tr>

{{employee.firstName}
{{employee.lastName}
{{employee.empNumber}
{{employee.payRate}
使用JSP语法,如下所示

<c:forEach var="employee" items="${employees}">
            <tr>
                <td>${employee.firstName}</td>
                <td>${employee.lastName}</td>
                <td>${employee.empNumber}</td>
                <td>${employee.payRate}</td>
            </tr>
</c:forEach>

${employee.firstName}
${employee.lastName}
${employee.empNumber}
${employee.payRate}


如果只想使用JSP构建网页,还可以删除所有Angular(属性后缀为
ng
)元素

验证以下内容

  • 检查您的mongodb服务器是否正在运行。服务器未运行可能会导致上述异常

  • 在application.properties文件中检查monogdb数据库名、主机和端口

    spring.data.mongodb.host=localhost

    spring.data.mongodb.port=*****

    spring.data.mongodb.database=dbName

  • 也检查这两个条目

    spring.mvc.view.prefix=/WEB-INF/jsp/

    spring.mvc.view.suffix=.jsp


  • 这不管用。我仍然得到相同的结果。您确定打开了正确的网页吗?您应该至少看到
    Frank的应用程序
    而不是
    welcome
    消息。您是否调试了该应用程序以确保在
    testdb
    数据库中至少有一名员工?我不确定如何通过Spring Boot进行调试,但我已经通过MongoDB手动验证了我试图访问的集合中是否有数据。这不在
    testdb
    databa中