SpringMVC笔记

1.@RequestMapping映射请求URL、method、params、headers

Params和headers支持简单的表达式

Param1

!param1

Param1!=value1

{“param1=value”,”params2”}

 

@RequestMapping(value=”test”,method=request.post,params={“username”,”age!=10”},headers={Accept-Language:zn-CH})

 

2.@PathVariable映射URL绑定的占位符

@RequestMapping(“/delete/{id})

Public String delete(@PathVariable(“id” Integer id){

UserDao.delete(id);

}

 

3.Rest风格的URL以CURD为例

/order/1 HTTP GET :得到 id = 1 order –    get?id=

/order/1 HTTP DELETEid = 1order   delete? id=

/order/1 HTTP PUT:更新id = 1order –      update? id=

/order HTTP POST:新增 order

在浏览器的表单里只支持getPost

如何发送PUTDELETE请求

  1. 需要在web.xml中配置HiddenHttpMethodFilter

<filter>

<filter-name>HiddenHttpMethodFilter </filter-name>

<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter             </filter-class>

</filter>

 

<filter-mapping>

<filter-name>HiddenHttpMethodFilter </filter-name>

<url-pattern>/* <url-pattern>

</filter-mapping>

  1. 需要发送post请求

<a href=”springmvc11/testRest”>Testhds</a>

  1. 发送post请求时携带一个name=”_method”的隐藏域,值为delete或者put.reff

<form action=”springmvc11/testRest” method=“post”>

<input type=”hidden” name=”_method” value=”delete”/>

<input type=”submit” value=”testRest   delete”/>

</from>      

@ParthVariable进行注解,获得参数

例子:

利用RequestParam进行传参

@requestMapping(value=”\testRequestParam”)

Public String testRequestParam(@RequestParam(value=”Accept-Language”) string  al)

{

System.out.println(“Accept-Language”+al);

Return success;
}

 

@RequestHeader 即可将中的属性值绑定到理方法的入参中

@requestMapping(value=”\testRequestParam”)

Public String testRequestParam(@RequestHeader (value=”username”,required=false) string user, @RequestParam(value=”age”) int age)

{

System.out.println(“username”+ user+”age”+age);

Return success;
}

1.使用 @CookieValue 求中的 Cookie 值@ CookieValue(value=”sessionId”),string session

2.SpingMVC会按参数请求名和POJO属性名进行自动匹配,自动为该对象填充属性值,支持级联属性,如DEPT.deptID

3.配置直接可以转发的页面,而无须再经过Handler的方法

<mvc:view-controller  path=/success view-name=success />

在实际开发中通常都需要配置mvc:annotation-drivern 标签

<mvc:annotation-driven></ mvc:annotation-driven>

<mvc:default-servlet-handler/>

 

配置启动SpringIOC 容器的Listener,nned for ContextLoaderListenner

<context:component-scan base-package=”com.atiguigu.spingmvc”>

<context-param>

  <param-name>contextConfigLocation </param-name>

   <param-value>classpath:beans.xml</param-value>

</context-param>

若Spring的IOC容器和SpringMVC的IOC容器扫描的包有重合的部分,就会导致bean会重复执行

解决:Spring的ioc容器扫描包和SpringMVC的IOC容器扫描没有重合部分

使用exclude-filter和include-filter子节点来规定只能扫描的注解。

SpringMVC的IOC容器中的bean可以引用Spring IOC容器中的bean,反之,Spring IOC容器中的bean却不能引用SpringMVC中的bean

 

                               架构

1.用户请求

2.前端控制器  dispatcherservlet ,用户请求相应

3.处理映射器,HandlerMapping 根据URL,查找相应的处理器,返回执行链HandlerExecutionChain{ HandlerInterceptor 1  HandlerInterceptor2 拦截器}

处理器适配器HandlerAdapter,去处理Handler,(类似于用电的变压器)

4.后台处理器 handler处理器 ,即controller,类似于servlet

5.返回ModelAndView,

6.视图解析器,解决逻辑视图,返回物理视图,进行视图渲染(jsp,freemarker,excel,pdf)

 

  1. 发起请求,到前端控制器DispatcherServlet
  2. 前端控制器请求 HandlerMapping 查找Handler,可以根据xml配置,注解进行查找
  3. 处理器映射器HandlerMapping向前端控制器返回Handler
  4. 前端控制器调用处理器适配器去执行Handler
  5. 处理器适配器去执行Handler
  6. Handler向适配器返回ModelAndView
  7. 处理器适配器向前端控制器返回ModelAndView, ModelAndView是springMVC框架的一个底层对象,包括Model和View
  8. 前台控制器请求视图解析器去进行视图解析

根据逻辑视图名解析成真正的视图jsp

  1. 视图解析器 向前端控制器返回view
  2. 前台控制器进行视图渲染,将模型数据(在ModelAndView对象中)填充到 request域
  3. 响应结果

 

 

 

组件

  1. 前端控制器DispatcherServlet,作用接收请求,响应结果,相当于转发器,没有业务逻辑
  2. 处理器映射器HandlerMapping,根据请求得url查找Handler(不需要开发)
  3.  处理器适配器HandlerAdapter,按规则 执行Handler
  4. 处理器Handler(需要开发)
  5. 视图解析器ViewResolver(不需要开发)

进行视图解析,根据逻辑视图名解析成真正得视图view

  1. 视图View(需要开发)

View一个接口,实现支持不同得View类型(jsp\freemarker\pdf)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值