本帖最后由 fxyfxy 于 2010-02-21 10:52:23 编辑

解决方案 »

  1.   

    1.不是
    2.不知道
    2.有些情况不能完全分离 有些情况也不必要在前台页面使用服务端脚本 所以将必须用到或者可能用到的服务端脚本封装到标签中 让使用者只能通过标签使用服务端脚本 或者 用来完成以前只有服务端脚本才能完成的功能 标签没封装的就是不建议你在JSP页面写服务端脚本的DD 大概这个意思吧..
    3.不知道
    4.你可以下一个OA去看看
    5.......
    6.......
    7.你为什么用MVC?
    8.只是简单的服务端验证而已 过滤是哈意思?
    9.你可以搜索下 通达OA 我目前做什么是参考那个的..
    10.跟你第二个2题的答案一样
    11.不对
    12.过滤器
    13.???
    ...算了我看不下去了 我都不知道我在说什么 无视我吧..
      

  2.   

    1.你理解的不狭隘,不仅仅是web,别的也应用程序也无非都是这些对db的操作。
    2.技术者方面没有什么高级不高级的,你不懂的技术就觉得高级,当你会用了就觉得也不过如此。
    3.jsf我没有用过,但是如果他存在就有他存在的道理,必然有他的好处。繁琐是肯定存在的。hibernate里面的源码不知道你看过没,我暂时没看过,hibernate也无非是用反射等方式将一些东西都给你封装好,让你直接去用。jdbc的方式很不错,因为我有个朋友,他公司现在开发就是用的jdbc做持久化的操作,据他说效率比hibernate高。
    4.你去google下,如何提高效率
    5.差别应该不大,规范点比较好,自己写的代码让别人看了之后叫好,才是好代码
    6.没太理解您的意思
    7.在没有jsp之前,程序员写的都是servlet。jsp在后台也会转成servlet,然后再输出
    8.你这种方法可以,你也可以用正则来判断
    9.EJB的使用,最好是先了解下RMI,EJB在比较大型的项目、分布式的结构中用的可能多一些
    10.每个Class都可以说是一个javabean
    11.不知道
    12.下载之前判断用户有没有登录
    13.google下
    14.--19略过
    20.语言没有区别,最重要的是算法和逻辑
      

  3.   

    LZ的问题很庞大,坐等高人来解答,话说看到LZ问到这么多专业问题,真不像是大三的学生
      

  4.   

    您可以先去了解一下 J2EE 是什么。实际上你所说的那些仅仅是 java web,java web 只是 j2ee 中很小的一部分,也是技术含量最低的那部分。你的问题太多了,等明天我回去之后慢慢再来看。
      

  5.   

    什么大学毕业的啊?1. 不用数据库的WEB应用也很多啊
    2. Oracle收购Sun
    2. 关于JSF是一种规范还是一种框架,我还没搞清
    3. Hibernate的持久化操作应该不是那个意思吧,我觉得Hibernate的懒加载和HQL很强大,Hibernate底层就是JDBC,直接效率应该没有JDBC高
    4. 不需要做聊天模块吧
    5. 还是用多个Servlet好吧,便于维护
    6. 你可以用URL重写,你看csdn的链接
    7. 可以自己封一个好点的跳转方法,JSP还是专注于显示吧
    8. 如果出错就未找到咯
    9. EJB主要是用于分布式吧,你不是单Server么
    10. 你的VO和DAO都是JavaBean吧
    11. 可以吧
    12. 用Filter验证下
    13. 还要弄这么麻烦
    14. ?
    15. 主要是分布式调用吧
    16. ...
    17. unknown
    18. 框架搭好后就专心于业务了
    19. ?
    20. 都好
      

  6.   


    我搜了一下:
    J2EE全称为Java2 Platform, Enterprise Edition。 
    “J2EE平台本质上是一个分布式的服务器应用程序设计环境——一个Java环境,它提供了: 
    ·宿主应用的一个运行基础框架环境。 
    ·一套用来创建应用的Java扩展API。”(引自《J2EE服务器端高级编程》) 
    这个看不出门道。
      

  7.   

    首先我觉得java作为一门与c等平级的语言,它的功能是非常强大的,而学好这些最好的办法就是看java的api了,对于servlet,struts还有hibernate其实都是对java代码的封装,而这些了解并不简单,还有jsp本来就是对servlet的一种代理(个人理解),在实际使用的时候还是会翻译成servlet,它的产生本来就是为了更好的与美工的的合作使用的。应为它的最高境界就是消除脚本,纯标签则会很好的被美工所接受,效率的话必然不如servlet高啦。java web确实是用来和用户进行交互,如果单纯是给用户显示必然很简单,但是更多的还有各种业务的处理,各种逻辑操作,有的时候会进行垮应用或者跨服务器的操作。而且很多技术都是在不断的更新的。ejb应该更多的是应用在分布式开发上吧,也就是说不同地址的开发者相互调用别人写的代码。
      

  8.   

    没有全看你的问题,去来做都是数据的获取,比如页面输入,文件上传解析等等然后是处理,获取有用的信息,再呈现给用户,Hibernate比JDBC好用,但是速度一般比JDBC慢,因为前者最后还是要翻译成后者执行的,但是开发简单一点,
      

  9.   

    1,你可以把数据库的范围扩大比如一个文件夹、内存等就差不多的。。不一定非得数据库。
       应该说web是为客户服务并符合一定标准的应用型软件
        你可以看一下WEB3.0的目标
    2,有 叫嵌入式编程
       嵌入式编程百度百科
    2,JSF的市场不是很大,想做个官方标准的可市场无情的把它淘汰了。。
        代码的解耦是我们在编写Java类或接口的时候一直强调的。。
         可以说增加的代码量但有利于分工。。有利于量化生产。。
    3,Hibernate的出色点不是简单的封装JDBC代码。
         Hibernate的出色点:1,将数据库的面向关系转化为面向对象(如果数据库是面向对象化Hibernate将被淘汰)
                            2,对象关系映射。
         封装代码不难,难的在于思想。
          Hibernate在速度上比JDBC慢至于慢多少看你的hibernate的水平
    4,事情多是看者容易。。做的难。几K的访问量可以不用Java开发(可以用PHP或ASP)
        开发一个项目还有维护周期(这个好多初学的会忽略了) 而这恰恰是Java的强项(稳定、健壮)
          这也是大量的网站采用php、asp而政府、银行呀等采用Java的原因之一
    5,不要光想者效率问题,你的代码可读性比效率更重要,如果逻辑不一样建议分开写
    6,你这个问题就是Struts解决的控制转向问题 Struts的分发Action就可以实现你的思路
        servlet好像要判断的(目前没想到好方法。。待续)
    7,servlet作用一般是用于逻辑分离,过滤等起控制作用的. 
       jsp也是servlet,首次JSP被客户端第一次请求时,都转为SERVLET,以后就一样了。
    8,可以这么做。。(不考虑安全的情况下)
    9,练手可以用tomcat。。真正开发请用其他的服务器。(安全、事务、分布等)
       效率是次要的。。
    10,Javabean是具有一定规范的Java类.可以学习一下EJB感受一下什么叫JavaBean
    11,肯定不对呀。。必要的判断(用户身份、连接的合法性、资源的存在性、是否可以断点等等)  
    12-13  断点序传代码
    14,你可以看一下企业级服务器方面的知识15-16,EJB是集合了容器和JavaBean的概念(包含对象生命周期,事务,安全等运用)(标注:自己的理解)17,弊端?不过实现有难度比如文件的默认编码或工具的编码可能不一样。根据实际来吧。18,太绝对了。。他们的组合可以开发出一些系统至于开发的快慢和效率由具体的环境决定的。19,基础类是没有的不过你不感觉的如果给了这个类sun的工程师是否又要加班了。(上传类、下载类、
    读Xml类等等)
        工程师们可以写个自己的上传组件而作为语言--只要定义基本的语素和语法就好了。。20,语言没有好坏之分存在即为合理的各有各的优点与缺点
         思想最重要建议:1,初学者不必在乎效率的问题
          2,你目前写的项目只是巩固技术而不是实际的开发。
          3,在概念等方面要有自己的理解
    PS:一个没有工作经验的菜鸟而已~
      

  10.   

       只能说LZ还是个学生能有这么多专业的疑问很不错
         我只是粗略的看了下您的疑问,内容比较多。我回答可能也不会很专业,还是等火龙果来给你回答。
        说下我工作快2年的体会,语言不重要,写的代码你项目组组长看的懂或者你的项目组成员能看懂基本是可以的,当然性能这东西,能越好当然就好了。关键是能做事,能为老板赚钱就OK了。个人体会。
       代码是要积累的,经验不是白混的。
      

  11.   

    1.如果把数据库更广义一点,比方包括文件系统或者外部接口,那么你的理解完全正确。事实上图灵早就说过,计算机不过是输入,处理,输出。2.你说的就是我1.里面讲到的外部接口,你不用管数据库,就看到jdbc,那么jdbc就是数据库接口,然后你说别的东西,比方股票信息等,从webservice过来,那么只是换个数据来源而已。2.显示俺不懂,交给前台的MM去做。3.这个问题比较大,在别的帖子里都吵起来了。你记住,封装越多,速度越慢,但是通用性越强,是个大规模开发。
       
    4.你的感觉很对,的确有杀鸡牛刀的感觉。但是你现在学到的东西,以后一定有用。5.很长的servlet和很长的函数一样,牵涉到程序风格,日后维护,多人共同开发等等问题。所以要按照好的习惯来。6.没有用structs?7.jsp就是编译成servlet在服务器上运行的。主要还是牵涉可维护性问题。在表示层不要写太多代码。8.好像你做的事儿和不被注入没有关系?要不被注入,后台别拼装SQL,用preparedstatment9.因为你的项目太小。10.换个思维,别管那些功能。以数据为中心,满脑子都去想数据是怎么流的,也许你就有JAVABEAN的感觉了。11.错。打开文件流,response里面要set东西......具体见网上的例子。12.用session。13.这是客户端的问题,如果b/s,基本不用考虑。14.看流量,以及对健壮性要求。15.EJB是用来骗钱的,你做了项目经理后,就知道怎么用ejb了。16.看不懂问题。17.别的帖子有写,UTF-8字节大,所以造成流量会大些。但是好处比坏处要多。18.一大堆名词罗在一起,没看懂问题。19.上传的package不难实现,也有现成的。20.什么叫不可抗因素?地震,海啸?j2ee不是语言。
      

  12.   

    package servlet;import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;import beans.FilterIP;public class FilterToAll implements Filter {
    private String ip = null;
    FilterIP filterIP = new FilterIP();
    public void init(FilterConfig filterConfig){
    System.out.println("***过滤器启动***");
    }
    public void doFilter(ServletRequest req,ServletResponse resp,FilterChain chain){
    try {
    HttpServletRequest reqH = (HttpServletRequest) req;
    HttpSession session=reqH.getSession();
    session.setAttribute("filterIP",filterIP);
    ip = req.getRemoteAddr();
    Boolean status = filterIP.isBadIP(ip);
    if(!status){
    req.getRequestDispatcher("badip.jsp").forward(req,resp);
    return;
    }
    chain.doFilter(req,resp);
    } catch (IOException e) {
    System.out.println("1636:FilterToAll类出错!\n"+e);
    } catch (ServletException e) {
    System.out.println("1637:FilterToAll类出错!\n"+e);
    }
    }
    public void destroy(){
    System.out.println("***过滤器销毁***");
    }
    }
    以上代码老抛1636:FilterToAll类出错!ClientAbortException:  java.net.SocketException: Connection reset by peer: socket write error网上很多人说有类似问题,有没有人能解决?
      

  13.   

    ClientAbortException:  java.net.SocketException: Connection reset by peer: socket write error 
    异常解决 参考http://www.myexception.cn/java%20exception/125.htmlhttp://www.blogjava.net/henry1451/archive/2009/03/20/261105.html楼主可以找一些开源的OA项目 参考看看 
      

  14.   

    这里是java开源OA 楼主 参考http://www.blogjava.net/henry1451/archive/2009/03/20/261105.html
      

  15.   

    8.对get来的参数进行过滤,比如frame.cc?id=1000,为了确保不被注入,取来的id是String型,我简单进行转换成int型并 try,如果出错转到ERROR页面,这样的过滤方法对么? 很明显 URL 参数中的 id 应该是一个数据表的主键。前面有人说到安全性,可以这样想想看,既然可以是 frame.cc?id=1000,那我也可以手工输入frame.cc?id=1001 对吧?但是当前用户只有看 id 值为 1000 数据的权限,并没有查看 1001 数据的权限,如果这样的话,这位用户同样能够看到 1001 数据的内容。如果一定要在 URL 中传参,那解决方案一般有:第一种:在后端进行权限验证,当前用户没有查看这条数据的权限时,提示无权访问信息
    第二种:数据表主键由自增的数字改为 UUID 值,由于 UUID 的重复概率极低,要手工猜到一个 UUID 值那就很困难的,可以看一下这个帖子的 URL 地址,后面的那个 .html 前面的 36 个字符(32 个有效字符)就是个 UUID 值
      

  16.   

    额,这个系即权限问题的地方我当然要先验证SESSION判断权限然后再检查id字段的,我这里是怕0=0注入的,因为id段要送到DB的,DB报错很耗内存似乎,所以我就这样确保id是INT型数字,就是不知道这个会不会导致severlet大量异常错误溢出 不知道有没有危害 
      

  17.   

    11.文件下载我是直接给了文件路进让用户下载,这样对么? 可以,这样是方法之一。还可以使用统一的下载 Servlet 来处理,这个 Servlet 读取文件转成输出流,设置 HTTP 响应头,写入 response 的输出流中,用户也可以下载。这样做可以集中管理下载,更好地控制下载。
    12.有什么方法控制下载权限,只有登陆才能下载?因为我直接给的文件路径下载的很容易猜到文件目录然后穷举。可以采用回复 11 问采用的方法。也可以在服务器中设置虚拟路径,比如把文件目录 d:/files 映射成为 http://xxx.xxx.xxx.xxx/files 的 URL 路径,比如 d:/files/doc/test.doc,那用户就可以通过 http://xxx.xxx.xxx.xxx/files/doc/test.doc 下载,如果需要登录用户才能下载的话,可以写一个 Filter,Filter 的 url-pattern 设为 /files/* 这样就可以拦截所有的 files 路径下的请求,在 Filter 中检查 Session 中是否有用户的登录信息。
    13.断电续传的实现用到那些技术?它占内存么?多大? B/S 应用一般不采用断点续传,断点续传一般使用客户端软件,记录一下当前传到什么位置了。
    14.有那些功能一般不能写小程序(500行以内)实现的而要运用更强大的服务器,比如weblogic? WebLogic 是 J2EE 容器,实现了对应版本 J2EE 所有的技术规范。有些事情在 tomcat 这些 Servlet 容器是无法完成的,比如说分布式事务处理,也就是说一个事务操作涉及 A 数据库和 B 数据库甚至更多的数据库,这些操作要么全部提交,要么全部回滚。像这样的需求,光使用 JDBC 事务是无法处理 2-PC(两阶段提交协议),需要采用 JTA 事务,也就是分布式事务处理,分布式事务处理需要有一个协调者,这个协调者就是 JTA 的实现。不能以代码量来衡量程序,应该以技术含量来衡量。
    15.用了EJB一般来做什么?EJB一般都是大一点的程序功能段么?如果不是,它和一般的class有什么区别? EJB 用于分布式组件,EJB 程序并不需要大程序,小程序同样可以使用 EJB。由于 EJB 采用接口与实现隔离的形式,客户端实例是通过 JNDI 进行查找的,客户端只需要一个接口就可以调用 EJB 的具体实现了,因此 EJB 更适合开发大型、安全性高的分布式应用。EJB 也是一个 Java 类,与 class 没有区别。EJB 指的是 Session Bean, Message-Drivern Bean(MDB),EJB 3 中取消了 Entity Bean。Session Bean 可以理解为一个业务逻辑组件,MVC 应用中的 M 可以使用 Session Bean。而 MDB 是用于 JMS 监听消息用的。EJB 中常用的是 Session Bean
    16.EJB有望发展成买卖功能的媒介么?比如一个多功能上传专用的EJB,有这样的潜力么?如果能,10年内能形成市场么?如果不能就其本质那它和 bean就名字不一样? 你可能没理解 EJB 到底是什么,EJB 可以用于实现应用中的业务逻辑类
    17.全站都用UTF-8有弊端么? 参考:
    http://topic.csdn.net/u/20100221/14/89634e60-25c2-4b06-831b-cca6f56a124d.htmlhttp://topic.csdn.net/u/20080829/12/b145f99d-c10d-4ca5-9efd-611d95e5d50a.html18.HTML、CSS+DIV、JS、XML、tomcat、PS、db、java基础类、DAO模式、JDBC这些基础是不是就能完成WEB运用的所有功能?这样运用基本知识的开发慢么?和流行的HSS开发速度比是多少?这些足够完成任何 Web 应用。开发将会是很慢的,不过如果对于 SSH 的机制不了解,使用 SSH 可能会更慢。当然了,我认为 SSH 也是很慢的,至少我发觉 jboss seam 就比 SSH 方便,至少没有那么的 XML 配置!
    19.关于Jsp,J2EE“基础类”好像没有关于上传的类,这是不是说明它在大流量处理上存在弊端?这不是意味着对对媒体的支持断腿么? 我不知道你所指的“J2EE 基础类”具体是什么,我认为应该是 Servlet 容器所实现最小化的 J2EE。Servlet 中的 HttpServletRequest#getInputStream() 可以获得通过 HTTP POST/PUT 方式上传的附件,不过这是原始 HTTP 协议的实现,要想使用原生的 getInputStream() 来实现文件上传,那必须熟悉 HTTP 协议。一般不会直接使用这个方法来处理上传的,我们有很多的开框工具,比如:Apache 的 FileUpload、O'Reilly 的 COS 等等,都是非常棒的上传组件,这些组件都是在 HttpServletRequest 基础上封装,让我们更加方便地使用。
    20.如果你是一个有经验的开发者,你坚信j2ee有php那样的语言更好么?从不可抗因素的多少来考虑。月经讨论话题。语言不存在好坏,只存在语言使用者水平的高低。j2ee 与 php 各有优点,PHP 适合开发网站、J2EE 适合开发 B/S 应用、分布式应用
      

  18.   

    引用 34 楼 fxyfxy 的回复 额,这个系即权限问题的地方我当然要先验证SESSION判断权限然后再检查id字段的,我这里是怕0=0注入的,因为id段要送到DB的,DB报错很耗内存似乎,所以我就这样确保id是INT型数字,就是不知道这个会不会导致severlet大量异常错误溢出 不知道有没有危害 检查是必需的!
      

  19.   


    收益匪浅!谢谢这位朋友。再问个问题:1.如何获得WEB应用程序的所以异常?我想对所有漏过处理的异常做一次最后处理,因为很多时候会发生莫名其妙的异常。2.还有我在写代码时总是太过紧张动不动就来个try,有时直接把所有代码都try了,频繁使用try会不会有什么不妥?
    但是就是那么神经兮兮的写代码还是会有漏过的异常,俺是完美注意想一网打尽 。
      

  20.   

    如果实在不放心的话,在最顶的调用的时候整个 try...catch(Exception) 住。当然了,我们不应该只能 catch 块中写个 e.printStackTrace(); 完事,我们应该在出错时做一些补救措施什么的,没法补救的话,也应该友好地提示用户,比如提示个“系统正忙”之类的,让用户不认为你这个系统是坏掉了,可以在 web.xml 通过 exception 来配置 error-page 值。一般运行时异常发生最多的就是 NullPointerException,这种异常是由不好的代码编写习惯造成的,从参数中获得形参变量之后也不检查一下是否为 null,就直接使用了。
      

  21.   

    大三。。一开口就当今web的主题
    我落伍了。。