>
Java&Android移动应用编程 Java&Android移动应用编程 26223成员

今天和另一个Team争论起JSP的编译问题

Kiri 2010-07-22
起因是这样的
我们整个PG组关于某个处理的实现有两种方式
同样是三个循环,
他们是两个写在JSP,一个写在Form
而我和另一个同事(被copy了)是两个写在Form,一个写在JSP
(其实本来是写在Action里的后来被迫拿到Form里了)

现在我们有两个方案
1、少数服从多数,我们俩把这段代码移到JSP去
2、有相关证据表明在Form里执行的效率高于在JSP执行的话,就多数服从少数都改过来

虽然我是觉得JSP能少处理业务就少处理业务,但就这种循环赋值是不是真的也无所谓?
还有,JSP都什么时候会进行编译?是不是会针对每个客户端进行编译?(虽然感觉上应该不是)
0

查看更多有趣的豆瓣小组

回应 (10条) 只看楼主

  • 子子叔
    JSP其实和SERVLET是一个东西,不管是哪个客户端,谁第一次请求了JSP,JSP就会被"翻译"成SERVLET.java然后再被编译成SERVLET.class(如果是TOMCAT你可以再他的根目录下的WORK下的对应工程中找到,比如index.jsp->index_jsp.java->index_jsp.class).以后如果JSP没有被修改,他就不会再被重新编译.

    其实把业务代码写在FORM和JSP里都不是好的实践,因为他们很难被复用,我推荐你把代码封装成TAG,这样复用性会比较强.
  • Kiri
    谢谢zizi,看来从执行效率上来说也没有什么差距啊。
    我们这次用的是WebLogic 9.1,不过就这个问题上应该和Tomcat没啥区别吧。
    关于封装成TAG,虽然是好建议,但这个项目里没法实施了。
    嘛,做外包就是不灵活啊。
  • Ryan
    jsp的编译1楼已经讲的很清楚了,不用多说。
    对form和jsp的选择,个人更倾向放jsp里,form作为纯粹的VO存在为好。前提是这段逻辑跟业务没直接关系,纯粹显示用。
  • 强盗君
    写在SERVLET里,返回一个JSON串,业务逻辑封装起来还是比较安全的,JSP页面可以用JS的方法处理这个SERVLET返回的结果。后期需要更精细的显示效果也可以通过JS做到。
  • [已注销]
    众所周知,java为开发语言提供了很方便的开发平台,但开发出来的程序很容易在不同的平台上面被移植,现在越来越多的人使用它开发软件。
    Java有它方便的一个方面,但它同时也带给了开发者一个烦恼,这就是保护的办法不多,而且大多数不是很好用,这样自己辛苦开发出来的程序很容易被人复制而据为己有,一般情况下,大多数的人都是用混编器(java obfuscator)来把开发出来的程序进行打乱以达到没有办法来反编译观看源代码,但是这种办法在网上很容易找到相关的软件来重新整理,那么这个混编只能控制一些本来也没有办法动您的软件的人,而对于一些掌握工具的人几乎是透明的,还有就是利用硬件加密锁,但大多数公司提供的硬件加密锁只是提供了一些dll的连接或简单的api调用,只要反编译他们,就很容易把一些api调用去掉,这样硬件加密锁也就不起作用了,但是现在到底有没有更好的办法呢?
    以色列阿拉丁公司提供的HASP HL加密锁提供的外壳加密工具中有一个叫做数据加密的功能,这个功能就能很好的防止去除api的调用,各位都知道:硬件加密锁的保护原理就是要你被加密过的软件和加密锁的硬件要紧紧地结合在一起,而且不容易被轻易的剔出原来的调用,这样才能很好的保证您的软件不被盗版,同时这种方式也很容易被程序员掌握,要对一个软件实现保护,大约只需要几分钟的时间就可以了,下面简单介绍一下他的原理:
    运用阿拉丁公司提供的外壳工具先把调用你的java解释器来进行加密,那么就是说如果要运用这个解释器就需要有一把特定的加密锁存在,然后我们再运用它提供的外壳加密工具中的内容加密把你写好的java程序当作一个文件来处理而对他进行加密,这个加密是采用的AES128位的算法的,这样这个加密过的数据文件——您的软件就只能被您的保护过的java解释器来进行解释,但是如果没有加密锁就不能够运行您的软件,从而达到真正保护您的软件的目的。

  • 强盗君
    转载了那么多,无非就是Class Loader的改变,公布些开源的办法,扯点有用的。
  • Enter
    Form是前端控制和业务逻辑远了去了啊。控制层封好需要显示的数据给显示层啊。jsp应该只有解包需要显示内容的循环。
    效率我觉得肯定还是SERVLET高。一个要编译,二用jstl el 的时候还要调用库。主要还是结构暴露和遵守MVC的问题
  • Kiri
    谢谢大家~

    这段代码的确是纯粹的数据拆分,从Vector拆出String来而已。
    其实我也想过MVC结构,所以放在Form里了。
    看来确实也没什么差别……
  • magemagic
    能说清楚点么?究竟要做什么?
  • Kiri
    就是把页面上的多条记录筛选当中的几条出来的处理
    因为是循环的,所以Form接收到的是数组么
    所以要循环比较某key对应的记录然后重新封装
    这个封装的过程是放在Form还是JSP就是我们之前纠结的内容了
添加回应

Java&Android移动应用编程的热门贴

推荐小组

值得一读

    豆瓣
    我们的精神角落
    免费下载 iOS / Android 版客户端