什么是SpringMVC?
SpringMVC是Spring家族的一员,Spring是将现在开发中流行的组件进行组合而成的一个框架!它用在基于MVC的表现层开发,类似于struts2框架
为什么要使用SpringMVC?
我们在之前已经学过了Struts2这么一个基于MVC的框架….那么我们已经学会了Struts2,为啥要要学习SpringMVC呢???
下面我们来看一下Struts2不足之处:
- 有漏洞【详细可以去搜索】
- 运行速度较慢【比SpringMVC要慢】
- 配置的内容较多【需要使用Struts.xml文件】
- 比较重量级
基于这么一些原因,并且业内现在SpringMVC已经逐渐把Struts2给替代了…因此我们学习SpringMVC一方面能够让我们跟上业界的潮流框架,一方面SpringMVC确实是非常好用!
可以这么说,Struts2能做的东西,SpringMVC也能够做….
回顾Struts2开发
在Struts2中,我们的开发特点是这样的:
- Action类继承着ActionSupport类【如果要使用Struts2提供的额外功能,就要继承它】
- Action业务方法总是返回一个字符串,再由Struts2内部通过我们手写的Struts.xml配置文件去跳转到对应的view
- Action类是多例的,接收Web传递过来的参数需要使用实例变量来记住,通常我们都会写上set和get方法
Struts2的工作流程
- Struts2接收到request请求
- 将请求转向我们的过滤分批器进行过滤
- 读取Struts2对应的配置文件
- 经过默认的拦截器之后创建对应的Action【多例】
- 执行完业务方法就返回给response对象
SpringMVC快速入门
导入开发包
前6个是Spring的核心功能包【IOC】,第7个是关于web的包,第8个是SpringMVC包
- org.springframework.context-3.0.5.RELEASE.jar
- org.springframework.expression-3.0.5.RELEASE.jar
- org.springframework.core-3.0.5.RELEASE.jar
- org.springframework.beans-3.0.5.RELEASE.jar
- org.springframework.asm-3.0.5.RELEASE.jar
- commons-logging.jar
- org.springframework.web-3.0.5.RELEASE.jar
- org.springframework.web.servlet-3.0.5.RELEASE.jar
编写Action
Action实现Controller接口
public class HelloAction implements Controller { @Override public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception { return null; } }
我们只要实现handleRequest方法即可,该方法已经说了request和response对象给我们用了。这是我们非常熟悉的request和response对象。然而该方法返回的是ModelAndView这么一个对象,这是和Struts2不同的。Struts2返回的是字符串,而SpringMVC返回的是ModelAndView
ModelAndView其实他就是将我们的视图路径和数据封装起来而已【我们想要跳转到哪,把什么数据存到request域中,设置这个对象的属性就行了】。
public class HelloAction implements Controller { @Override public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception { ModelAndView modelAndView = new ModelAndView(); //跳转到hello.jsp页面。 modelAndView.setViewName("/hello.jsp"); return modelAndView; } }
注册核心控制器
在Struts2中,我们想要使用Struts2的功能,那么就得在web.xml文件中配置过滤器。而我们使用SpringMVC的话,我们是在web.xml中配置核心控制器
<!-- 注册springmvc框架核心控制器 --> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--到类目录下寻找我们的配置文件--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:hello.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <!--映射的路径为.action--> <url-pattern>*.action</url-pattern> </servlet-mapping>