06SpringMVC入门

SpringMVC

SpringMVC是一种基于Java的实现MVC设计模式的请求驱动类型的轻量级web框架,属于SpringFrameWork的后续产品,已经融合在Spring Web Flow中。Spring3.0已经优于Struts2,通过一套注解,让一个类处理请求的控制器,而无需实现任何servlet接口。同时还支持RESTful编程风格的请求。

快速入门

servlet编写麻烦,可以分为两部分,共有和特有代码,共有代码可以使用springMVC的前端控制器代替,特有代码编写POJO。所以,springMVC开发步骤

  1. 导入坐标(spring-webmvc)

  2. 配置servlet(共有代码,SpringMVC核心控制器DispathcerServlet)

  3. 编写Controller类(POJO)和视图View(jsp页面)

  4. 将Controller使用注解配置到Spring容器中(@Component, @Controller)

  5. 配置spring-mvc.xml配置文件(填写组件扫描)

  6. 客户端发起请求进行测试

具体代码:

  1. 导入spring-webmvc spring-context坐标、tomcat插件

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.2.RELEASE</version>
    </dependency>
    
    <plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat7-maven-plugin</artifactId>
      <version>2.2</version>
      <configuration>
        <port>8080</port>
        <uriEncoding>UTF-8</uriEncoding>
      </configuration>
    </plugin>
    
  2. 在web.xml中配置springMVC前端控制器DispathcerServlet

    <!--  配置springMVC前端控制器-->
      <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--    第5步时的代码:加载配置文件-->
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
    <!--    服务器启动时加载-->
        <load-on-startup>1</load-on-startup>
      </servlet>
      
      <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <!--所有资源都经过这里-->
        <url-pattern>/</url-pattern>
      </servlet-mapping>
    
  3. 编写Controller和视图(sucess.jsp 略)

    @Controller
    public class UserController {
        @RequestMapping("/test")
        public String save() {
            System.out.println("userController");
            return "success.jsp";
        }
    }
    
  4. 给Controller添加注解(其中RequesMapping表示业务方法的映射地址)

  5. 新建spring-mvc.xml配置文件,添加组件扫描(并将配置文件在web.xml中配置启动时加载)

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
            https://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context
            https://www.springframework.org/schema/context/spring-context.xsd" >
    <!--    Controller组件扫描-->
        <context:component-scan base-package="com.controller"/>
    </beans> 
    
  6. 启动服务器,并用浏览器访问测试tomcat7:run

注解解析

@RequestMapping("xxx")

作用:注解在类或方法上,用于建立请求URL和业务Controller之间的对象关系。

参数:

  • value:请求路径,一个参数时默认
  • method:请求方式,默认GET
  • params:指定限定请求参数。如params={"username"},请求时必须有username参数

配置文件

Controller中返回的地址包含默认的前缀:

  • 默认前缀是forward: 转发(地址不改变)
  • 也可以改成redirect: 重定向(地址改变)

还可以自定义内部资源解析器,如下。这样Controller在返回时,不用写复杂的路径。(但是不能重定向)

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/jsp"/>
    <property name="suffix" value=".jsp"/>
</bean>

组件解析

SpringMVC的相关组件:

  • 前端控制器:DispatcherServlet, 调用其他组件
  • 处理器映射器:HandlerMapping, 地址解析,上面前后缀等就是它处理的。
  • 处理器适配器:HandlerAdapter, 调用处理器
  • 处理器:Handler, 可以理解为我们定义的Controller, 最后返回ModelAndView
  • 视图解析器:ViewResolver, 解析View
  • 视图:View
原文地址:https://www.cnblogs.com/mingriyingying/p/13639530.html