现在的JavaWeb项目中,还有必要用JSP吗?欢迎讨论

情天 发布于 2012/11/01 16:32
阅读 22K+
收藏 5

如题所示,我觉得现在JSP在Web项目中已经可有可无了,下面是我现在的做法,如果大家有更好的想法,欢迎讨论!

我现在的项目中,已经全部使用了HTML静态页面来代替JSP,页面通过Ajax向后台发起请求,后台返回JSON格式的数据,在页面上用JavaScript进行解析并操作DOM。

如果页面上有一定权限才能点的按钮、链接时,那么在页面加载完成后,向后台发起Ajax请求,根据后台返回的JSON数据,动态的创建出当前用户能点的按钮和链接,有些链接可能出现在查询列表中,如:编辑、删除等,也可以在每次查询完成后,根据当前用户的权限生成JSON,并重新构造页面上的按钮、链接。

同样道理,树形菜单也可以根据JSON数据动态的构建出来。

这样做的好处是:

1:HTML页面、CSS、JavaScript等可以全部交给Apache来解析,加快整体的响应速度

2:后台的Tomcat服务器相当于各种数据的提供者,适当的缓存之后,也大大提高了服务的响应速度

3:减小了每次请求的网络传输的数据量,以前是通过JSP把数据嵌入到页面中,连HTML带数据的一起返回给客户端显示,现在是只向后台要数据,前端负责展现,自然减少了传输的数据量

4:也是由第3条带来的一个优点,即减少了后台生成JSP的这部分压力,改成由客户端来承担。

5:美工MM可以很好的介入进来,以前做完图片和项目Demo页面之后就没她什么事儿了,现在在她的Dreamweaver上装一个SVN插件之后,她就可以给我们调整页面了,以前这个工作是Javaer们最不屑一顾的。

...........
加载中
1
JFinal
JFinal
用上 FreeMarker 后,再也不需要 JSP了,JSP相对来说弱爆了,连 layout 功能都没有,layout 现在是基本配置了
1
情天
情天

引用来自“爪哇老妖”的答案

这个真可以有,JSP、Velocity、Freemarker这些都属于动态模版技术,HTML呢,直接就是静态模版技术,也许你会反问我可以用ajax来实现后台调用数据啊,可是我很担心你那页面的加载速度和用户体验,情况更严重的是,有些页面的效果是根据后台数据或参数来展示的,对于你的这个想法,持保留意见。。。

从加载速度方面来说,并没有想像中那么慢,在Chrome和Firefox上速度飞快,加载HTML的时候根本感觉不到它做了些什么,只是在IE上不太理想,页面巨大的话有时候确实会卡一下,不过随着IE版本的更新这个情况可能会慢慢解决掉。
用户体验方面感觉比原来刷页面的方式好的多,Ajax与后台交互,所以根本看不到讨厌的500错误页面了,用JS处理好后台返回的错误,提示信息更加易懂。
至于页面显示内容与数据库有关的问题,这都是交给后台组织好数据用JSON返回的,例如:{userid:1,operation: {'查询'}}和{userid:2,operation: {'查询','删除'}}之类,这样JS拿到JSON数据之后就知道该怎么构建页面了,当然,这些页面元素级的控制,完全可以放到数据库中去,动态的实时控制用户权限。
Photon
Photon
楼主说的情况跟extjs一样,抛弃动态页面,所有数据用js控制,展现,IE处理js虽然慢一点,但这是可控的,在加载的时候给个loading图片用户看起来比浏览器加载动态页面效果好些。要是js功底好,还可以写一些特效,用户体验就更好了。
0
七念
七念
+freemarker
0
linan
linan

看情况啊,可以有。

不过你说的情况,也有很多,尤其是网站很大,甚至页面的不同部分都是不同的小组做的话。 这时候不用落伍的iframe,就用ajax,jsonp了。

0
情天
情天

引用来自“闫晓沛”的答案

+freemarker

是直接访问freemarker的模板吗?这样也确实可以代替JSP,不过还是得走一下Java容器,感觉不如直接让Apache处理HTML的好

0
陶邦仁
陶邦仁

这个真可以有,JSP、Velocity、Freemarker这些都属于动态模版技术,HTML呢,直接就是静态模版技术,也许你会反问我可以用ajax来实现后台调用数据啊,可是我很担心你那页面的加载速度和用户体验,情况更严重的是,有些页面的效果是根据后台数据或参数来展示的,对于你的这个想法,持保留意见。。。

陶邦仁
陶邦仁
回复 @lovinglily : ”世界上不会有一个页面是预先设计好的,因为它有数据“乔布斯说的
lovinglily
lovinglily
意思是,静态页面预先设计好布局的话,并不是根本意义上根据后台数据动态改变,这对页面数据显示有影响是吧..
0
Y
YsykZheng
你能保证所有用户的浏览器都能处理你的这些数据?
情天
情天
跨浏览器确实是一个大问题,可以借助jQuery这样的JS库来解决,虽然有些时候也不是很完美,但是够用了
0
Ken5233
Ken5233
对于jsp freemarker 等之类的都是属于动态模板,要知道它们最终都是翻译成html代码给浏览器,所以没有替代这种说法。只能说哪种情况更适合你的应用了。如果动态交互更多 且动态判断多的情况下 你用ajax动态请求的方式显得很蹩脚,这中间有个取舍和平衡点
情天
情天
同意你的观点
0
陶邦仁
陶邦仁

引用来自“爪哇老妖”的答案

这个真可以有,JSP、Velocity、Freemarker这些都属于动态模版技术,HTML呢,直接就是静态模版技术,也许你会反问我可以用ajax来实现后台调用数据啊,可是我很担心你那页面的加载速度和用户体验,情况更严重的是,有些页面的效果是根据后台数据或参数来展示的,对于你的这个想法,持保留意见。。。

我能保证所有用户浏览器都能处理服务器发给它的HTML,很难保证用户浏览器能处理我页面里的所有Ajax数据请求。
一个大土豆
一个大土豆
回复 @xmut : js不可能运行的很慢,就算被我们喷的无地自容的IE6,其实也是大量的js在运行。一个页面的js不可能很多,多到不能处理的地步,否则是本身就设计有问题的
Photon
Photon
啥年代了,还在纠结浏览器能不能运行js。
情天
情天
没错,这样的项目架构确实存在禁用JS之后玩不转的情况,但是现在有几个项目不用JS的呢,我们可以把“开启JS”作为项目运行必需的环境提出来
xmut
xmut
确实!楼主把页面控制逻辑全部交给javascript,万一客户端javascript被禁用,或者javascript运行速度很慢,这反而影响了客户体验!
0
jeffsui
jeffsui
有还是没有 ,看项目的需要,没有不能替代的技术方案。
返回顶部
顶部