Oct 20

蹒跚学步 Struts ! 不指定

Posted by bbscool at 21:19 | 随便写写 | 评论(0) | 阅读(124) | 转自 本站原创 | |
本学期下定决心啃下至少一种J2EE 的MVC框架,于是选择了最易用,参考资料也最多的Struts。因为以前没有接触过Java的WEB应用开发,于是学习的路程不算顺利(比PHP那种相对而言的“小儿科”难理解的多了,艾,至少我是这么认为的)。一开始的时候,去图书馆借了基本参考资料:“Struts Kick Start”,“Hibernate Quickly”(HBNT的书,我找了很久没有找到满意的,不是板砖一样厚,就是特别肤浅的案例教程,看得迷迷糊糊,不知诸位有啥好书能推荐)。书拿下之后,就泡在高教园区图书管4楼的沙龙拼命的在看,越看越不知所云。艾,真理还是需要实践才能为人所认知(我比较笨的啦),于是老老实实的装了Netbeans的Struts和Hibernates插件,开了一个工程,一点点输入代码,慢慢实验慢慢学习,Trial and error啦!!今天总算是能做出一个像样的数据库查询的代码了。

认识到了以下一些实用的小细节,记一下,防止自己忘记: 

 *表单类除了可以获得表单的提交数据之外,还能进行数据合法性验证。记得在struts的配置文件里,相应的action一节内加上:validate="true"

 *在使用hibernate时,切忌重复生成SessionFactory.要用到的时候,Static一记,速度会快很多,如:
   private static SessionFactory sf = null;
   private Session sess = null;
   static{
       try{
           sf = new Configuration().configure().buildSessionFactory();
       }catch(Exception e){
           System.out.println(e.getMessage());
       }
   }

 *使用HibernateDaoSupport时,不要忘记制定SessionFactory.:dao.setSessionFactory(sf);

 *自定义SQL查询时返回的List,其实只是一条一条的HibernateForm类而已。记得iterate之后转换为相应的Form类型,才能传递数据:
       List l=q.list();
           member mb = null;  //member为一Form类。
           Iterator it = l.iterator();
           while (it.hasNext()){
               mb = (member) it.next();
               h.put(mb.getUid(),mb.getNickname());
               System.out.println(mb.getPassword());
           }

 *jsp里logic标签的iterator标记,只能用于数组、Collection、Enumertion、Iterator或图,切忌直接用于List等其他类型。在Action类最后用request.setAttribute("results", h);一条,将HashMap h传递给下一个页面。随后跳转到的jsp页面中:

记得,传递的参数,要赋予给name这个属性!(一开始就令给collection了,500了老半天)

 *如果浏览器未开Cookie,默认情况下,Struts会在生成的url里自动添加jsession这个“记号”,很影响美观。去掉的办法是:在struts的config文件里,controller一节中添加: locale="false"。因为这本身就是controller中的重写器生成的,为了传递当前的session 。

暂时就这么多,小弟初学,还请高手指教。
Tags: , , ,
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]