将数据从 servlet javaEE 发送到 angular 组件
sending data from a servlet javaEE to an angular component
我是 javaEE 的初学者,我在前端使用 angular,在 BackEnd.I 中使用 javaEE,想将数据从 servlet 发送到 angular 组件,我想知道是否是可能我应该在我的 servlet 中包含什么指令,在这个例子中我想将用户列表(utilisateurs)发送到 angular 组件进行处理,这是我的 servlet 代码。
ps1:我在 angular 中使用模块 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 {
}
}
假设我调用此 URL http://localhost:8080/Whosebug/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 的现有页面。
如果您使用的是 Maven,请将其包含在您的依赖项中,以便您可以在 second.jsp 中使用 jstl 查看内容。
https://mvnrepository.com/artifact/jstl/jstl/1.2
使用 jstl,您可以使用 ${users} 从属性 "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 中获取值。
我是 javaEE 的初学者,我在前端使用 angular,在 BackEnd.I 中使用 javaEE,想将数据从 servlet 发送到 angular 组件,我想知道是否是可能我应该在我的 servlet 中包含什么指令,在这个例子中我想将用户列表(utilisateurs)发送到 angular 组件进行处理,这是我的 servlet 代码。 ps1:我在 angular 中使用模块 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 {
}
}
假设我调用此 URL http://localhost:8080/Whosebug/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 的现有页面。
如果您使用的是 Maven,请将其包含在您的依赖项中,以便您可以在 second.jsp 中使用 jstl 查看内容。
https://mvnrepository.com/artifact/jstl/jstl/1.2
使用 jstl,您可以使用 ${users} 从属性 "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 中获取值。