1、导入spring的jar包
core/beams(IOC)/web/asm/expression/context+context.support/web.servlet/commons.logging
2、配置*控制器(web.xml)
<servlet>
<load-on-startup>1</load-on-startup>
<servlet-name>test</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>*.test</url-pattern>
</servlet-mapping>
<servlet-name>test</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>*.test</url-pattern>
</servlet-mapping>
【关键词】
spring MVC 框架的核心构架
dispatcher Servlet *控制器
Controller 子控制器
Handler Mapping 映射器
ViewResult & View
Interceptors
LocalResolver
Validate
【spring MVC常用的Controller】
a、直接实现Controller接口
b、AbstractController抽象类
3、添加spring配置文件(IOC):[servletName]-servlet.xml
3.1 映射器配置:
--1 impleUrlHandlerMapping,基于请求路径及配置的prop信息分发请求到控制器
eg:
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="请求">控制器id</prop><!--相当于struts2中的result-->
<prop key="toAddEmp.test">toAddEmpController</prop>
...
</props>
</property>
</bean>
<property name="mappings">
<props>
<prop key="请求">控制器id</prop><!--相当于struts2中的result-->
<prop key="toAddEmp.test">toAddEmpController</prop>
...
</props>
</property>
</bean>
--2 ControllerClassNameHandlerMapping,根据请求路径分发请求到控制器,(ControllerName=PathName+"Controller")
eg:
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
--3 BeanNameUrlHandlerMapping,根据请求名称匹配控制器的name属性达到分配请求的目的,eg:xxx.test-控制器bean:name='/xxx.test'
eg:
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
3.2 控制器配置
--1 Controller 自定义控制器
eg:
<bean name="/test1.test" id="firstController" class="pg1.FirstController"></bean>
--2 ParameterizableViewController 参数化控制器,用于跳转,提供视图名(自定义,配置ViewName属性)
eg:
<bean id="toAddEmpController" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<property name="viewName" value="addEmp"></property>
</bean>
<property name="viewName" value="addEmp"></property>
</bean>
--3 UrlFilenameViewController 路径解析控制器,用于跳转,提供视图名(自动解析路径,截取请求名。eg:请求:index.test 视图名:index)
eg:
<bean id="testUrlController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController"></bean>
--4 CommandController 自动封装表单数据
eg:
<bean id="addEmpController" class="pg1.controller.AddEmpController">
<!-- 指定数据绑定对象类型 -->
<property name="commandClass" value="pg1.pojo.Emp"></property>
</bean>
<bean id="addEmpController" class="pg1.controller.AddEmpController">
<!-- 指定数据绑定对象类型 -->
<property name="commandClass" value="pg1.pojo.Emp"></property>
</bean>
--5 FormeController 专门处理表单请求,自动封装表单数据,
自动匹配处理方法:get请求-referenceData方法/post请求-onSubmit方法
eg:
<bean id="addEmpController2" class="pg1.controller.MyFormeController">
<property name="commandClass" value="pg1.pojo.Emp"></property>
</bean>
--6 MultiActionController 多个请求对应一个action
<property name="commandClass" value="pg1.pojo.Emp"></property>
</bean>
--6 MultiActionController 多个请求对应一个action
eg:
<bean id="showController" class="pg1.controller.MyMultiController">
<property name="methodNameResolver">
<!-- 解析策略1,根据请求名称匹配对应的处理方法,eg:show1.test-show1(); -->
<bean class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver"></bean>
<!-- 解析策略2,根据请求参数匹配对应的处理方法,eg:xxx.test?methodName=show1-show1();
<bean class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName" value="methodName" />
</bean>
-->
</property>
</bean>
<bean id="showController" class="pg1.controller.MyMultiController">
<property name="methodNameResolver">
<!-- 解析策略1,根据请求名称匹配对应的处理方法,eg:show1.test-show1(); -->
<bean class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver"></bean>
<!-- 解析策略2,根据请求参数匹配对应的处理方法,eg:xxx.test?methodName=show1-show1();
<bean class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName" value="methodName" />
</bean>
-->
</property>
</bean>
3.3 视图解析器配置
eg:
-- 视图解析器,将控制器返回的视图名与配置好的prefix和suffix属性的值拼接成响应路径
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<!-- 模型处理方式,不可或缺 -->
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/WEB-INF/jsp/"></property><!--前缀-->
<property name="suffix" value=".jsp"></property>><!--后缀-->
</bean>
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<!-- 模型处理方式,不可或缺 -->
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
<property name="prefix" value="/WEB-INF/jsp/"></property><!--前缀-->
<property name="suffix" value=".jsp"></property>><!--后缀-->
</bean>