12
回答
我对jsp和ajax 一直存在的困惑.
注册华为云得mate10,2.9折抢先购!>>>   
我对jsp和ajax 一直比较困惑, jsp动态网页技术,在服务器端执行,能在网页中显示数据这是一种方式 .
另一种方式是
我打开一个网页(html),加载完成之后,使用js,ajax访问网络得到json数据,使用js操作,在页面中追加元素,显示出来 。也行啊。是不是说这种方式可以把jsp方式替代掉了?我想知道,一般是怎么使用这两种技术的。是都使用,还是说单独用一个。
举例个例子
第一种方式 :jsp初始化数据,ajax发送异步,进行刷新
假设,我要显示新闻列表界面。
http://localhost:8080/ecampus/getnewslist

controller中有此方法
getNewsList(){
    //得到 news的list<news>
    //session.set("newslist", newslist)
    //return "news"
}

然后跳转到了news.jsp 页面中。
在news.jsp界面中,使用jsp:for 标签在新闻div 区域显示session中newslist.
假设 news.jsp中有一个刷新按钮,当点击刷新按钮后,使用ajax,发送网络请求
显示最新的新闻。

第二种方式 :完全不使用jsp,使用js,ajax完成数据读取,显示新闻
假设,我要打开显示新闻界面。
http://localhost:8080/ecampus/news.html
然后跳转到了news.html 页面中。
在news.html界面中,事先留出一个div用于显示新闻的。
在news.html加载完成后,调用使用js,发送ajax请求,得到数据后,解析,并显示到div上。
假设 news.html中有一个刷新按钮,当点击刷新按钮后,使用ajax,发送网络请求
显示最新的新闻。

这种方式也行。

哪种方式更好一些呢?一般采用哪种方式 ?

我能想到的就是, 使用jsp,速度应该会快很多,而采用第二种方式 ,因为js,ajax,显示数据,都是在客户端执行的,速度应该会慢。。

一般应该是采用第一种方式吧。




举报
共有12个答案 最后回答: 4年前
你的思路是对的,这就是传说中的前后端分离。打个比方,浏览器环境就相当于安卓系统环境,而浏览器端的js+html+css 就相当于安卓环境中的java。安卓客户端的视图渲染、数据请求都由本地的程序来完成,而不是由后端生成后交给客户端,从而完成了前后端分离,同时也完成了数据请求与视图渲染逻辑分离。
--- 共有 1 条评论 ---
change_solider谢谢,很受益啊,最好就是要做到前后端分离喽,即浏览器端与服务器解耦.所以,第二种方式,使用html+css+js+ajax 来完成动态网页的功能,即能达到解耦。 4年前 回复

实在无语,还能不能好好过日子了,为什么非黑即白,爱用哪个用哪个呗。码农怎么连这点最基本的逻辑都拎不清。

明明是狠简单的问题,Js牛逼就多用Ajax,否则多用JSP。就这么简单的事,有什么值得困惑。选择什么技术取决于你水平多高,买什么车取决于你有多少钱。这有啥纠结的。

干嘛非要把简单事情复杂化。另外,Ajax和JSP是互补的技术,相比PHP这种脚本语言,JSP还不够灵活,混写起来不方便。这时就需要Ajax了,很大程度上可以弥补JSP的一些缺点。

--- 共有 3 条评论 ---
change_solider 回复 @南湖船老大 : 我想做到的是:服务端做一套接口,可以供多种客户端使用,包括浏览器端。而服务端接口如果换了的话,也不会丝毫影响客户端。那如果还用jsp,就不太好办了吧。 4年前 回复
南湖船老大回复 @change_solider : Ajax和JSP是互补的技术,相比PHP这种脚本语言,JSP还不够灵活,混写起来不方便。这时就需要Ajax了,很大程度上可以弥补JSP的一些缺点。 4年前 回复
change_solider嗯,对,那我现在两个都没怎么做过项目,还是老老实实写一遍代码再说。。 4年前 回复
看看AngularJS吧
--- 共有 1 条评论 ---
change_solider你是说,我也可以不用把html转成jsp.而使用js框架,也能很好的实现我的需求?……这可是我一直想要的啊,我不喜欢用jsp来显示数据。jsp就是servlet,给我感觉太依赖于java环境了。 4年前 回复
最明显的区别,浏览器上查看页面源代码,js的内容是后加载的,搜索引擎无法爬虫
--- 共有 1 条评论 ---
change_solider哦,对,这一点我没想到,爬虫是得不到数据的。。。我想做到客户端与服务器端解耦,比如服务器端有一天不用java了,改别的了,而客户端的代码不用变,,但用jsp显然不行。那用html,但它是静态语言,不适合构建动态web网页,,怎么做? 4年前 回复
想法是非常好的, 但纯手工写js要兼容那么多浏览器是很累的,如果你js水平一般,要么你苦学js,要么可以先jsp完成功能,再逐步完善.

我来说一个Ajax的应用场景。

在Ajax没有普及之前,要实现省市县三级联动select菜单,你知道那代码有多恶心么。每select一次,就来个xxx.jsp?provice=1,然后列出市的菜单,在JSP里面直接循环输出HTML。。这个够恶心了吧,JSP里还要包含大段的Java代码。而且JSP还不是很灵活,混写代码,很费力。

现在有了Ajax,那爽多了,JSP代码看起来简洁多了,完全没必要来大段大段的循环,以及一坨一坨的out.print语句。用Java开发web应用,速度快多了,你只要负责读数据就好。JSP的表达力不够强?性能不够好?自己扩展标签库很费力?统统不再是问题。

 

--- 共有 2 条评论 ---
change_solider膜拜啊…… 4年前 回复
开源无憾一看老大就是过来人 4年前 回复
比如你要搬家 把旧家的被子 用车拉到新家 然后放在床上 把旧家的毛巾用车拉到新家 然后挂在绳上。。。这样要拉好多趟。全js方案 就是请求次数太多了。JSP方案就相当于搬家的时候先把东西打包好 用大车拉过去,这样好处是请求次数少,坏处是不够灵活。
--- 共有 3 条评论 ---
change_solider回复 @赵占涛 : 没想到我昨天发的这个帖子,有这么多人回复。。 4年前 回复
赵占涛回复 @change_solider : 所以一般管理系统,或者办公系统之类的,偏向于全js方案。 4年前 回复
change_solider数据量小的情况下,全js还是没问题的。 你知道Angular JS吗?全js方案。 4年前 回复
将客户端和服务器端解耦是一种特别好的做法,它能使两边并行开发,并且使两边代码都能实现重用;这是我想做到的。
顶部