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?)