我有一个关于JSP开发的问题。我的servlet达到了这样的程度,我的简单Java类无法帮助我使用我的网站,Javascript接管了。问题是数据非常大,而且使用Javascript非常慢。使用Javabeans会加快速度吗?多少钱? javascript如何获取并将值传递给Javabeans? Javabeans是像javascript一样动态,还是像JSP那样在页面刷新时执行?或者我一般都错了(我想我是) 这么多问题请回答。
答案 0 :(得分:2)
您正在做一件好事,并希望同时编写复杂的服务器端部分和客户端JavaScript代码,从而取得重大进展,但正如我从您的问题中看到的那样(对不起,如果我错了)您的遗失与服务器和客户端交互的关键点。
首先让我们来看看整个HTTP协议,它规定了现代网络应用程序的工作方式。根据HTTP架构,客户端(表示为本地机器上的浏览器应用程序)和服务器(表示为运行在其上的java类的servlet容器 - tomcat / jboss / etc - 远程计算机)之间的所有交互都是通过简单的请求完成的(来自浏览器的问题) - 响应(从服务器回答)循环。客户端通过URL询问某些信息,服务器在客户端处理(读取)检索到的信息(不仅包括图像,视频,音频,文本以及javascript形式的程序代码)之后将此信息提供给客户端,并要求更多信息来自服务器的下一个问题(http-request)中的特定信息。在给出答案(处理请求)时,您可以在客户端(在浏览器中 - 保存各种网站的特定信息的cookie)或服务器端(在服务器会话,数据库,服务器文件中)的请求 - 响应周期之间存储中间信息适用于各种网站用户)。希望这部分是可以理解的。
Java完全在服务器端执行,因此任何类型的JavaBeans,简单的JavaBeans(或POJO - 普通的旧Java对象)或EJB(企业java bean - 在enterpirse java平台上可用的复杂的解决方案)都在工作和完全生活在服务器端,并在会话或应用程序范围内。换句话说,用户可以通过HTTP GET / POST / PUT / DELETE方法将一些参数传递给你的servlet / jsp,它们正在读取这些参数并根据用户传递和解析的数据修改bean信息。
JavaScript轮流完全在客户端级别执行。 JS可以将信息保存在浏览器cookie(或html5中引入的localstorage)中,这些cookie基本上是存储在客户端浏览器中的键值数据对,用于由URL区分的特定站点。
JavaScript仅用于在快速请求 - 响应交互期间保存信息,换句话说,您可以在用户关闭浏览器窗口(最终完成他对网站的工作)后将JS存储完全丢失。虽然服务器端信息的存储时间更长(大致永久),但与站点的工作会话之间存在关联。
所以从这个角度来看,你总是可以创建一个瘦客户端(几乎没有JavaScript),它总是依赖于服务器端逻辑和java bean。但是,在瘦客户端的情况下使用web-app进行的任何小操作都需要很长时间,因为它需要一次服务器往返。换句话说,你的应用程序会很慢。因此,为了加速您的Web应用程序,您可以将一些操作从服务器端Java转移到客户端javascript,以便可以使用较少的服务器请求执行它们。举一个例子,想象一下你正在编写一个计算器web-app:你可以创建一个html表单,并为每个操作(+ - * /)发送一个请求到服务器(到java部分),或者你可以创建一个本机JS-app和每个操作都将由JavaScript执行,无需服务器端旅行(在这种情况下,您的应用程序将更快)。
我建议您阅读有关HTTP(和REST - HTTP协议背后的架构)实际工作原理的更多信息。例如this tutorial.