admin管理员组

文章数量:1794759

SpringMvc介绍

SpringMvc介绍

一、这里对SpringMVC框架进行一个简单的介绍:

1.springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。 2.springmvc是一个基于mvc的web框架。 3.springmvc 表现层:方便前后端数据的传输 4.Spring MVC 拥有控制器,作用跟Servlet类似,接收外部请求,解析参数传给服务层 5.MVC是指,C控制层,M模块层,V显示层这样的设计理念,而SSM框架里面SPRING MVC本身就是MVC框架,作用是帮助(某种意义上也可以 理解为约束)

springmvc项目架构图 Springmvc架构原理解析
  • 发起请求到前端控制器(DispatcherServlet)
  • 前端控制器请求HandlerMapping查找 Handler,可以根据xml配置、注解进行查找
  • 处理器映射器HandlerMapping向前端控制器返回Handler
  • 前端控制器调用处理器适配器去执行Handler
  • 处理器适配器去执行Handler
  • Handler执行完成给适配器返回ModelAndView
  • 处理器适配器向前端控制器返回ModelAndView,ModelAndView是springmvc框架的一个底层对象,包括 Model和view
  • 前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图(jsp)
  • 视图解析器向前端控制器返回View
  • 前端控制器进行视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域
  • 前端控制器向用户响应结果  
  • 一、SpringMVC基础入门,创建一个HelloWorld程序
  • 首先,导入SpringMVC需要的jar包。 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!-- JSTL依赖 原因:org.springframework.web.servlet.view.JstlView在视图解析时需要这二个jar包--> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency>

  • 添加Web.xml配置文件中关于SpringMVC的配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="xmlns.jcp/xml/ns/javaee" xmlns:xsi="www.w3/2001/XMLSchema-instance" xsi:schemaLocation="xmlns.jcp/xml/ns/javaee xmlns.jcp/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <display-name>Archetype Created Web Application</display-name> <!-- Spring和web项目集成start --> <!-- spring上下文配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:applicationContext*.xml</param-value> </context-param> <!-- 读取Spring上下文的监听器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Spring和web项目集成end --> <!-- 防止Spring内存溢出监听器 --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!-- 中文乱码处理 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <!--web.xml 3.0的新特性,是否支持异步--> <async-supported>true</async-supported> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Spring MVC servlet --> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--此参数可以不配置,默认值为:/WEB-INF/springmvc-servlet.xml--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/spring-mvc.xml</param-value> </init-param> <!--表示容器启动时就加载该servlet--> <load-on-startup>1</load-on-startup> <!--web.xml 3.0的新特性,是否支持异步--> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>

  • 在WEB-INF目录下添加springmvc-servlet.xml配置文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="www.springframework/schema/beans" xmlns:xsi="www.w3/2001/XMLSchema-instance" xmlns:context="www.springframework/schema/context" xmlns:mvc="www.springframework/schema/mvc" xsi:schemaLocation="www.springframework/schema/beans www.springframework/schema/beans/spring-beans.xsd www.springframework/schema/context www.springframework/schema/context/spring-context-4.3.xsd www.springframework/schema/mvc www.springframework/schema/mvc/spring-mvc.xsd"> <!-- 通过context:component-scan元素扫描指定包下的控制器--> <!--1) 扫描com.zking.zf及子子孙孙包下的控制器(扫描范围过大,耗时)--> <!--<context:component-scan base-package="com.zking.zf"/>--> <!--1) use-dafault-filters="false"的情况下,根据表达式包含(include-filter)或排除(exclude-filter)指定包--> <context:component-scan base-package="com.zking" use-default-filters="false"> <!--<context:include-filter type="regex" expression=".+\\.controller\\..*"/>--> <!--<context:exclude-filter type="regex" expression=".+\\.controller2\\..*"/>--> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!--2) 此标签默认注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter --> <!--两个bean,这两个bean是spring MVC为@Controllers分发请求所必须的。并提供了数据绑定支持,--> <!--@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)--> <mvc:annotation-driven></mvc:annotation-driven> <!--3) ViewResolver --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- viewClass需要在pom中引入两个包:standard.jar and jstl.jar --> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> <!--4) 单独处理图片、样式、js等资源 --> <mvc:resources location="/static/" mapping="/static/**" cache-period="31536000"/> </beans>
  • 在WEB-INF文件夹下创建名为jsp的文件夹,用来存放jsp视图。创建一个hello.jsp,在body中添加“Hello World”。
  •  

     

    5.建立包及Controller,

     

    6.编写Controller代码  TestController

    @Controller public class TestController { @GetMapping("test") public String hello(String name){ System.out.println("controller name= "+name); return "redirect:/hello"; } @RequestMapping("hello") public String toHello(){ return "hello"; } }

    注: 示例中用到的注解:

    @Controller:该注解在springmvc中用于标记一个控制器,类似的注解还有@RestController,不同的是@RestController专门用于标记一个rest风格的接口,相当于@ResponseBody + @Controller合在一起的作用。

    @RequestMapping:该用于标记请求路径,在有些参考资料中也称之为服务端点。该注释可以用在方法上也可以用在类上。

    7.启动服务器,键入 localhost:8080/项目名/mvc/hello

    三、. 常用注解
    • @Controller:用于标识处理器类
    • @RestController注解相当于@ResponseBody + @Controller合在一起的作用
    • @RequestMapping:请求到处理器功能方法的映射规则,可定义到类和方法,常用参数:value、method
    • @RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定,常用参数:value、required、defaultValue, (required设置成false的参数类型必须是引用类型,因为基本数据类型是不能为null的)
    • @ModelAttribute:请求参数到命令对象的绑定。 可用@ModelAttribute标注方法参数,方法参数会被添加到Model对象中(作用:向视图层传数据) 可用@ModelAttribute标注一个非请求处理方法,此方法会在每次调用请求处理方法前被调用(作用:数据初始化) 可用@ModelAttribute标注方法,方法返回值会被添加到Model对象中(作用:向视图层传数据)
    • @RequestBody:用于目前比较流行的ajax开发的数据绑定(即提交数据的类型为json格式)

    本文标签: springmvc