------------------------------------------------------------------SPRING MVC-------------------------------------------------------
特点:
1,基于的是servlet/jsp模式
2,控制器不再需要继承其他类,只需要用@Controller注解
3,不需要有formbean之类的对象了,方法参数中需要的页面值,可通过@RequestParam直接从页面请求中获得。
4,控制器方法签名定义灵活
5,返回页面直接在方法中指定,恶意是String,也可以是其他的,比如:ModelAndView或void等。6
,性能也很优秀。和struts1相当,性能高于struts2
流程:
负责产生业务组件,调用业务方法完成业务,返回需要转发的路径。
||
请求---》前端控制器----》应用控制器--------》业务组件---------
||
负责接收客户端的请求,根据请求路径访问应用控制器。将页面参数填充实体bean 。负责转发页面和标签类支持。
DispatcherServlet会寻找WEB-INF下,命名规范为[servlet-name]-servlet.xml文件。
特可以通过inti-param改变默认配置
<init-param>
<param-name>contextConfigLocation</>
<param-value>classpath:applicationContext.xml</>
</inti-param>
¥¥¥¥¥提交的表单名必须和属性名一致
@RequestMappong(value="ps/{id}",method=RequestMethod.GET)设置只支持get方式
传递附加的值只能用PathVariable去接收,赋值给myid
<a href="ps/1.do">访问</a>
public String test(@PathVariable("id")int myid){
}
-----------------------配置------------------------------
<!-- 提供springMVC注解支持 -->
<mvc:annotation-driven conversion-service="typeChange"></mvc:annotation-driven>
<!-- 类型转换器 -->
<bean id="typeChange" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.lovo.util.DateChange"></bean>
</list>
</property>
</bean>
<context:component-scan base-package="com.lovo"></context:component-scan>
<!-- 上传文件支持 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
spring管理整个项目,每个spring组件都由spring容器产生。所以在web容器启动时,要读取spring的配置文件。从而加载spring容器中的组件。