Springmvc的执行流程
1.页面发送请求到前端控制器在web.xml中配置的servlet(DispatcherServlet);
2.由springmvc.xml中配置的映射器去寻找handler(按照注解的路径寻找)并将结果返回给前端控制器
3.前端控制器在调用适配器执行handeler , 并将处理的结果和逻辑路径返回给前端控制器
4.前端控制器将数据发送到视图解析器进行渲染 , 视图解析器将渲染后的视图发送回前端控制器 , 前台控制器将结果展示到页面
配置:
其中springmvc中<mvc:annotation-driven/>的标签 ;1映射器,寻找handler(处理着); 2适配器,执行handler
视图解析器:InternalResourceViewResolver内部资源视图解析器,将逻辑的访问路径转为服务器的实际访问路径
mybatis
<!-- 配置mybatis接口开发模式 -->使用JDK基于接口的动态代理的模式
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 配置扫描的包 -->
<property name="basePackage" value="cn.itcast.dao"></property>
<!-- 将sqlSessionFactory加入 -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
然后在service的实现类中使用@Service , 在属性上@Resource将mapper接口注入
SSM的全流程
ItemsController中
@RequestMapping("findAllItems")
//1.请求通过前端控制器dispatcherServlet调用映射器寻找handler,映射器通过这个路径寻找
public String findAllItems(Model model){
//2.将servcie注入调用service中的findAllItems方法
List<Items> itemsList = ItemsService.findAllItems();
//把集合放入到model中进行回显
model.addAttribute(itemsList);
return "itemsList";
}
ItemsServiceImpl中
public List<Items> findAllItems(){
//3.service中注入Mapper的接口调用其中查询所有订单的方法
List<Items> findAllItems = itemsMapper.findAllItems();
return findAllItems;
}
ItemsMapper中
/*
* 4.采用mybatis中接口开发 的方式
* 需要在applicationContext中配置映射扫描器配置类(MapperScannerConfigurer)
* 并需要遵守约定
* 1.接口和其的配置文件必须在同一个包下
* 2.他们的名字相同
* 3.接口的配置文件的nameSpace需要和接口的全限定名相同;便于生成接口的代理
*/
List<Items> findAllItems();
ItemsMapper.xml中
<!-- 5.在接口的映射文件中执行映射查询数据库的方法 -->
<select id="findAllItems" resultMap="BaseResultMap">
select * from items
</select>
ItemsController中
@RequestMapping("findAllItems")
//1.请求通过前端控制器dispatcherServlet调用映射器寻找handler,映射器通过这个路径寻找
public String findAllItems(Model model){
//2.将servcie注入调用service中的findAllItems方法
List<Items> itemsList = ItemsService.findAllItems();
//把集合放入到model中进行回显
model.addAttribute(itemsList);
//6.返回逻辑视图到内部资源视图解析器中拼接真正的访问jsp路径
return "itemsList";
}