SSM如何搭建--针对面试的回答

                                                 关于SSM框架整理

1.创建maven项目
           这是一个综合了spring+springmvc+mybatis的maven项目。
           (1) spring运用在:spring是管理bean生命周期轻量级的容器,创建对象实例和依赖注入都交给了spring容器来处理。我们不需要new对象和给对象赋值。

           (2)mybatis运用在:它是orm框架,对象关系映射.它把dao层分成了2部分,接口和xml。在接口里声明了所拥有的方法及其方法传递的参数,每个方法都在xml中对应id名相同的执行sql语句的操作。由于id不能重复所以导致接口内的方法也不能重载。在xml中可以编写各个方法对应的增删查改的操作外,还可以编写对象关系映射和动态sql语句。

          (3)springmvc运用在:如果没有MVC设计模式。程序间的各层之间依赖非常强,耦合度高。严重违背了高内聚低耦合的设计原则。而WebMVC将控制逻辑和功能处理,模型和视图进行了分离,降低耦合。


2.src/main/java.建包
  (1)controller  控制层
  (2)dto
  (3)mapper dao层用于执行sql语句
  (4)pojo      所有的java Bean
  (5)service  服务层
  (6)utils     工具层
  (7)intercepter

3.src/main/resources创建配置文件
 
   (1)myBatisConfig.xml主配置文件
             <!-- 配置MyBatis参数 -->

   (2)jdbc.properties连接数据库
             
   (3) applicationContext-spring-mvc.xml
            <!-- 扫描持久化层、服务层、控制层的包下的注解 -->
            <!-- 使@Controller注解和对应@RequestMapper注解生效 -->
            <!-- 视图解析器,主要解析访问的视图 -->
            <!-- 上传文件解析器 -->
            <!-- 开启对控制器类代理 -->
             <!-- 配置Shiro注解生效 -->

   (4)applicationContext-spring-mapper.xml
            <!-- 先导入属性文件 -->
            <!-- 配置数据库,数据源配置 C3p0 Driud(阿里巴巴) -->
            <!-- 配置会话工厂 -->
            <!-- 扫描Mapper文件和Mapper接口 -->

   (5)applicationContext-spring-service.xml
           <!-- 扫描service层注解 -->
           <!-- 配置Spring事务  AOP 实现,通过事务管理器管理事务 -->
           <!-- 通知 使用Spring内部的通知,引入tx命名空间引用事务管理器-->
           <!-- 顾问 = 切入点 + 通知 -->
  (6)applicationContext-spring-shiro.xml
          <!-- 定义hash凭证匹配器 散列 -->
          <!-- 自定义Realm -->
          <!-- 配置SercurityManager -->
          <!-- 过滤器Bean,用于过滤所有配置的请求地址,由shiro中过滤器来过滤 -->


4.src/main/webapp视图层
        静态资源和jsp页面   

       web.xml
        <!-- 添加前端控制器 一般会加载MVC相关的bean配置管理
       <!-- spring容器监听器,用于加载除了MVC之外的其他的     bean 比如: Log, Service, Dao, PropertiesLoader,
            DataSource Bean -->
       <!-- 编码过滤器 -->
       <!-- 设置true由servlet容器控制Shiro filter的生命周期 -->
 

5.pom.xml依赖库
    (1)依赖:
            持久化层:Mybatis   MySql  连接池

          服务层:Spring 事务管理器(spring-jdbc)声明式配置事务 分页处理 -mybatis中进行分页
                        控制层:springmvc处理   JSP相关  文件上传组件 Jackson Json处理    单元测试(junit)Shiro
                         测试:
    (2)插件:

6.控制层中的spring mvc的使用
       什么是MVC ?mvc在b/s下的应用:
            mode : dao和service等模型层+业务层+持久层,会导致JavaBean组件类庞大
            view :  jsp,html,ftl等
           controller : 控制器
 

   SpringMvc整个的执行流程:
1、发起请求到前端控制器(DispatcherServlet )
2、前端控制器请求HandlerMapping查找Handler(可以根据xml、注解进行查找)
3、处理器映射器HandlerMapping向前端控制器DispatcherServlet 返回Handler
4、前端控制器DispatcherServlet 调用处理器适配器HandlerAdapter 执行Handler
5、处理器适配器HandlerAdapter 执行Handler
6、Handler执行完给处理器适配器返回ModelAndView
7、处理器适配器向前端控制器返回ModelAndView (ModelAndView 是SpringMvc的底层对象 包括model和view)
8、前端控制器请求视图解析器去解析视图
根据逻辑视图名解析成真正的视图(jsp)
9、视图解析器向前端控制器返回view
10、前端控制器进行视图渲染
视图渲染将模型数据(模型数据在ModelAndView对象中)填充到request域
11、前端控制器向用户响应结果

   简洁版:

    (1)客户端发送请求到DispathcherServlet;最终调用doDispatch()方法
    (2)前端控制器调用处理器映射器查找Handler;调用getHandler()方法;也就是通过HandlerMapping来获取到HandlerExecutionChain;其中包含执行控制器Controller
    (3)通过HandlerExecutionChain调用处理器适配器【调用getHandlerAdatpter()方法】来获取HandlerAdatpter
    (4)再通过HandlerAdatpter来调用invoke方法,来调用控制器方法,会得到一个ModelAndView对象
    (5)解析视图,通过视图解析器解析视图,调用ViewResolver方法生成View对象,View对象中包含要渲染视图的地址
    (6)渲染视图: 把模型中数据添加到请求作用域,跳转到视图页面【用View调用render()方法】;最后响应给客户端

   最简化:

   首先请求发送request请求到C(control 接收用户请求响应用户) 然后控制器到M模型(pojo、action、service、dao)层处理 处理结果完了返回控制器 控制器要经过视图渲染  最后返回终端(response)。




 

猜你喜欢

转载自blog.csdn.net/qq_35316228/article/details/84034644