1:spring mvc 概述

依然范特西╮ 提交于 2019-11-27 17:32:21
  1. 什么是mvc

  2. 什么是spring mvc

           Spring MVC 是一种基于 Java 的实现了 Web MVC 设计模式的请求驱动类型的轻量级 Web 框架, 即使用了MVC 架构模式的思想,将 web 层进行职责解耦, 基于请求驱动指的就是使用请求-响应模型, 框架的目的就是帮助我们简化开发, Spring Web MVC 也是要简化我们日常 Web 开发的。

  3. spring mvc能做什么

    ▶ 进行更简洁的 Web 层的开发;

    ▶ 天生与 Spring 框架集成(如 IoC 容器、 AOP 等);

    ▶ 提供强大的约定大于配置的契约式编程支持;

    ▶ 能简单的进行 Web 层的单元测试;提供强大的约定大于配置的契约式编程支持;

    ▶ 能简单的进行 Web 层的单元测试;

    ▶ 支持灵活的 URL 到页面控制器的映射;

    ▶ 非常容易与其他视图技术集成,如 Velocity、FreeMarker 等等, 因为模型数据不放在特定的 API 里,而是放在一个Model 里(Map 数据结构实现, 因此很容易被其他框架使用);

    ▶ 非常灵活的数据验证、 格式化和数据绑定机制, 能使用任何对象进行数据绑定, 不必实现特定框架的 API;提供一套强大的 JSP 标签库, 简化 JSP 开发;
    ▶ 支持灵活的本地化、 主题等解析;
    ▶ 更加简单的异常处理;
    ▶ 对静态资源的支持;
    ▶ 支持 Restful 风格。

  4. spring mvc有哪些东西 

    1. ▶ DispatcherServlet: 前端控制器
      ▶ HandlerMapping: 将请求映射到处理器
      ▶ HandlerAdapter: 把处理器包装为适配器, 用来支持多种类型的处理器
      ▶ View Resolver: 视图解析器
      ▶ Controller接口: 页面控制器/动作/处理器
      ▶ LocalResolver: 本地化解析, 因为Spring支持国际化,因此LocalResolver解析客户端的Locale信息从而方便
      进行国际化
      ▶ ThemeResovler: 主题解析, 通过它来实现一个页面多套风格, 即常见的类似于软件皮肤效果

      ▶ MultipartResolver:文件上传解析, 用于支持文件上传
      ▶ HandlerExceptionResolver: 解析并处理异
      ▶ RequestToViewNameTranslator: 当处理器没有返回逻辑视图名等相关信息时,自动将请求URL映射为逻辑
      视图名
      ▶ FlashMapManager: 用于管理FlashMap的策略接口,FlashMap用于存储一个请求的输出, 当进入另一个请求时作为该请求的输入, 通常用于重定向场景

      spring mvc 处理流程

            spring mvc 开发步骤

            ▶ DispatcherServlet 在 web.xml 中的部署描述, 从而拦截请求到 Spring MVC
            ▶ 配置HandlerMapping, 从而将请求映射到处理器
            ▶ 配置HandlerAdapter, 从而支持多种类型的处理器
            ▶ 配置ViewResolver, 从而将逻辑视图名解析为具体视图技术
            ▶ 配置处理器(页面控制器), 从而进行功能处理

  5. spring mvc的优势

      1、清晰的角色划分: 前端控制(DispatcherServlet)、请求到处理器映射(HandlerMapping)、 处理器适配器(HandlerAdapter)、 视图解析器(ViewResolver)、处理器或页面控制器(Controller)、 验证器(Validator)、 命令对象(Command 请求参数绑定到的对象就叫命令对象)、表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)。
      2、 分工明确, 而且扩展点相当灵活, 可以很容易扩展,虽然几乎不需要;
      3、 由于命令对象就是一个 POJO, 无需继承框架特定API, 可以使用命令对象直接作为业务对象;
      4、 和 Spring 其他框架无缝集成,是其它 Web 框架所不具备的;
      5、 可适配, 通过 HandlerAdapter 可以支持任意的类作为处理器;
      6、 可定制性, HandlerMapping、 ViewResolver 等能够非常简单的定制;
      7、 功能强大的数据验证、 格式化、 绑定机制;
      8、 利用 Spring 提供的 Mock 对象能够非常简单的进行Web 层单元测试;
      9、 本地化、 主题的解析的支持, 使我们更容易进行国际化和主题的切换。
      10、 强大的 JSP 标签库, 使 JSP 编写更容易。

  6. spring mvc 的第一个程序

            1.在web.xml下面配置DispatcherServlet

    <servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<!-- 启动优先级 -->
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<!-- /标示前台所有url请求都会被  DispatcherServlet 拦截-->
		<url-pattern>/</url-pattern>
	</servlet-mapping>

        <!-- 针对Post方式的请求进行编码的设置 -->
	<filter>
		<filter-name>CharacterEncodingFilter</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>
	</filter>
	
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

2.在/WEB-INF/springmvc-servlet.xml中配置 HandlerMapping 和 HandlerAdapter 和 ViewResolver

      <!-- 配置HandlerMapping   默认配置,可省略 -->
      <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
	  <!-- 配置HandlerAdapter 默认配置,可省略 -->
      <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
      
      <!-- 配置ViewResolver-->
      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      	<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
      	<!-- 第一个斜杠/不能省略 -->
      	<property name="prefix" value="/pages/"></property>
      	<property name="suffix" value=".jsp"></property>
      </bean> 
      <bean class="com.hejie.controller.HelloWorldController"></bean>

3.最后编写controller即可

@Controller
public class HelloWorldController {
		
	@RequestMapping (value="/hello")
	public Model helloWorld (HttpServletRequest request,
			HttpServletResponse response,Model model) {
		//获取前端传递的值
		String name = request.getParameter("name");
		System.out.println("name==============="+name);
		model.addAttribute("name", name);
		return model;
	}
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!