简介:
用来简化基于MVC架构的web应用程序开发的框架。
SpringMVC是一个spring中的一个模块。
常规mvc
Servlet的作用:
接收请求,根据请求调结果,根据结果调视图。
Spring MVC就是将servlet中东西写在配置文件中。其中内容为请求路径---模型 处理结果---视图。
五大组件:
DispatcherServlet前端控制器:客户端传入消息进入控制器
HandlerMapping映射处理器 :为前端控制器提供参考
请求路径---模型的对应关系
Controller处理器 :被控制器依据HandlerMapping调用处理相应的Controller。
将处理结果封装成一个ModelAndView对象返回给前端控制器
ModelAndView:处理结果和视图名 提供字符串给前端
ViewResolver视图解析器:为前端提供视图解析功能,将处理结果和视图名称对应。
视图解析器将提交的字符串视图名解析称为一个jsp名,让前端正确调用正确的jsp。也可以使用其他类型的视图文件。
freemarker velocity等
前端控制器在web.xml中配置
两个配置解析器在springmvc.xml中配置。(HandlerMappings ViewResovler)
两个有关Spring的重要问题:
Spring mvc 和Struts2的区别:
SpringMVC的入口是Servlet Strut2是Filter。
SpringMVC相对于Struts2快一点,SpringMVC是基于方法设,Strut2是基于类,每次发一次请求都会实例一个Action。
SpringMVC使用更加简洁,开发效率高。支持jsr303,处理ajax请求更方便。
Strut2的ognl表达式,还有标签库和值栈等使性能效率降低产生漏洞。
拦截器思想为Strut2的精华部分,action线程安全。
Spring MVC的请求流程??
1Spring把所有请求都交给DispatcherServlet,它会委托应用系统的其他模块负责对请求做真正的处理工作;
2DispatcherServlet查询一个或者多个HandlerMappings,找到处理请求相应的Controller。
3DispatcherServlet将请求发送到Controller
4Controller进行逻辑处理后,通过ModelAndView返回一个视图名称和结果。
5DispatcherServlet通过查询一个或多个ViewResovler后依据返回的字符串找到相应的视图页面名。
6前端处理器将相应的视图对象渲染后返回请求客户端。
编程步骤:
我们以通过在地址栏输入信息,通过程序指向指定的jsp页面显示简单的信息。
1,导包 Spring-webmvc
2,配置文件
创建spring-mvc.xml文件,创建在webContent下
3,配置DispatcherServlet前端控制器。(web.xml)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>8_8Spring MVC</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
4,配置模型组件(处理器Controller)
Controller负责执行具体的业务处理,可调用dao等组件,编写时需要实现Controller接口及约定方法
public class HelloController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
System.out.println("handleRequest()执行");
/**
* ModelAndView有两个常用构造器
* ModelAndView(String viewName)
* ModelAndView(String viewName,Map data)
* 视图名,处理结果
*/
return new ModelAndView("hello");
}
}
5,编写jsp视图模型
新建jsp文件
6,配置HandlerMapping和ViewResolver两个配置器。
HandlerMapping配置:
<!-- 配置HandlerMapping -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello.do">HelloController</prop>
</props>
</property>
</bean>
<bean id="HelloController" class="com.SpringMVC.controller.HelloController"></bean>
ViewResolver视图解析器:
InternalResourceViewResovler为ViewResovler接口的实现类
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp"></property>
<property name="suffix" value=".jsp"></property>
</bean>
使用两个前缀后缀方法将视图解析器进行拼接。
至此程序编写完成。
测试:
在输入框输入以hello.do后缀输入地址,hello.do信息通过程序的SpringMVC框架模式进行运作,最终指向hello.jsp。