-
什么是mvc
-
什么是spring mvc
Spring MVC 是一种基于 Java 的实现了 Web MVC 设计模式的请求驱动类型的轻量级 Web 框架, 即使用了MVC 架构模式的思想,将 web 层进行职责解耦, 基于请求驱动指的就是使用请求-响应模型, 框架的目的就是帮助我们简化开发, Spring Web MVC 也是要简化我们日常 Web 开发的。
-
spring mvc能做什么
▶ 进行更简洁的 Web 层的开发;
▶ 天生与 Spring 框架集成(如 IoC 容器、 AOP 等);
▶ 提供强大的约定大于配置的契约式编程支持;
▶ 能简单的进行 Web 层的单元测试;提供强大的约定大于配置的契约式编程支持;
▶ 能简单的进行 Web 层的单元测试;
▶ 支持灵活的 URL 到页面控制器的映射;
▶ 非常容易与其他视图技术集成,如 Velocity、FreeMarker 等等, 因为模型数据不放在特定的 API 里,而是放在一个Model 里(Map 数据结构实现, 因此很容易被其他框架使用);
▶ 非常灵活的数据验证、 格式化和数据绑定机制, 能使用任何对象进行数据绑定, 不必实现特定框架的 API;提供一套强大的 JSP 标签库, 简化 JSP 开发;
▶ 支持灵活的本地化、 主题等解析;
▶ 更加简单的异常处理;
▶ 对静态资源的支持;
▶ 支持 Restful 风格。 -
spring mvc有哪些东西
-
▶ 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, 从而将逻辑视图名解析为具体视图技术
▶ 配置处理器(页面控制器), 从而进行功能处理 -
-
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 编写更容易。 -
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;
}
}
来源:oschina
链接:https://my.oschina.net/u/2248484/blog/1553036