如何将数据从javaservlet发送到ember.js,反之亦然



所以我有一个托管的servlet,它连接到postgres数据库,问题是我需要创建一个登录页面,它应该向托管在tomcat中的servlet发送数据,并且servlet将有一组id和价格,这些id和价格应该返回给ember以显示我如何做到这一点?

servlet代码示例(只添加了必要的部分,因此忽略servlet中的错误(


import java.io.IOException;
import java.io.PrintWriter;
import javax.security.auth.login.Configuration;
import java.util.HashMap;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.security.auth.login.AppConfigurationEntry;
import javax.security.auth.login.LoginContext;
import javax.sql.rowset.serial.SerialException;
public  class AuthenticationServlet extends HttpServlet{
public static LoginContext loginContext = null;
protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{
String name = null;    
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><body>");
String user = request.getParameter("uname");
String mobile = request.getParameter("mobile");
System.out.println("user -> "+user + "mobile "+ mobile);
}

打印postgres数据的servlet代码,必须对其进行修改,以便成员将其打印为

ResultSet rs = null;
try {
System.out.println("[+]inside showrooms..");
String query = String.format(
"SELECT room.id,capacity,rtype,price FROM room JOIN capacity ON room.cid=capacity.id JOIN rtype ON room.tid = rtype.id WHERE isavailablle = true;");
stmt = con.createStatement();
rs = stmt.executeQuery(query);
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<head>");
out.println("<body>");
out.println("<table>");
out.println("<tr>");
out.println("<td><b>roomno</b></td>");
out.println("<td><b>capacity</b></td>");
out.print("<td><b>roomtype</b></td>");
out.println("<td><b>price</b></td>");
while (rs.next()) {
out.println("<tr>");
out.print("<td>" + rs.getString("id") + "</td>");
out.print("<td>" + rs.getString("capacity") + "</td>");
out.print("<td>" + rs.getString("rtype") + "</td>");
out.println("<td>" + rs.getString("price") + "</td>");
out.println("</tr>");
}
out.println("<form method='post' action="My">");
out.println("<table>");
out.println("<tr>");
out.println("<td><h2>Select a room number</td></h2></tr>");
out.println("<tr><td><input type = 'text' name = 'roomno'></td></tr>");
out.println("<tr><td><h4>Enter the start date(YYYY-mm-dd)</h4></td></tr>");
out.println("<tr><td><input type="date" placeholder="yyyy-mm-dd" id="sdate" name="sdate"rn"
+ "       value="2022-07-01"rn"
+ "       min="2022-07-01" max="2022-07-31"></td></tr>");
out.println("<tr><td><h4>Enter the end date(YYYY-mm-dd)</h4></td></tr>");
out.println("<tr><td><input type="date" placeholder = "yyyy-mm-dd" id = "edate" name = "edate""
+ " value="2022-07-01"rn"
+ "min= "2022-07-01" max ="2022-07-31"></td></tr>");
out.println("<tr><td><input type = 'submit' value = 'reserve'>");
out.println("</table></body></html>");
} catch (Exception e) {
System.out.println(e);
}
}

因此,在计算并掌握了ember和servlet之后,似乎有多种方法可以在ember和servlet之间发送和接收数据,就像使用ajax的传统http请求一样。

发送http请求可以通过ember导入ajax的控制器来完成。示例http请求可以像一样

import Controller from '@ember/controller';
import { action } from '@ember/object';
export default class IndexController extends Controller {
@action
get() {
var dis = this;
var uname = document.getElementById('uname').value;
var pass = document.getElementById('pass').value;
console.log('name ->' + name + 'pass -> ' + pass);
$.ajax({
url: 'http://localhost:8080/auth/Login',
data: {
uname: uname,
pass: pass,
},
method: 'GET',
success: function (response) {
if (response == 0) {
alert("welcome");
dis.transitionToRoute('app');
}else if(response == 1){
alert("Password needed to be changed");
dis.transitionToRoute('resetpwd');
}
},
error: () => {
alert('error');
},
});
}
}

依赖项:ember-ajaxhttps://www.npmjs.com/package/ember-ajax

因此,这里的ajax请求发送一个以uname和password作为参数的请求,并根据响应采取相应的行动。如果您想从servlet或任何其他后端接收json对象之类的数据文件,也可以这样做。您可以通过@NullVoxPopuli参考以下答案,该答案相同。

无法在ember js 中从servlet呈现json数组

但好的方法是使用ember数据,该数据遵循包括在内的一系列操作

  1. 为json数据创建模型
  2. 为请求创建适配器
  3. 创建用于序列化传入数据的序列化程序
  4. 在路由器中导入模型

您可以在以下youtube视频中对此进行详细查看

https://youtu.be/ljLxZw-XStw

如果你想让我解释更多关于你的代码评论它

最新更新