springmvc总结

来源:互联网 发布:美发修改软件 编辑:程序博客网 时间:2024/06/05 01:55
1 dispather就是springmvc的指挥官,完成请求处理 并返回处理结果




2@Controller的注解,该注解在SpringMVC 中,负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示。


3 @PathVariable和@RequestParam    对于像“springmvc/testPathVariable/1”这样的请求,我们通过@PathVariable来绑定请求的参数;而对于类似“springmvc/testRequestParam?username=jackie&age=12”这样的请求参数是以键值对出现的




4 @RequestHeader注解来获取。 请求如get请求或post都有请求头和响应头




5 一个对象就是一个POJO。   只要类名写正确就可以实现  整体传值




6 @ResponseBody和@ResponseEntity   我们很多时候只需要返回数据即可,而不是一个JSP页面


7 拦截器   (在调用的过程中进行二次处理) 
boolean preHandle  使用时机:在处理请求之前
应用场景:可以在该方法中放入一些初始化的操作,比如权限验证,日志管理等
           void postHandle
使用时机:在调用目标方法之后,渲染视图之前被调用。具体来说,是在调用了Controller中定义的方法之后,但在DispatcherServlet 处理视图返回渲染结果之前被调用。


应用场景:根据使用的时机就可以知道,该方法可以对Controller处理之后ModelAndView进行操作




afterCompletion  使用时机:渲染视图之后


  应用场景:释放资源


8   Spring框架是由于软件开发的复杂性而创建的。


9   Handler处理器执行后结果 是ModelAndView,具体开发时Handler返回方法值类型包括 :ModelAndView、String(逻辑视图名)、void(通过在Handler形参中添加request和response,类似原始 servlet开发方式,注意:可以通过指定response响应的结果类型实现json数据输出




10  <!--注解映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<!--注解适配器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>


在实际开发,使用<mvc:annotation-driven>代替上边处理器映射器和适配器配置。
11 如果request请求的参数名和形参名称不一致,可以使用@RequestParam(指定request请求的参数名),@RequestParam加在形参的前边。






12  @RequestBody将json串转成java对象   @ResponseBody将java对象转成json串输出






13 RESTful(即Representational State Transfer的缩写)其实是一个开发理念,是对http的很好的诠释。
1 非REST的url:http://...../queryItems.action?id=001&type=T01
REST的url风格:http://..../items/001
特点:url简洁,将参数通过url传到服务端


2、http的方法规范
不管是删除、添加、更新。。使用url是一致的,如果进行删除,需要设置http的方法为delete,同理添加。。。


后台controller方法:判断http方法,如果是delete执行删除,如果是post执行添加。


3、对http的contentType规范
请求时指定contentType,要json数据,设置成json格式的type。。




14 拦截器


定义拦截器,实现HandlerInterceptor接口。  
preHandle方法按顺序执行,
postHandle和afterCompletion按拦截器配置的逆向顺序执行。


1 preHandle//进入 Handler方法之前执行
//用于身份认证、身份授权
//比如身份认证,如果认证通过表示当前用户没有登陆,需要此方法拦截不再向下执行  //return false表示拦截,不向下执行//return true表示放行




2    postHandle//进入Handler方法之后,返回modelAndView之前执行
//应用场景从modelAndView出发:将公用的模型数据(比如菜单导航)在这里传到视图,也可以在这里统一指定视图


3 postHandle   //执行Handler完成执行此方法
//应用场景:统一异常处理,统一日志处理




505


15 通过<context:component-sqpan>使spring 扫描此保下面的所有的类,让spring注解的类生效




16Ant 风格(? * 等)


17  通过@RequestParam对简单类型的参数进行绑定。
如果不使用@RequestParam,要求request传入参数名称和controller方法的形参名称一致,方可绑定成功。




18 @RequestBody将j以将方法的返回值传到页面


19  @ModelAttribute
// 商品分类
//itemtypes表示最终将方法返回值放在request中的key
@ModelAttribute("itemtypes")
public Map<String, String> getItemTypes() {


Map<String, String> itemTypes = new HashMap<String, String>();
itemTypes.put("101", "数码");
itemTypes.put("102", "母婴");


return itemTypes;
}




页面  ${itemtypes}接收


20  异常 


系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理


只要实现了这个HandlerExceptionResolver借口就是全局异常处理器

0 0
原创粉丝点击