概念 :
SpringMVC 是一个mvc 框架,通过实现mvc很好的把 数据、业务、展现分离
SpringMVC 的设计围绕着 Dispatcher Servlet 来展开的,由Dispatcher Servlet 负责将求求派发到特定的Handler请求处理过程
简单叙述一下Spring MVC 的请求处理过程。
如上图所示 ,客户端页面发送请求给 DispatcherServlet ,DispatcherServlet
因为只有一个servlet ,所以 由这个servlet 进行转发! 转发给一个映射。由hanldermapping进行判断!判断给具体哪个controller处理。controller 处理了请求之后 通过视图解析器 ,返回给前端页面 一个 ModelandView 对象。
- 具体配置步骤
(1)
新建一个web 项目 导入相关jar包
commons-logging-1.1.1.jar
spring-aop-4.3.1.RELEASE.jar
spring-beans-4.3.1.RELEASE.jar
spring-context-4.3.1.RELEASE.jar
spring-core-4.3.1.RELEASE.jar
spring-expression-4.3.1.RELEASE.jar
spring-web-4.3.1.RELEASE.jar
spring-webmvc-4.3.1.RELEASE.jar
(2)
配置 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-pattern>*.do</url-pattern>
</servlet-mapping>
(3)
添加springmvc 的配置文件 默认的位置在 web-inf下面去添加
添加 名字为 [servlet-name]-servlet.xml 的文件 否则spring 无法找到这个文件
这个配置文件的头文件 在 api当中可以找到
<!-- 配置 hanldermapping -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<!-- 配置 视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
(4)
编写 java 类 实现 controller 借口
public class HelloWorld implements Controller{
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModelAndView mav = new ModelAndView();
//封装要显示到视图中的数据
mav.addObject("liu", "Hello World");
mav.setViewName("index");//这个目录要根据视图解析器的位置去判断
//因为我设置的视图解析器前缀是根目录 所以 我这样配置 就会在根目录下
//找到index.jsp 进行渲染
return mav;
}
}
相应的 在index.jsp内容中 加入
${liu} 的内容
(5)
刚刚已经配置了 DispatcherServlet 下来就是 配置 HandlerMapping –> 视图图渲染器 –> 配置请求处理器
完整的配置文件内容如下:
<?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:p="http://www.springframework.org/schema/p"
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">
<!-- 配置 hanldermapping -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<!-- 配置 视图解析器 -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- 因为我在 配置url partten 的时候写了 *.do 所以 最后 配置helleord.do -->
<bean name="/helloworld.do" class="com.liu.conroller.HelloWorld"></bean>
</beans>
(6)测试以及结果