如何使用 javascript 连接和访问数据库的值?我想注册一个用户,所以当我要创建用户时,我想检查用户名是否可用(意味着要对数据库进行搜索操作)?我们可以用javascript做到这一点吗?因为它用于客户端所以我很困惑?
4 回答
我们可以用javascript做到这一点吗?因为它用于客户端所以我很困惑?
JavaScript 是一种通用编程语言,而不是客户端语言。人们一直在服务器端使用它。
但是,如果您的意思是,您是否可以在 Web 浏览器中使用 JavaScript来访问您服务器上的数据库,答案是:不能直接,不能(好吧,除非您在 Intranet 上并且跳过您真的不知道的障碍想跳过);你需要一个中间层。您可以让客户端上的 JavaScript 向服务器发送消息(例如,通过ajax);然后,服务器端代码需要处理这些消息,确保它们有效且无恶意,然后非常谨慎地更新数据库并将结果发送回客户端浏览器。
服务器端语言可以是 JavaScript 或您想在服务器上使用的任何其他语言。我注意到你标记了你的问题jsp
,所以大概你想用 Java(而不是 JavaScript)编写服务器端的东西。如果是这样,并且如果你想使用 ajax 来获得现代的、非页面刷新的体验,它看起来像这样:
用户执行和操作,在浏览器中引发事件。
JavaScript 代码通过向服务器发送 ajax 消息来处理事件;在登录的情况下,您可能想要执行
POST
.一个 JSP(或者更好的是,一个 servlet)
收到
POST
消息验证内容,检查恶意内容和其他类似攻击
使用准备好的语句和类似语句查询和/或更新数据库以避免 SQL 注入攻击
发送响应,其中包含有关操作结果的信息
JavaScript 代码接收到对
POST
ajax 调用的响应并查看它以了解发生了什么
直接说不行。JavaScript 通常在不受信任的机器上运行。由于 JavaScript 是一种脚本语言。因此,您应该考虑使用 ajax 调用(例如帖子)来访问您的服务器数据库...
类似的线程讨论这个问题
感谢上帝,JavaScript 是不可能的。您需要一种服务器端脚本语言来验证某些用户对数据库的输入。
出于多种原因(不良做法、安全问题等),您不应该使用客户端 javascript 访问数据库,但如果您真的想这样做,这里有一个示例:
var connection = new ActiveXObject("ADODB.Connection") ;
var connectionstring="Data Source=<server>;Initial Catalog=<catalog>;User ID=<user>;Password=<password>;Provider=SQLOLEDB";
connection.Open(connectionstring);
var rs = new ActiveXObject("ADODB.Recordset");
rs.Open("SELECT * FROM table", connection);
rs.MoveFirst
while(!rs.eof)
{
document.write(rs.fields(1));
rs.movenext;
}
rs.close;
connection.close;
连接到 sql server 的更好方法是使用一些服务器端语言,如 PHP、Java、.NET 等。客户端 javascript 应仅用于接口。
并且有一个关于服务器javascript存在的古老传说的传言,但这是另一个故事。;)