第一次搭建ssm框架
今天学习了ssm框架内的搭建,除了上课,摸爬滚打学了一年,今天终于学到了ssm的搭建,非常的开心,为了纪念一下,决定在博客里记录一下过程。
先说一下需求,从浏览器中输入ur,到数据库中查询商品的信息
dao层:我使用的是mysql数据库,先建立商品表(items)
而且这个表的po类(也就是javabean我也用图片发出来),‘
不过为了数据库中的items表以后的扩展,我用了其他的Javabean继承了Items这个javaBean,
并且用了一个包装类把这两个JavaBean包装在一个类中(这是为了在以后在方法的传入对象时,可以复用)
在dao层中我们使用的框架是mybatis,先导入mybatis的包,这其中包括log4j的架包(这是mybatis的日志,可以看到你操作数据库的sql语句),
lo4j.properties文件的内容,并且要在mybatis的settings标签中配置加载才有效
mybatis中,我使用的不是传统的dao方式,而是动态代理的方式(也就是mapper方式),在架包中,cglib-2.2.2.jar就是实现这个功能的(基于子类的动态代理,动态代理我也会在其他的随笔中写一篇,也好复习一下动态代理),先建立mybatis中的主配置文件(文件名为mybatis-config.xml)
然后第二步编写mapper.xml和mapper(这里要保证在同一个包中并且要名字要相同,并且要遵循一个规范,比如mapper.java的方法名要对应mapper.xml的select的id名等等),我这里直接贴代码 jie
接下来是service(业务层了)业务层就比较简单了,定义接口和实现类,这里用了spring来管理来注入dao层的mapper.java的实现类
在service中还要有事务控制,这是为了保证你在更新数据时防止脏读和其他的一些不友好的异常操作,这里的事务控制使用了spring的事务控制
最后是表现层(web层),表现层使用了springmvc框架,
先秀一些讲一下springmvc的宏观框架的具体结构
首先springmvc有一个中央控制器,当收到浏览器发出的请求时,中央控制器会去调用处理映射器,在会去调用处理器适配器,在去调用handler(处理器),最后把从数据库的查询的数据放到到视图解析器中进行绚烂,最后中央控制器就会把数据转发
具体是实现是在web项目的注册前端控制器,并且加载了我们前边所写的几个spring的配置文件,
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/config/spring/applicationContext-*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- springmvc前端控制器-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- contextConfiLocation配置springmvc集在的配置文件(配置处理器,映射器) -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/spring/springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
然后编写处理适配器和视图解析器,我这里用了spring的注入的方式:
<!-- 可以扫描controller,service,controller -->
<context:component-scan base-package="cn.itcast.ssm.controller"></context:component-scan>
<!--配置处理适配器 -->
<!-- 注册映射器 -->
<mvc:annotation-driven></mvc:annotation-driven>
<!--视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
最后是编写controller的实现类
搭建完成了是一下体会吧,ssm框架中m是dao层的mybatis,两个ss中一个是springmvc,还有一个是spring自己,springmvc工作在web层(业务层),可能你会问spring呢其实spring编穿了三次,三层中都使用了spring,dao的sqlSessionFactoy是交给sprng容器的,service中使用了spring的注入,web层也使用了spring的注入,并且web把sevice的接口实现类交给了spring管理,并且web层注入了servicec层中的实现类!