一、SpringMVC 概述
- Spring 实现 Web 模块,简化 Web 开发;
- Spring 为展现层提供的基于 MVC 设计理念的优秀的 Web 框架,是目前最主流的 MVC 框架之一 。
- Spring3.0 后全面超越 Struts2,成为最优秀的 MVC 框架 。
- Spring MVC 通过一套 MVC 注解,让 POJO 成为处理请 求的控制器,而无须实现任何接口。
- 支持 REST 风格的 URL 请求。
- 采用了松散耦合可插拔组件结构,比其他 MVC 框架更具 扩展性和灵活性。
二、SpringMVC 入门
1、引入 jar 包
2、在 web.xml 中配置前端控制器 DispatcherServlet
<welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- SpringMVC 的思想是:有一个前端控制器拦截所有请求,并智能转发请求, 这个拦截器是一个 Servlet ,因此应该在 Web.xml 文件中进行配置拦截所有请求 --> <!-- The front controller of this Spring Web application, responsible for handling all application requests --> <servlet> <servlet-name>springDispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <!-- 指定配置文件位置 --> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <!-- 启动加载延迟时间,值越小,优先级越高,越优先创建 --> <load-on-startup>1</load-on-startup> </servlet> <!-- Map all requests to the DispatcherServlet for handling --> <servlet-mapping> <servlet-name>springDispatcherServlet</servlet-name> <!-- / 拦截所有 ,拦截所有请求,不拦截jsp ,/* 会拦截 *。jsp,页面无需拦截,否正无法显示页面 --> <url-pattern>/</url-pattern> </servlet-mapping>
3、加入 SpringMVC 配置文件
<!-- 扫描所有包 --> <context:component-scan base-package="org.wdh01"></context:component-scan> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"></property> <property name="suffix" value=".jsp"></property> </bean>
4、编写处理请求的处理器,并标识为处理器
@Controller public class FirstController { /** * 配置处理请求地址 * @return */ @RequestMapping("/hello") public String firstController() { System.out.println(" 请求收到了,正在处理。。。。"); return "success"; } }
5、编写视图
ogin.jsp 添加按钮
<a href="helloworld">helloworld SpringMvc</a>
/WEB-INF/pages/ 创建 响应页面
<h3>Success Page</h3>
6、运行效果
7、运行流程
/** * SpringMvc HelloWorld 运行流程 * 1、客户发送请求:http://localhost:8080/1springmvc_helloworld/hello * 2、来到 tomcat 服务器 * 3、前端控制器 springDispatcherServlet 获取请求 * 4、@RequestMapping 标注放的请求地址与获取的请求地址进行匹配,决定使用具体的方法 * 5、前端控制器找到目标处理类和目标方法并执行 * 6、执行完目标方法获取返回值 * 6、视图解析器拿到返回值拼 * 7、视图解析器通过地址转发响应页面 * /