zoukankan      html  css  js  c++  java
  • springMVC


    springMVC的DispatcherServlet继承自 FrameworkServlet继承自HttpServletBean 继承自HttpServlet(也就是你说的servelt) 本质上是一样的东西
    HandlerMapping和HandlerAdapter是两个重要的组件,是@Contoller和@RequestMapping注解的处理器。HandlerMapping是处理请求映射的处理器,HandlerAdapter是适配器处理器(动态调用方法和处理参数).xml配置文件中配置这两种处理器的代码如下:
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

    @RequestMapping标识在哪个方法上,则表示value属性的的url值请求由该方法处理。该方法return 后写返回的视图即可。@RequestMapping后的括号内可指定要处理的请求的url和请求的方法类型。

    springMVC应用:
    http://blog.csdn.net/aitcax/article/details/41543829
    springMVC的核心是DispatcherServlet,使用springmvc的第一步就是将dispatcherServlet配置到web.xml一边能被加载。servlet-name属性非常重要,DispatcherServlet默认加载-servlet.xml的文件。如下就会加载dispatcher-servlet.xml也是在WEB-INF目录下。

    1.在web.xml中配置dispatcherServlet:
    <servlet>
      <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>
    <!--设置dispatcherServlet的匹配模式,通过把dispatcherServlet映射到/,默认servlet会处理所有的请求包括静态资源。-->
    <servlet-mapping>
      <servlet-name>dispatcher</servlet-name>




    springMVC常用对象:

    1.IhOrderStatisticsFilterVo
    订单统计过滤值对象(statistics指统计):国家id,城市id,创建起始日期
    2.BindingResult
    绑定结果
    用来验证前台穿过来的数据的有效性,作为形参必须跟在被验证对象的后面。
    被验证对象用@Valid修饰然后在bean中使用注解修饰属性的get方法来验证:
    @NotEmpty(message="。。不能为空")
    @Email(message="邮箱格式不正确")
    @Size(min=1,max=10,message="。。长度应在1到10之间")
    3.Model
    模型
    用来处理返回给前台的数据
    model.addAttribute();

    springMVC处理返回值:
    springmvc的controller中@RequestMapping注解修饰的方法返回值支持以下返回方式:
    ModelAndView,Model,ModelMap
    Map,View
    String,Void
    ModelAndView:
    通过ModelAndView构造方法可以指定返回的页面名称,也可以通过setViewName()跳转到指定的页面。
    使用addObject()设置需要返回的值。该方法有几个不同参数的方法,可以默认和指定返回对象的名字。该方法将处理后的数据和要返回的页面绑定在一起。
    String作为请求处理方法的返回值类型是比较通用的方法,这样返回的逻辑视图名不会和请求URL绑定,且具有很大的灵活性,而模型数据又可以通过ModelMap控制。


    springMVC接收参数:
    参数中与前台对应即可。当然也可以写出@RequestParam。@PathVarisble用来接收特别的数据。
    国际酒店系统怎么那么难找前台页面中调controller的地方?

    注解@PathVarisble和@RequestParam的区别:
    顾名思义前者从路径中获取变量,后者从请求中获取参数。通常?前为路径,后面为参数。


    为什么controller中的配置没有action,而浏览器控制器看到的request url有action?
    springMVC接收参数的几种方法:
    https://www.cnblogs.com/xiaoxi/p/5695783.html
    1.直接写在contorller方法的形参中,适用于get方式的提交,post方式的不可以。
    2.使用@ModelAttribute获取post方式请求的form表单数据。
    3.通过@PathVariable获取路径中的参数(应该是post和get路径中的参数都可以)
    4.通过HttpServletRequest获取,get方式和post方式都可以。http://blog.csdn.net/oncealong/article/details/51383563

      HttpServletRequest具备获取请求中任何信息的能力

      HttpServletRequest中用于获取请求行的方法:

    request.getMethod();     //请求方式
    request.getRequetURI();  //request.getRequetURL()   请求资源
    request.getProtocol();   //请求http协议版本

      HttpServletRequest中用于获取请求头的方法:

    request.getHeader("name")   //根据name,获取对应请求头数据
    request.getHeaderNames()    //获取所有的请求头名称

      HttpServletRequest中用于获取请求实体内容的方法:

    request.getInputStream()   //获取实体内容数据

      对于get方式, 要获取提交的参数需要使用request.getQueryString();方法,这样造成API的不一致, 很麻烦. 所以最好使用如下统一方便的获取参数的方式:

    request.getParameter("参数名");  //根据参数名获取参数值(注意,只能获取一个值的参数)
    request.getParameterValue("参数名“); //根据参数名获取参数值(可以获取多个值的参数)
    request.getParameterNames();   //获取所有参数名称列表  

    5.通过一个bean来接收,post和get都可以。(参数类型呢?比如儿童年龄设为string还是int?)
     
     
    新生的小心情
  • 相关阅读:
    c# 启动线程的方式
    c# 打开文件夹获取所有文件
    windows server 2008 R2 SP1 安装SQL Server 2008 R2时提示 "此操作系统不支持此版本的 SQL Server 版本"
    mongodb 备份 指定用户名密码
    c# 线程启动的两种方式与传参
    vs 2015 密钥
    c# 时间格式yyyy-MM-ddTHH:mm:ss
    c# oledb sql 报错 标准表达式中数据类型不匹配
    CentOS下yum安装dnsmasq,并强制替换为最新版
    使用QUOTA(磁盘配额)来限制用户空间
  • 原文地址:https://www.cnblogs.com/jianmianruxin/p/7753593.html
Copyright © 2011-2022 走看看