SpringMVC学习

SpringMVC主要流程

1. 客户端请求提交到DispatcherServlet
2. 由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
3. DispatcherServlet将请求提交到Controller
4. Controller调用业务逻辑处理后,返回ModelAndView
5. DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
6. 视图负责将结果显示到客户端

概述重要的接口或者类

前端控制器DispactherServlet

控制器映射器HandlerMapping(可以有多个HandlerMapping) 

    实现类:1、SimpleUrlHandlerMapping 通过配置文件 ,把一个URL映射到Controller

                 2、DefaultAnnotationHandlerMapping (3.1之前用的)通过注解,把一个URL映射到Controller类上

控制器适配器 HandlerAdapter接口,请求处理的映射(可以有多个HandlerAdapter)

3.1之后用RequestMappingHandlerMapping

    AnnotationMethodHandlerAdapter(3.1之前用的)通过注解,把url映射到Controller类的方法上。

3.1之后用RequestMappingHandlerAdapter

控制器

Controller 由于我们使用了@Controller注解,被注解的类就可以担任Controller(action)的功能

视图解析器  ViewResolver接口的实现类

UrlBasedViewResolver类,通过配置文件,把一个视图交给view来处理。

InternalResourceViewResolver 类,比上面的类,加入jstl的支持。

ModelAndView 类

前端控制器DispactherServlet

DispatcherServlet是个Servlet,配置在web.xml中,可多个。根据拦截的规则,拦截后依据某某规则分发到Controller来处理

   <servlet>  
        <servlet-name>springMVC</servlet-name>  
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>           <init-param>  
            <param-name>contextConfigLocation</param-name>  
            <param-value>classpath:/springmvc-servlet.xml</param-value>  
    	</init-param>  
        <load-on-startup>1</load-on-startup>  //随服务器一起启动
    </servlet>    
    <servlet-mapping>  
        <servlet-name>springMVC</servlet-name>  
        <url-pattern>/</url-pattern>  //拦截所有,后面要配出静态资源
    </servlet-mapping> 

springmvc-servlet.xml配置

 <context:component-scan base-package="com.app,com.core"/><!--自动扫描的包-->
    <!-- 对静态资源访问  使用默认的Servlet来响应静态文件-->
    <mvc:default-servlet-handler/>
    <!-- 默认注解映射的支持
<mvc:annotation-driven /> 是一种简写形式,完全可以手动配置替代这种简写形式。<mvc:annotation-driven /> 会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter 两个bean,是spring MVC为@Controllers分发请求所必须的。-->
    <mvc:annotation-driven/>
<!--使用了<mvc:annotation-driven/> 就不能自动配置拦截器。  -->
    <mvc:intercepters>
        <bean class=""/>
    </mvc:intercepters>
    <!-- 视图解析器,当Controller返回XXX字符串时,先通过拦截器,然后该类就会在/WEB-INF/views/目录下,查找XXX.jsp文件-->  
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"></property>
    <property name="suffix" value=".jsp"></property>
</bean>   

<context:component-scan/> 扫描指定的包中的类上的注解,常用的注解有:

@Controller 声明Action组件
@Service    声明Service组件    @Service("myMovieLister") 
@Repository 声明Dao组件
@Component   泛指组件, 当不好归类时. 
@RequestMapping("/menu")  请求映射
@Resource  用于注入,( j2ee提供的 ) 默认按名称装配,@Resource(name="beanName") 
@Autowired 用于注入,(srping提供的) 默认按类型装配 
@Transactional( rollbackFor={Exception.class}) 事务管理
@ResponseBody  该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区

@Scope("prototype")   设定bean的作用域

@RequestMapping("/menu")  函数

返回值三种:

ModelAndView,

String(返回逻辑视图),形参可以定义Model

void 形参可以定义request ,response,可以用来相应Json数据。

参数绑定:

客户端传过来的key/value数据,绑定到函数的形参上。使用converter转换器。spring定义很多转换器。

默认支持HttpServletRequest(request),HttpServletResponse(response)、HttpSession、Model(接口)/ModelMap(实现,会把数据传递给request域)(model),modelAndView(modelAndView),简单类型。

简单类型

@RequestParam(放在参数的类型前面)对简单类型绑定,不使用这个注解,需要保证传入的参数和简单类型名称一致。

使用@RequestParam(value="指定传入的参数名" required=true(此参数必须传),defaultValue=“”)可不一致。

绑定POJO

页面input的name 和形参pojo中的成本变量名称一致。就可以绑定到pojo中。


对日期的绑定要自定义参数转换器。




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值