SpringMVC
Spring MVC是Spring为展现层提供的基于MVC设计理念的优秀Web框架,是目前最主流的MVC框架之一。支持REST风格的URL请求。
Spring框架结构图:
简单使用SpringMVC:HelloWorld
1.创建普通的Maven项目,然后右键项目 Add Framework Support中添加Web Applicable 4.0版本。
2.在WEB-INF的web.xml中配置DispatcherServlet
<servlet>
<!--DispatcherServlet是一个servlet,拦截所有请求-->
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--contextConfigLocation:指定SpringMVC配置文件路径位置
不指定,默认在WEB-INF目录下会将SpringMVC配置名称命名为"'servlet-name'-servlet"。 比如:DispatcherServlet-servlet.xml
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/springMVC.xml</param-value>
</init-param>
<!--load-on-startup:服务器启动的时候创建对象,值越小,越优先创建对象-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<!-- /*与/都是拦截所有请求。
/:会拦截所有请求但不会拦截*.jsp能保证jsp页面正常访问.
/*:范围更大,*.jsp也会拦截,一旦拦截jsp页面就不会显示.
-->
<url-pattern>/</url-pattern>
</servlet-mapping>
3.配置SpringMVC.xml文件:一般在WEB-INF目录下。
<?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"
xsi:schemaLocation="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
">
<!--开启组件扫描-->
<context:component-scan base-package="com.gz.controller"></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>
</beans>
4.创建一个入口;index.jsp
<a href="hello">点击请求Hello</a>
5.写一个处理请求的处理器,并标识处理器:
/**
* 声明bean对象,为一个控制器组件
* @author Gz
*/
@Controller
public class HelloMvc {
/**
*映射请求的名称:1.使用@RequestMapping注解来映射请求的URL,
* 2.返回值会通过视图解析器解析为实际的物理视图, 对于
* InternalResourceViewResolver 视图解析器会做出一下请求
* 2.1 通过 prefix + returnVal + suffix 这样的方式得到实际的物理视图, 然后做转发操作.
* 2.2 /WEB-INF/views/success.jsp
* @return
*/
@RequestMapping("/hello")
public String firstMyMvc(){
System.out.println("运行成功");
//视图解析器自动拼接
return "success";
}
}
6.编写视图:success.jsp
<h2>成功</h2>
HelloWorld深度解析
1.请求流程图解:
- @RequestMapping注解可以使用在类上与方法上:
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
3.流程分析图:
基本步骤:
- 客户端请求提交到DispatcherServlet
- 由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
- DispatcherServlet将请求提交到Controller(也称为Handler)
- Controller调用业务逻辑处理后,返回ModelAndView
- DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
- 视图负责将结果显示到客户端