public ActionForward detailS(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { }
User user= (User)request.getSession().getAttribute(\String stu_id = user.getUsername(); Object obj=getSService.getDetailS(stu_id); request.setAttribute(\return mapping.findForward(\
在Action中调用了getService的getDetailS方法后,就转到service中进行对数据访问成的调用,如代码段5-4所示,在getDetailS方法中同样的通过Spring的注入调用GetDetailSDao的调用。
代码段5-4: GetDetailSImpl.java
public interface GetSService { }
private GetDetailSDao getDetailSDao; public Object getDetailS(String id) { }
public void setGetDetailSDao(GetDetailSDao getDetailSDao) { }
this.getDetailSDao = getDetailSDao; Object obj=getDetailSDao.getDetailS(id); return obj;
public Object getDetailS(String id);
由于在已经使用了Hibernate框架,所以所有对数据库的操作都可以采用面对对象方式进行的操作,如代码段5-5所示。
37
代码段5-5: GetDetailSDaoImpl.java
public interface GetDetailSDao { public Object getDetailS(String id); }
public class GetDetailSDaoImpl extends HibernateDaoSupport implements GetDetailSDao { public Object getDetailS(String id) { }
String hql = \List
在通过getHibernateTemplate().find(hql)语句后得到的list就可以直接作为对象列表返回了,这是就可以将数据库中获得的数据层层处理,最后传递到前端页面中进行显示。
5.2 导师模块的实现
源程序根据不同的层次分在不同的包中,如图5-2所示。具体的各个包的作用如下:
图5-2 导师模块包结构
38
其中,com.vanceinfo.tutor.module.tm.dao用来实现导师模块数据库访问层接口;com.vanceinfo.tutor.module.tm.dao.impl用来实现导师模块数据库访问层实现;com.vanceinfo.tutor.module.tm.server用来实现导师模块服务层接口;com.vanceinfo.tutor.module.tm.server.impl用来实现导师模块服务层实现;com.vanceinfo.tutor.module.tm.form用来实现导师模块Struts数据模型;com.vanceinfo.tutor.module.tm.action用来实现导师模块Action实现。
首先配置Struts,如代码段5-6所示,它注册 Spring 代理类的名称,DelegatingActionProxy 类使用动作映射名称查找 Spring 环境中的动作。这就是使用 ContextLoaderPlugIn 声明的环境。将一个 Struts 动作注册为一个 Spring bean,这样使得form的配置更加直观,这里定义了
代码段5-6: struts-config-tm.xml
type=\ path=\ type=\ path=\ 在Struts配置完成之后,就可以在jsp页面中通过发送Http的请求找到对应的方法执行,如代码段5-7所示,客户端发送了一个http链接请求TMteacherview.do,并指定调用的方法名teacherView,这样就可以通过Struts的配置文件区找到相应的teacherView方法查询到所有导师的信息。 代码段5-7:tmTeacherHome.jsp 39 在struts-config-tm.xml配置文件中,指定了/path元素,这样Struts在获得TMteacherview.do请求以后,就会去主动寻找TmTeacherActiond这个类的teacherView方法,如代码段5-8所示,在TmTeacherAction.java中根据method执行teacherView方法。该方法调用了tmTeacherService的teacherView方法,这里调tmTeacherService用到了Spring的注入去实现。这样就从Action层到了service层中区执行。 代码段5-8:TmTeacherAction.java public void setTmTeacherService(ITmTeacherService tmTeacherService) { this.tmTeacherService = tmTeacherService; } HttpServletRequest request, HttpServletResponse response) { User user = (User)request.getSession().getAttribute(\String tchId = user.getUsername(); Teacher tch = tmTeacherService.teacherView(tchId); request.setAttribute(\return mapping.findForward(\} public ActionForward teacherView(ActionMapping mapping, ActionForm form, 在Action中调用了tmTeacherService的teacherView方法后,就转到service中进行对数据访问成的调用,如代码段5-9所示,在teacherView方法中同样的通过Spring的注入调用tmTeacherDao的调用。 代码段5-9:tmTeacherServiceImpl.java public interface ITmTeacherService { } private ITmTeacherDao tmTeacherDao ; public void setTmTeacherDao(ITmTeacherDao tmTeacherDao) { this.tmTeacherDao = tmTeacherDao; 40 public Teacher teacherView(final String id); } public Teacher teacherView(final String tchId){ Teacher tch = tmTeacherDao.teacherView(tchId); return tch; } 由于在已经使用了Hibernate框架,所以所有对数据库的操作都可以当做对对象的操作,如代码段5-10所示。 代码段5-10: tmTeacherDaoImpl.java public interface ITmTeacherDao { } public class TmTeacherDaoImpl extends HibernateDaoSupport implements ITmTeacherDao { public Teacher teacherView(final String tchId){ Teacher teacher = (Teacher) getHibernateTemplate(). execute(new HibernateCallback(){ public Object doInHibernate(Session session){ try { Criteria critrria = session.createCriteria(Teacher.class); } critrria.add(Restrictions.eq(\return critrria.uniqueResult(); public Teacher teacherView(final String tchId); }catch(HibernateException e){ } throw e; }); if (teacher != null) { teacher.getPolitics().getPoliticsContent(); teacher.getNation().getNationContent(); 41