springmvc

springmvc
        是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合
        springmvc是一个基于mvc的web框架
        mvc 什么?  是一种设计模式
 
Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指
的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。
 

springmvc优势

1、清晰的角色划分:前端控制器(DispatcherServlet)、请求处理器映射器(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewRe solver)、页面控制器(Controller)、验证器( Validator)、命令对象(Command 请求参数绑定到的对象就叫命令对象)、表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)。
2、分工明确,而且扩展点相当灵活,可以很容易扩展,虽然几乎不需要;
3、由于命令对象就是一个POJO,无需继承框架特定API,可以使用命令对象直接作为业务对象;
4、和Spring 其他框架无缝集成,是其它Web框架所不具备的;
5、可适配,通过HandlerAdapter可以支持任意的类作为处理器;
6、可定制性,HandlerMapping、ViewResolver等能够非常简单的定制;
7、功能强大的数据验证、格式化、绑定机制;
8、利用Spring提供的Mock对象能够非常简单的进行Web层单元测试;
9、本地化、主题的解析的支持,使我们更容易进行国际化和主题的切换。
10、强大的JSP标签库,使JSP编写更容易。
还有比如RESTful风格的支持、简单的文件上传、约定大于配置的契约式编程支持、基于注解的零配置支持等等。
 
 
 
 
框架原理:
        第一步:发送请求到前端控制器(DispatcherSerlvet)
                    DispatcherSerlvet:前端控制器(不需要程序员开发)
                                         作用:接受请求 响应结果,相当于转发器,中央处理器,减少了其他组件之间的耦合度
 
        第二步:前端控制器请求HandlerMapping查找Handler (就是Controller)
                        可以根据xml配置,注解进行查找
                            HandlerMapping:处理器适配器(不需要程序员开发)
                                                   作用:根据请求的URL查找Handler
 
        第三步:处理器映射器HandlerMapping向前端控制器返归Handler
 
        第四步:前端控制器调用处理器适配器去执行Handler
 
        第五步:处理器适配器去执行 Handler
        第六步:Handler执行完成给适配器返归 ModelAndView
        第七步:处理器适配器向前端控制器返回ModelAndView
                        ModelAndView是springmvc框架的一个底层对象 包括  model 和view
        第八步:前端控制器请求视图解析器去进行视图解析
                        根据逻辑视图名解析成真正的视图(jsp  。。)
        第九步:视图解析器向前端控制器返回view
 
 
        第十步:前端控制器进行视图渲染
                        视图渲染将模型数据( 在modelAndView中)填充到request作用域
        第十一步:前端控制器向用户响应结果
 
    组件:
            1. DispatcherSerlvet:前端控制器(不需要程序员开发)
                                         作用:接受请求 响应结果,相当于转发器,中央处理器,减少了其他组件之间的耦合度
            2.    HandlerMapping:处理器映射器(不需要程序员开发)
                                                   作用:根据请求的URL查找Handler
            3.  处理器适配器 HanderAdapter(不需要程序员开发)
                                            作用:按照特定规则(HanderAdapter要求的规则)去执行Hnadler
            4.处理器  Handler( 需要程序员开发
                                        注意:编写Hnadler时要按照HnadlerAdapter的要求去做,这样是配置才可以正确的执行Handler
            5.视图解析器  view resolver(不需要程序员开发)
                                            作用:进行视图解析,根据逻辑视图解名解析成真正的视图(view)
            6.视图view ( 需要程序员开发 jsp
                        view是一个接口,实现类支持不同的view类型(jsp,pdf。。。)
 
 
 
@RequestMapping
    1.URL映射 :定义controller方法对应的URL,进行处理器映射的使用
    2.窄化请求映射
    3.限制请求方法:出于安全考虑  对http的链接进行方法映射,如果限制请求为post,用get请求则报错
 
 
Contraller方法的返回值
 
    1.返归ModelAndView :需要方法结束时,定义ModelAndView将Model和View分别进行设置
    2.返归string
            重定向:return  ‘’redirect:query.do‘’;
            转发: return   ‘’forward:query.do‘’;
    3.返回void 
            在Contraller方法的形参上定义request 和 response。用request和response进行页面的跳转
 
 
参数绑定 :
           从客户端请求 key/value 数据 经过参数绑定  将 key/value数据绑定到Contraller方法的形参上,Springmvc中,接收页面提交的数据是通过方法参数来接收,而不是在Contraller类定义成员变量接收
 
 
    客户端请求
    key/value
            |
            |
处理器适配器调用springmvc提供的参数绑定组件将key/value数据转成 contraller 方法的形参
参数绑定组件:在spring早期的版本使用propertyEditor(只能将字符串转成Java对象)后期使用converter进行任意类型的转换
springmvc提供了很多的converter(转换器),在特殊情况下要自定义converter,对日期数据绑定需要自定义converter
            |
            |
           \ /
contraller 方法(形参)
 
 
 
 
默认支持的类型
        直接在controller方法的形参上定义下面类型的对象,就可以使用这些对象。在参数绑定的过程中。如果遇到下面的类型直接进行绑定
 
    HTTPresponse: 通过response处理响应信息
    Httprequest  : 通过request对象获取请求信息
     Httpsession: 通过session对象得到session中存放的对象
    
    Model / ModelMap:ModelMap是Model接口的实现类,通过Model或ModelMap向页面传递数据.
                                作用:将model填充到request域
例:model.addAttribute("item", item);
 
 
    简单类型
            通过@requestParam对简单类型的参数绑定
            如果不使用@requestParam要求request传入的参数名称和controller方法的形参名称一致,方可绑定成功
            如果使用@requestParam不用限制传入参数的一致性
public  String edItems(Model m,@RequestParam(value='id') Intger iter_id)
 
requeseParam 里指定request传入的参数名称和形参绑定
                        指定参数必须和传入name一致
                        required属性指定参数是否需要传入
                        defaultValue可设置默认值,如果没有id传入。将默认值与形参绑定                 
 
 
 
 
Struts2和springmvc的区别:
        springmvc 基于方法开发   struts2 基于类开发
1.springmvc将URL和controller方法映射,映射成功后springmvc生成一个Handler对象。对象中只包含了一个method,方法结束,形参数据销毁
2.spingmvc可以进行单例开发,并建议使用单例进行开发 Struts2通过类的成员变量(多线程共享),接收参数。无法使用单例,只能使用多例
    springmvc的controller开发类似于service开发
3.经过实际测试,struts2速度慢,在于使用struts标签,如果使用struts建议使用jstl
 
 
 

RequestMapping

@RequestMapping :请求映射注解
用法举例:
1. @RequestMapping(“list.do”)
2. @RequestMapping(“/list.do”)
3. @RequestMapping(“list”)
4. @RequestMapping(value=”list”)
5. @RequestMapping(value=”list”,method.RequestMethod.POST)
 
get请求:
1. 所有从浏览器直接发送的请求,都是get请求
2. href发送的请求都是get请求
post:
1. 表单提交是post请求
2. ajax是post请求
 
 

json数据交互

  • @RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容转换为json、xml等格式的数据并绑定到controller方法的参数上。
  • @RequestBody注解实现接收http请求的json数据,将json数据转换为java对象
  • @RequestBody/@ResponseBody要依赖Jackson
  • 支持注解,注解映射器和注解适配器可以使用<mvc:annotation-driven />代替。
    <mvc:annotation-driven />默认注册了注解映射器和注解适配器等bean。
 
 

RESTful支持

Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格,是对http协议的诠释。
资源定位:互联网所有的事物都是资源,要求url中没有动词,只有名词。没有参数
资源操作:使用put、delete、post、get,使用不同方法对资源进行操作。分别对应添加、删除、修改、查询。
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值