zoukankan      html  css  js  c++  java
  • 13.SpringMVC和Spring集成(一) && 14.SpringMVC和Spring集成(二)

    1.概念

    Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,Spring致力于J2EE应用的各层的解决方案,Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

    MVC——Spring的作用是整合,但不仅仅限于整合,Spring 框架可以被看做是一个企业解决方案级别的框架。

    客户端发送请求,服务器控制器(由DispatcherServlet实现的)完成请求的转发,控制器调用一个用于映射的类HandlerMapping,该类用于将请求映射到对应的处理器来处理请求。HandlerMapping 将请求映射到对应的处理器Controller(相当于Action)在Spring 当中如果写一些处理器组件,一般实现Controller 接口,在Controller 中就可以调用一些Service 或DAO 来进行数据操作 ModelAndView 用于存放从DAO 中取出的数据,还可以存放响应视图的一些数据。 如果想将处理结果返回给用户,那么在Spring 框架中还提供一个视图组件ViewResolver,该组件根据Controller 返回的标示,找到对应的视图,将响应response 返回给用户。

    Spring MVC 分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进行定制。

    2.环境搭建详解

    2.1引入相应的jar包

    pringMVC和spring包的结构发生了很大的变化,各个包都分开了,灵活,要求使用者更加深入的学习使用,当我们引入包的时候,以少为原则,少的话可以根据报错来找到相应的包,如果过多的话,包会报错异常的混乱,不容易分辨;sprinMVC和spring本身就是一家的,所以引入的包来说基本上和spring需要的架构包是一致的.

    2.2 web.xml     一个项目的全局配置点在web.xml,看一个项目用了哪些框架,主要看web.xml里面加了哪些入口监听

    配置文件的对应入口和启动顺序

    注解:springMVC是通过dispastservlet来监听的,spring使用linstener监听的,struts2是使用filter来监听的他们之间的启动顺序,web容器有又一个即,

    第一:context-param

    第二:Listerer

    第三:Filter

    第四:servlet

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
      <display-name>springMVC1</display-name>
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
      
      <context-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath*:config/springAnnotation-servlet.xml</param-value>
      </context-param>
      
    <!--配置spring启动listener入口 -->  
      <listener>
           <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>
    <!-- 配置springMVC启动DispatcherServlete入口 -->  
      <servlet>
          <servlet-name>springMVC</servlet-name>
          <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
              <init-param>
                  <param-name>contextConfigLocation</param-name>
                  <param-value>classpath*:config/springAnnotation-servlet.xml</param-value>
              </init-param> 
           <load-on-startup>1</load-on-startup>
      </servlet>
      
         <filter>
            <filter-name>encodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
            <init-param>
                <param-name>forceEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
        <!-- encoding filter for jsp page -->
        <filter-mapping>
            <filter-name>encodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
          <servlet-mapping>
              <servlet-name>springMVC</servlet-name>
              <url-pattern>/</url-pattern>
          </servlet-mapping>
    </web-app>
    web.xml

    2.3 springAnnotation-servlet.xml   注解文件

    springAnnotation-servlet.xml

    2.4  springAnnotation-core.xml     通过bean注入要调用的接口实现类

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd" [
    <!ENTITY contextInclude SYSTEM "org/springframework/web/context/WEB-INF/contextInclude.xml">
    ]>
    
    <beans>
        <bean id="springManager" class="com.tgb.web.controller.annotation.SpringManager"></bean>
    </beans>
    springAnnotation-core.xml

    2.4.1  ISpring接口

    package controller.annotation;
    
    public interface ISpring {
    
        public String get();
    }
    ISpring.java

    2.4.2  ISpring实现类

    package controller.annotation;
    
    public class SpringManager implements ISpring {
    
        public String get() {
            System.out.println("------I am springManager----");
            
            return "I am getMethod";
        }
    
    }
    SpringManager.java

    2.4.3 SpringController类

    package controller.annotation;
    import javax.annotation.Resource;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    @Controller
    public class SpringController {
    //这样替代了在xml配置属性的过程
        @Resource(name="springManager")
        private ISpring springManager;//springManager的注入
        
        @RequestMapping("/spring/get")
        public String get(){
            System.out.println(springManager.get());
            return "/success";
        }
    }
    SpringController.java

    遇到的错误:

    错误1:

    严重: Context initialization failed
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'springController': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'springManager' is defined

    看一下代码不知道错在哪里,运行不出结果,可是核心的xml对bean有定义啊,求看到的大神指教

  • 相关阅读:
    MongoDB理解
    jQuery+Ajax+PHP实现异步分页数据显示
    PHP设计模式四:适配器模式
    PHP设计模式三:原型设计模式
    Event Managers
    NetAdvantage
    英语
    CA1060
    DateTime和DateTime2
    宿主进程 vshost.exe
  • 原文地址:https://www.cnblogs.com/chenxiaomeng/p/5799796.html
Copyright © 2011-2022 走看看