在我的项目中,我有 html 选择文件和 html 文本文件。我想显示当 html 选择文件选项 onchange 事件时访问 html 文本文件中的数据库的一些结果。为了完成所有这些,我编写了这个 servlet 代码,它从 Access 数据库获取数据并将结果发送到 jsp 页面。
package org.solr;
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 javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class getValues
*/
@WebServlet("/getValues")
public class getValues extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public getValues() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String salesOrder=request.getParameter("salesOrder");
System.out.println(salesOrder);
try {
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
String db_path="C:\\Users\\ftk1187\\Desktop\\ad\\Test1.accdb";
Connection con=DriverManager.getConnection("jdbc:ucanaccess://"+db_path+";jackcessOpener=CryptCodecOpener","","12345tec");
Statement state=con.createStatement();
ResultSet rs=state.executeQuery("SELECT * FROM tblSO_all WHERE strSO='"+salesOrder+"'");
while(rs.next())
{
String indDate=rs.getString("strDate");
System.out.println(indDate);
request.setAttribute("indDate", indDate);
request.getRequestDispatcher("upload.jsp").forward(request, response);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
在jsp端,我写了这段javascript代码
<script>
function strSO(){
var salesOrder=$("#sOrder option:selected").val();
$.ajax({
type:'get',
url:'getValues',
data:'salesOrder='+salesOrder,
dataType:'text/plain',
success:function(){
console.log("success");
}
document.getElementById("indDate").value=<%=request.getAttribute("indDate")%>
});
}
</script>
servlet 正确运行,我在 eclipse 的控制台中通过 sysout 看到结果。但结果未显示在 html 文本文件中。那么问题出在哪里呢?
更新
更新
经过Swati的回答,问题的解决方案是这样的
String salesOrder=request.getParameter("salesOrder");
try {
Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
String db_path="C:\\Users\\ftk1187\\Desktop\\ad\\Test1.accdb";
Connection con=DriverManager.getConnection("jdbc:ucanaccess://"+db_path+";jackcessOpener=CryptCodecOpener","","12345tec");
Statement state=con.createStatement();
ResultSet rs=state.executeQuery("SELECT * FROM tblSO_all WHERE strSO='"+salesOrder+"'");
while(rs.next())
{
String indDate=rs.getString("strDate");
System.out.println(indDate);
response.getWriter().write(indDate);
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
脚本是这样的
<script>
function salesOrder(){
var salesOrder=$("#sOrder option:selected").val();
$.ajax({
type:'get',
url:'getValues',
data:'salesOrder='+salesOrder,
success:function(data){
console.log("success");
document.getElementById("induction").value=data;
}
});
}
</script>
最佳答案
无论你要打印什么,即:System.out.println(indDate);
这将作为ajax调用中的响应返回。此外,你不能从servlet转发你的页面,因为你在这里使用ajax,你需要发回一些东西,然后从那里你可以转发。所以,从servlet中删除这些request.getRequestDispatcher("upload.jsp").forward(request, response);
行.此外,您的 ajax 调用应如下所示:
function strSO(){
var salesOrder=$("#sOrder option:selected").val();
$.ajax({
type:'get',
url:'getValues',
data:'salesOrder='+salesOrder,
success:function(data){
console.log("success");
document.getElementById("indDate").value=data;//indDate will be asign to textbox
//you can write redirect code here
}
});
}
关于javascript - 如何使用 javascript 将 servlet 响应传递给 html 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60508784/