对于传统的servlet+javabean ,通过这次系统的开发,我还是觉得如果逻辑掌握得好的话,不需要框架,只要用servlet和javabean就已经足够开发出不错的程序来。
效果一:对于后台或前台页面,想要实现一点击就能打开一个包含了以往数据的页面,并且这些数据是有一定筛选性的,如何实现呢?
方法:可以用Action类来跳转,我们可以在web.xml文件里面配置好这个servlet的对应路劲,因为以后要重复用到这个Action的url,这个时侯的Action类就是一个中间的实现跳转的平台,既然是中间过度的平台,那么还需要什么呢?需要一个封装了属性的bean和一个根据具体参数来灵活改变sql语句搜出筛选性数据的Dao,以及一些显示的终端页面(就是跳转到的页面)。OK,这个Aciton类需要的是参数,这些参数都是通过url传进来的,进来后接受赋值,然后构造出Dao的对象,根据参数调用了Dao里面的方法,那么,关键在这里,Dao里面的方法返回的是什么呢?是一个List,通过参数的有无把筛选到的数据添加到bean里面,然后把bean对象添加到一个list里面并且返回, 那么在Aciton类里面就返回得到了有数据的list。返回后就等待把这些数据跳转到终端页面并且进行显示了,在Action类里面需要什么呢?先需要这一步:
req.setAttribute("presents",list) ;
req.setAttribute("listsize",new String(String.valueOf(list.size()))) ;
这段代码可以使得跳转后的那个页面的request可以接受到这个list的数据,实现数据的跳转。一般用到这段代码的话,跳转终端页面用的显示方式就是JSTL标签了。
那么Aciton最后一步就是根据之前url的参数来实现相应的跳转,如:
if("presentforcategory".equals(pagePostion)){
req.getRequestDispatcher("/score/admin/present/present_for_category.jsp? category_id="+categoryid).forward(req,resp);
}
那么这一步就通过之前urlpagePostion的值是等于presentforcategory的跳转到了终端页面,并且也传入了参数category_id。
那么终端页就通过语句<c:forEach var="present" items="${presents}" varStatus="var">和<c:out value='${present.presentId}'/>把封装好的数据显示出来。
那么这一流程就用到了bean,servlet,dao,JSTL。
在这里我想多讨论下dao,里面的sql语句应该是可以根据参数的有无来机动选择的,怎么做到呢?就是先把一个正规的sql语句写在最前面,以后根据参数的有无从后面添加sql剩下的部分就可以了,最后才把sql执行,就行。里面也要把和数据库链接的类做好并且对象进来用。
这种方式还是不错滴~~~