概念
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建?Web?应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等等。
通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如?JavaServer Pages(JSP)技术、Velocity、Tiles、iText和POI。Spring MVC 框架并不知道使用的视图,所以不会强迫开发者只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进行定制。
Lifecycle for overriding binding, validation, etc,易于同其它View框架(Tiles等)无缝集成,采用IOC便于测试。
它是一个典型的教科书式的mvc构架,而不像struts等都是变种或者不是完全基于mvc系统的框架,对于初学者或者想了解mvc的人来说我觉得 spring是最好的,它的实现就是教科书!第二它和tapestry一样是一个纯正的servlet系统,这也是它和tapestry相比 struts所具有的优势。而且框架本身有代码,看起来容易理解。
MVC已经是现代Web开发中的一个很重要的部分,下面介绍一下Spring MVC的一些使用心得。
之前的项目比较简单,多是用JSP 、Servlet + JDBC 直接搞定,在项目中尝试用 Struts(Struts MVC)+Spring+Hibernate, 严格按照分层概念驱动项目开发,因项目需求一直不断变化,功能不断扩充、增强,技术构建也几经改变到有个稳定的应用,体会了很多感受,这次先对 Spring MVC 层进行一些个人总结。
项目环境的搭建以及访问流程
创建项目,在WEB-INF文件夹下新建lib文件夹,将jar包导入,并关联至项目
在项目中创建resources文件夹,将springMVC.xml文件导入其中,并转换成资源文件夹。
接在在项目的web.xml文件中配置一下代码,注册DispatcherServlet类,当浏览器访问服务器的时候,使用DispatcherServlet类设置的虚拟地址拦截监听所有访问请求地址。当DispatcherServlet类被访问后,通过生命周期的执行,首先创建对象,再执行init方法,加载init-param静态参数,执行springMVC.xml文件。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--注册一个servlet,该servlet用于拦截浏览器访问的所有地址-->
<!--第一部分是serlvet的注册-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--设置只要浏览器访问该servlet,该servlet开始转向Springmvc主配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springMVC.xml</param-value>
</init-param>
</servlet>
<!--第二部分是为该servlet设置虚拟地址-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--表示当浏览器需要访问该服务器的时候,让当前serlvet拦截所有地址-->
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
?接着我们在src文件夹中创建com.springmvc.controller包,新建MyController类继承至AbstractController抽象类,实现未实现的抽象方法
package com.springmvc.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 控制层,用于替代Servlet
*/
public class MyController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
//获得请求
System.out.println("控制层获得浏览器的访问请求");
//请求转发
//request.setAttribute("name","张三");
//request.getRequestDispatcher("index.jsp").forward(request,response);
//重定向
request.getSession().setAttribute("name","李四");
response.sendRedirect("index.jsp");
return null;
}
}
接着将该类的对象创建在springMVC.xml文件中
<?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:mvc="http://www.springframework.org/schema/mvc"
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
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--MyController controller=new MyController()-->
<bean name="/aaa" class="com.springmvc.controller.MyController"></bean>
</beans>
通过name属性设置浏览器的访问地址,进行匹配,如果匹配正确,则开始执行MyController类,在MyController类的方法中,通过使用request或者response对象进行请求转发或者重定向的方式跳转页面至jsp页面,并且可以携带参数数据跳转,这里面的知识点是Jsp和Servlet的内容,本文中不再重复的赘述。
整个项目的访问流程如图所示:
总结
SpringMVC框架是Spring框架的一部分,因此读者发现该框架的用基本都是Spring框架的jar包,但该框架中封装了jsp和servlet的技术,该框架基本的作用是在MVC三层架构中用于操作在controller控制层中的?,运行项目的同时需要配置tomcat服务器才能启动服务器,使用浏览器地址进行访问。
|