安徽工业大学毕业设计(论文)
图5-5 读者借书流程时序图
由此可见借书流程是一个流水式操作,借书的前提必须在书籍信息、读者信息已完成的前提下进行的。程序的时序图是表达程序动态处理流程的最佳方式,可以对程序的功能形成一个直观的认识。
5.4 系统相关代码说明
5.4.1 相关配置文件说明
客户端发出一个http请求给web服务器, web服务器对http请求进行解析,
26
安徽工业大学毕业设计(论文)
如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),那么,web容器将请求转交给DispatcherServlet。 DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数Cookie等)以及HandlerMapping的配置找到处理请求的处理器(Handler)。那么我们先来看看DispatcherServlet配置文件,便于让他实现我们想要的效果。HttpServlet是在web.xml文件中声明的。
通过classpath*:config/spring/spring-mvc.xml加载SpringMVC的核心配
置文件。根据HandlerMapping找到对应的Handler,将处理权交给Handler(Handler将具体的处理进行封装),再由具体的HandlerAdapter对Handler进行具体的调用。 Handler再对数据处理完成以后将返回一个ModelAndView()对象给DispatcherServlet。ModelAndView()只是一个逻辑视图并不是一个正式的视图,DispatcherSevlet通过ViewResolver将逻辑视图转化为真正的视图View。最后,Dispatcher通过model解析出ModelAndView()中的参数进行解析
27
安徽工业大学毕业设计(论文)
最终展现出完整的view并返回给客户端。
通过加载classpath*:config/spring/spring-*.xml,将连接数据库连接,同时集成了hibernate,做到对编写代码更加的方便快捷。
使用spring的HibernateDaoSupport.这样的话dao层使用spring提供的一系列模板方法,同时不用关心session, exception,事务管理也交给了spring。直接加载资源CommonService就可以调用CommonserviceImpl中的基本的方法。 5.4.2 spring注解及其先关代码介绍
在了解了图书管理系统的工作的流程之后,就可以对以上提供的流程进行编写,由于整个项目的框架是有MVC模式的,所以以下会提供相关程序类的一些代码片段,通过这些具有代表性的代码展现程序在代码实现上的成果。
5.4.2.1 Entity类及相关代码
Hibernate在处理实体类的时候提供了对象间的关联关系,在增删改查的时候可以使用Hibernate设置好的关联关系对实体类对象进行联级操作,这样的设置可以大大的减少编写程序时的工作量,从而提高编写代码的效率,然而,书写SQL语句时如果涉及到级联操作的话,需要用到多表联合查询,大大的增加了代码量,因此可以得出Hibernate对于SQL语句的封装在某些场合是合适的。Spring集成Hibernate使得SQL的联级操作变得更加简单、快捷。
如Borrow类,与数据库表的对应和对其他实体类之间的关联,通过@Entity和@Table(name = \直接建立了数据库表与实体类之间的关系,用数据操作过之后在进封装,同时使用 @ManyToOne、@JoinColumn(name = \nullable = true)、@NotFound(action = NotFoundAction.IGNORE), 使得Borrow和Reader类的对应关系多对一,所以在Borrow中封装了Reader累的对象没具体的代码如下:
@Entity
@Table( name = \public class Borrow {
28
安徽工业大学毕业设计(论文)
@Id
@GeneratedValue(generator=\
@GenericGenerator(name = \@Column( length=32 ) private String id ;
@ManyToOne
@JoinColumn( name = \@NotFound(action = NotFoundAction.IGNORE) private Reader reader;
这样编写不仅仅完成了多种关联关系的映射,同时,也在使用Hibernate
session的sava(),delete(), get()、update()等方法操作Borrow对象的时候,就会级联操作Reader对象,这样就简化了书写复杂的SQL---多表链接语句。当然,Hibernate的缺点也是相当的明显的,那就是查询效率的问题,他在操作的时候不仅仅执行的是一条语句,有可能执行多条,这样就导致了操作性能的问题。这样就需要应地适宜的来选取,要用什么语句来对数据库进行操作。当然,本系统数据库结构比较简单,所以就采用的的失眠所说的这种方式,Hibernate相比JDBC要占用更多的数据库资源,因此关联关系的设置要多多慎重。
5.4.2.2 Controller类及相关代码
Controller类主要的总用就是一点,那就是通过请求的url获取指定的Controller,同时获取指定的方法,再通过方法对页面传进来的参数获取得到,之后操作并绑定数据重新传到相应的页面。具体的,如:BorrowController通过 @Controller和@RequestMapping(\,通过@Controller声明这是一个Controller,通过@RequestMapping(\获取请求url的路径,确定请求到那个Controller进行操作。再通过方法上具体的@RequestMapping(\获取具体执行的方法。其中 @Resource(name=\是加载配置文件spring-beans.xml中dao的代理声明。@RequestParam(value=\
29
安徽工业大学毕业设计(论文)
defaultValue=\是url中所带的参数的获取。最后,通过return语句直接返回给springMVC配置文件,确定页面路劲。具体代码如下:
@Controller
@RequestMapping(\public class BorrowController {
@Resource(name=\private CommonService commonService;
\
@RequestMapping(\
public String getBorrowList(Model model, PageData
@RequestParam(value=\@RequestParam(value=\HttpSession httpSession){
//String readerId = (String)httpSession.getAttribute(\ StringBuilder hql = new StringBuilder(); if(!\
hql.append(\if(!\
hql.append(\
}
}else{ }
//System.out.println(readerId);
pageData = commonService.getPageDataHql(Borrow.class, pageData,
30
if(!\ }
hql.append(\
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库图书管理系统毕业设计(6)在线全文阅读。
相关推荐: