使用注解开发SpringMVC程序

  1. 首先新建一个普通项目,然后添加web框架
    1. 注意:这里要在项目结构中添加lib依赖,否则会报空指针异常

    2. 在pom中添加资源过滤机制,保证xml文件正常导出

      <build>
            <resources>
                <resource>
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.properties</include>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>
      
    3. 为了防止字符序列化无效问题,在pom中添加
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
      
  2. 配置DispatcherServlet
    <!--1.注册DispatcherServlet-->
       <servlet>
           <servlet-name>springmvc</servlet-name>
           <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
           <!--关联一个springmvc的配置文件:【servlet-name】-servlet.xml-->
           <init-param>
               <param-name>contextConfigLocation</param-name>
               <param-value>classpath:springmvc-servlet.xml</param-value>
           </init-param>
           <!--启动级别-1-->
           <load-on-startup>1</load-on-startup>
       </servlet>
    
       <!--/ 匹配所有的请求;(不包括.jsp)-->
       <!--/* 匹配所有的请求;(包括.jsp)-->
       <servlet-mapping>
           <servlet-name>springmvc</servlet-name>
           <url-pattern>/</url-pattern>
       </servlet-mapping>
    
  3. 根据DispatcherServlet去编写对应的xml文件
    1. 首先加入包扫描和对应约束依赖
      http://www.springframework.org/schema/context
      https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"
      xmlns:context="http://www.springframework.org/schema/context"
      <!--自动扫描包,让指定包下的注解生效,由IOC容器统一管理-->
      <context:component-scan base-package="com.zhaox.controller"/>
      
    2. 其次让MVC不处理静态资源的配置
      <!--让SpringMVC不处理静态资源-->
      <mvc:default-servlet-handler/>
      
    3. 然后加入视图映射和适配器
      <!--处理器映射器和处理器适配器不用再配置,直接注解解决-->
      <mvc:annotation-driven/>
      
    4. 最后加入视图解析器
      <!--视图解析器:DispatcherServlet给他的ModelAndView-->
      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver">
        <!--前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--后缀-->
        <property name="suffix" value=".jsp"/>
      </bean>
      
  4. 接下来根据包扫描去写对应的controller
    @Controller
    public class HelloController {
       @RequestMapping("/hello")
       public String hello(Model model){
           //封装数据
           model.addAttribute("msg","hello springMVC");
           return "hello";//会被视图解析器处理
       }
    }
    
    1. 这里用两个注解:
    • @Controller:这个注解绑定这个类为Controller
    • @RequestMapping:将类或者方法映射一个地址
      1. 方法内部通过model传递参数,通过返回值确定视图的名字
    • RequestMapping的参数是由用户在地址栏输入的参数
    • 返回值是由mvc拼接的jsp文件名

醉后不知天在水,满船清梦压星河