【问题标题】:sending data from a servlet javaEE to an angular component将数据从 servlet javaEE 发送到 Angular 组件
【发布时间】:2020-03-22 06:19:54
【问题描述】:

我是 javaEE 的初学者,我在 FrontEnd 中使用 angular,在 BackEnd 中使用 javaEE。我想将数据从 servlet 发送到 angular 组件,我想知道是否有可能在我的 servlet 中包含什么指令这个例子我想将用户列表(utilisateurs)发送到角度组件进行处理,这是我的 servlet 代码。 ps1:我在角度使用模块 HttpClient。 ps2:我没有使用Spring框架。

Test.java

package com.coors.servlets;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.octest.beans.Utilisateur;
import com.octest.dao.DaoFactory;
import com.octest.dao.UtilisateurDao;
import com.octest.dao.UtilisateurDaoImpl;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/test")
public class Test extends HttpServlet {
private static final long serialVersionUID = 1L;
private UtilisateurDao utilisateurDao;
private DaoFactory daoFactory; 

public Test() {
    super();
}

@Override
public void init() throws ServletException {
    daoFactory=DaoFactory.getInstance();
    utilisateurDao=daoFactory.getUtilisateurDao();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    this.utilisateurDao.lister();//I  get the list of users

    //here what instruction ?????????????????????????????????????????
}

public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
}

}

【问题讨论】:

    标签: angular web servlets jakarta-ee


    【解决方案1】:

    假设我正在调用此 URL http://localhost:8080/StackOverflow/test,其中 test 是我的 servlet 中的 urlPattern。所以当我在浏览器中发送这个 URL 时,会触发 doGet 方法。在 doGet 我可以这样做:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<String> myList = new ArrayList<>();
        myList.add("User 1");
        myList.add("User 2");
        request.setAttribute("users", myList);
        request.getRequestDispatcher("second.jsp").forward(request, response);
    }
    

    我创建了一个列表,并在我传递给名为 second.jsp 的现有页面的属性 users 中设置了内容。

    如果您使用的是 Maven,请将其包含在您的依赖项中,以便您可以在 second.jsp 中使用 jstl 来查看内容。

    https://mvnrepository.com/artifact/jstl/jstl/1.2

    使用 jstl,您可以使用 ${users} 从属性“用户”访问内容。

    更多到 jstl here

    <%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
    <!DOCTYPE html>  
    <html lang="en">  
    <head>  
    <meta charset="utf 8">
    <title>Aloha</title>     
    </head>  
    <body ng-app="app">
    <h1 ng-controller="HelloWorldCtrl">{{message}}</h1>
    <script src="https://code.angularjs.org/1.6.9/angular.js"></script>
    <script>  
    angular.module("app", []).controller("HelloWorldCtrl", function($scope) {  
    $scope.message="Hello JSP DATA: ${users}" 
    } )
    </script> 
    


    通过这种方式,您可以将数据发送到页面并使用 ${yourparametername} 在您的 Angular 应用程序中进行访问。

    结果:

    如果您想使用来自 servlet 的响应,它可能看起来像这样对用户进行编码,而不是 & 或 = 符号来正确构建 URL:

        String urlUsers= "";
        for(String u : angularList) {
            urlUsers +=                      "users="+URLEncoder.encode(u,StandardCharsets.UTF_8.name())+"&";
        }
        urlUsers = urlUsers.substring(0,urlUsers.length()-1);
    
        response.sendRedirect("angular.jsp?"+urlUsers);
    

    angular.jsp 页面中的 URL 将是:

    http://localhost:8080/test/angular.jsp?users=User+1&users=User+2
    

    现在它使用 Angular 从 URL 中获取值。

    【讨论】:

    • 我同意你的观点,但我在前端使用 Angular 而不是 jsp 页面,我的问题是如何将发送数据从 servlet(响应)发送到 angular 组件?
    • 我用一个角度迷你应用程序更新了答案,也使用了响应。现在您有两种方法可以在 Angular 应用所在的页面中获取数据。
    猜你喜欢
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 2017-10-19
    • 2012-08-15
    • 2021-02-15
    • 2013-05-27
    • 2014-07-21
    相关资源
    最近更新 更多