Spring MVC入门配置

1. Spring MVC 介绍

Spring MVCSpring框架中的一个子项目,为Web应用程序开发提供MVC模式的支持。Spring MVC的功能与Struts2框架相似,可以把Java Web程序员从繁复的Serlvet API中解放出来;与Struts2不同的是,尤其在Spring 3.1之后,Spring MVC广泛采用了规范优于配置convention-over-configuration)的设计思想,因此配置信息大大减少,灵活性也有很大的提升。

2.Spring MVC的特点

  • Controller为中心完成对系统流程的控制
  • 从请求中搜集数据
  • 对传入的参数进行验证
  • 将结果返回给视图
  • 针对不同的视图提供不同的解决方法
  • 针对jsp视图技术提供标签库
  • 拦截器
  • 上传文件

 

3.MVC架构的核心类和原理

  • DispatchServlet:中央控制器,把请求转发给具体的控制器类
  • Controller: 具体的控制器类
  • HandlerMapping:映射处理器,负责映射中央处理器到具体控制器类的策略
  • ModelAndView:服务层返回的数据层和视图层的封装类
  • ViewResolver:视图解析器,解析具体的视图
  • Inteceptors:拦截器

下图是Spring MVC核心组件结构和执行流程。

 

 

3. 搭建Spring MVC应用程序

3.1 导入Spring MVC相关的jar

1)手工导入则需要以下内容:

3.2 配置核心控制器-DispatcherServlet

web.xml中配置Spring MVC核心控制器:

<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-pattern>/</url-pattern>

 </servlet-mapping>

 

3.3 定义Spring MVC配置文件

Spring MVC配置文件就是一份常规的Spring bean配置文件,只是引入了spring-mvc的命名空间(见下面配置的蓝色字部份)。

<?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"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc.xsd

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd">

 

   <!-- 视图解析器 -->

<bean  class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="viewClass"

value="org.springframework.web.servlet.view.JstlView" />

<!-- 前缀:从根目录到视图文件夹 -->

<property name="prefix" value="/WEB-INF/views/" />

<!--视图文件的后缀名 -->

<property name="suffix" value=".jsp" />  

</bean>

 

</beans>

 

3.4src中定义一个控制器类HomeController继承抽象类AbstractController

@Override

protected ModelAndView handleRequestInternal(HttpServletRequest arg0,

HttpServletResponse arg1) throws Exception {

 

System.out.println("hello,spring mvc...");

ModelAndView mv=new ModelAndView("index");   //index:代表从前缀到后缀之间的名字

//如果请求存放在admin下的index.jsp则视图名字为"admin/index"

return mv;

}

3.5springmvc-servlet中配置controller

<!-- 默认的映射处理器 解析Controller-->

<bean id="home" name="/hello" class="com.demo.springmvc.HomeController"/>

其中:name=”/hello”代表在地址栏中请求的url

 

3.6发布并运行http://localhost:8080/mvchello/hello

注意:在这里并没有配置映射处理器,使用的是默认的映射处理器,可以不配置org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping

 

还有其他的一些映射处理器比如: org.springframework.web.servlet.handler.SimpleUrlHandlerMapping

 

在配置文件springmvc-servlet中添加如下配置,测试多个映射处理器的工作

<!-- 默认的映射处理器 -->

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

<!-- 简单的url映射处理器 -->

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

<property name="mappings">

<props>

<prop key="/hello1">homeController</prop>

</props>

</property>

</bean>

当使用ttp://localhost:8080/mvchello/hello1url访问时,使用的是简单的url映射处理器

原文地址:https://www.cnblogs.com/yang5201314/p/5393307.html