1:spring mvc 概述

  1. 什么是mvc

  2. 什么是spring mvc

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

  3. spring mvc能作什么

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

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

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

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

    ▶ 能简单的进行 Web 层的单元测试;设计模式

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

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

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

  4. spring mvc有哪些东西 

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

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

      spring mvc 处理流程

            spring mvc 开发步骤

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

  5. spring mvc的优点

      一、清晰的角色划分: 前端控制(DispatcherServlet)、请求处处理器映射(HandlerMapping)、 处理器适配器(HandlerAdapter)、 视图解析器(ViewResolver)、处理器或页面控制器(Controller)、 验证器(Validator)、 命令对象(Command 请求参数绑定到的对象就叫命令对象)、表单对象(Form Object 提供给表单展现和提交到的对象就叫表单对象)。
      二、 分工明确, 并且扩展点至关灵活, 能够很容易扩展,虽然几乎不须要;
      三、 因为命令对象就是一个 POJO, 无需继承框架特定API, 可使用命令对象直接做为业务对象;
      四、 和 Spring 其余框架无缝集成,是其它 Web 框架所不具有的;
      五、 可适配, 经过 HandlerAdapter 能够支持任意的类做为处理器;
      六、 可定制性, HandlerMapping、 ViewResolver 等可以很是简单的定制;
      七、 功能强大的数据验证、 格式化、 绑定机制;
      八、 利用 Spring 提供的 Mock 对象可以很是简单的进行Web 层单元测试;
      九、 本地化、 主题的解析的支持, 使咱们更容易进行国际化和主题的切换。
      十、 强大的 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;
	}
}
相关文章
相关标签/搜索