MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да създам връзка с базата данни на Mongo в context.xml в уеб проект на Java?

Примерен сървлет/JSP код с конфигурация за свързване към MongoDB база данни и преглед на резултатите от заявка в JSP страницата.

(i) JNDI конфигурация за достъп до MongoDB база данни (META-INF/context.xml):

<Context>
    <Resource name="mongodb/mongoClient"
              auth="Container"
              type="com.mongodb.MongoClient"
              closeMethod="close"
              factory="com.mongodb.client.jndi.MongoClientFactory"
              singleton="true"
              connectionString="mongodb://localhost:27017" />
</Context>

(ii) WEB-INF/web.xml (включете това в маркерите „web-app“):

 <resource-ref>
     <res-ref-name>mongodb/mongoClient</res-ref-name>
     <res-type>com.mongodb.MongoClient</res-type>
     <res-auth>Container</res-auth>
</resource-ref>

(iii) Клас сервлет:

public class TestServlet extends HttpServlet {

    @Resource(name="java:comp/env/mongodb/mongoClient")
    private MongoClient client;

    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        
        // ---- This works too; can be used instead of the @Resource  ----
        //try {
        //  Context ctx = new InitialContext();
        //  client = (MongoClient) ctx.lookup("java:comp/env/mongodb/mongoClient");
        //}
        //catch (NamingException ex) {
        //  throw new ServletException(ex);
        //}

        MongoCollection<Document> coll = client.getDatabase("test")
                                               .getCollection("books");
        
        List<Document> docData = new ArrayList<>();
        coll.find()
             .projection(new Document("title", 1)
                                .append("author", 1)
                                .append("_id", 0))
            .limit(10)
            .into(docData);
        List<String> data = docData.stream()
                                   .map(doc -> doc.get("title") + ", " + doc.get("author"))
                                   .collect(Collectors.toList());
        req.setAttribute("bookdata", data);
    
        RequestDispatcher view = req.getRequestDispatcher("view.jsp");
        view.forward(req, resp);
    }
}

(iv) view.jsp:

<html>
    <head>
        <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
        <title>Test App</title>
    </head>
    <body>
        <h3>Books List</h3>
    
        <c:forEach items="${bookdata}" var="book">
            ${book}<br>
        </c:forEach>
    ...



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как мога да редактирам/преименувам ключове по време на json.load в python?

  2. ng-ако бъде извикан повече пъти, отколкото трябва

  3. Как да дефинирам персонализиран помощник за заявки в mongoose модел с машинопис?

  4. Клас 'MongoDB\Driver\Manager' не е намерен

  5. Дължина на ID на колекцията в MongoDB