目前,项目中在cms子系统中使用了spring MVC,以前没接触过,所以现在从入门开始学习一下。
spring MVC具体流程步骤(来自网络)。
由此,spring MVC的开发步骤:
下面是按照这个步骤开发的一个简单的Spring MVC项目。
以下是需要使用到的jar包:
1、在web.xml里加入DispatcherServlet配置。
<servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 容器是在启动的时候就加载这个DispatcherServlet(实例化并调用其init()方法), 它的值必须是一个整数,表示servlet应该被载入的顺序; 当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet; 当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载; 正数的值越小,该servlet的优先级越高,应用启动时就越先加载; 当值相同时,容器就会自己选择顺序来加载。 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
这样请求已交给Spring MVC框架处理,因此我们需要配置Spring的配置文件,默认DispatcherServlet会加载WEB-INF/[DispatcherServlet的Servlet名字]-servlet.xml配置文件。本测试程序需要需要配置/WEB-INF/dispatcher-servlet.xml。
2、在dispatcher-servlet.xml中配置HandlerMapping和HandlerAdapter。
<!-- HandlerMapping --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!-- HandlerAdapter --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
3、在dispatcher-servlet.xml中配置ViewResolver。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/"/> <property name="suffix" value=".jsp"/> </bean>
nternalResourceViewResolver:用于支持Servlet、JSP视图解析;
viewClass:JstlView表示JSP模板页面需要使用JSTL标签库。
prefix和suffix:查找视图页面的前缀和后缀(前缀[逻辑视图名]后缀),比如传进来的逻辑视图名为test,则该该jsp视图页面应该存放在“/test.jsp”;
4、开发和配置处理器。
public class SpringController implements Controller{ @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mv = new ModelAndView(); mv.addObject("message", "test"); mv.setViewName("test"); return mv; } }
页面控制器/处理器必须实现org.springframework.web.servlet.mvc.Controller接口。将SpringController由spring IOC处理。
<bean name="/test" class="com.spring.mvc.SpringController"/>
name="/test":前边配置的BeanNameUrlHandlerMapping,表示如过请求的URL为 “上下文/test”,则将会交给该Bean进行处理。
5、视图页面/test.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>spring mvc test</title>
</head>
<body>
${message}
</body>
</html>
运行步骤:
1、 首先用户发送请求http://localhost:8080/projectName/test——>web容器,web容器根据“/test”路径映射到DispatcherServlet(url-pattern为/)进行处理;
2、 DispatcherServlet——>BeanNameUrlHandlerMapping进行请求到处理的映射,BeanNameUrlHandlerMapping将“/test”路径直接映射到名字为“/test”的Bean进行处理,即SpringController,BeanNameUrlHandlerMapping将其包装为HandlerExecutionChain(只包括SpringController处理器,没有拦截器);
3、 DispatcherServlet——> SimpleControllerHandlerAdapter,SimpleControllerHandlerAdapter将HandlerExecutionChain中的处理器(SpringController)适配为SimpleControllerHandlerAdapter;
4、 SimpleControllerHandlerAdapter——> SpringController处理器功能处理方法的调用,SimpleControllerHandlerAdapter将会调用处理器的handleRequest方法进行功能处理,该处理方法返回一个ModelAndView给DispatcherServlet;
5、 test(ModelAndView的逻辑视图名)——>InternalResourceViewResolver, InternalResourceViewResolver使用JstlView,具体视图页面在/test.jsp;
6、 JstlView(/test.jsp)——>渲染,将在处理器传入的模型数据(message=test!)在视图中展示出来;
7、 返回控制权给DispatcherServlet,由DispatcherServlet返回响应给用户,到此一个流程结束。
spring学习笔记(4)--spring MVC(基础),布布扣,bubuko.com
原文:http://www.cnblogs.com/Nick-/p/3587893.html