需求描述:使用SpringMVC框架完成一个入门案例,在前端浏览器页面点击一个超链接,跳转到指定页面。
一、环境搭建
1.在web.xml文件中配置前端控制器
<!--配置核心控制器-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--关联SpringMVC配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--定义这个前端控制器的加载时间,要一部署项目的时候就创建控制器-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2.配置SpringMVC.xml
<!--开启注解扫描的支持-->
<context:component-scan base-package="com.gzgs"></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>
二、编写控制器
1.配置controller控制器
/**
* 控制器
*/
@Controller
public class HelloController {
@RequestMapping("/hello")
public String sayHello(){
System.out.println("入门成功");
return "success";
}
}
2.定义前端index页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>SpringMVC入门</h3>
<a href="/hello">我要入门</a>
</body>
</html>
3.定义跳转的success.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h3>入门成功!!!</h3>
</body>
</html>
三、测试
1.启动项目,在浏览器访问localhost:8080
2.点击超链接
四、分析
整个SpringMVC的处理流程
以上就是处理用户请求的整个流程图!!
总而言之,大概的流程就是:
- 服务器启动,应用被加载。 读取到 web.xml 中的配置创建 spring 容器并且初始化容器中的对 象。从入门案例中可以看到的是: HelloController 和 InternalResourceViewResolver,但是远不止这些。
- 浏览器发送请求,被 DispatherServlet 捕获,该 Servlet 并不处理请求,而是把请求转发出去。转发的路径是根据请求 URL,匹配@RequestMapping 中的内容。
- 匹配到了后,执行对应方法。该方法有一个返回值。
- 根据方法的返回值,借助 InternalResourceViewResolver 找到对应的结果视图。
- 渲染结果视图,响应浏览器。