springmvc总结

1、再请求到达servlet没有做任何处理
2、复杂
3、不容易作业面技术变更
mvc:面向工作者:具体的工作由具体的工作着去完成(控制器:细化了)
核心(调配控制,页面的请求)/应用(处理映射器/处理适配器/试图适配器/。。。)/界面(页面控制器(就是自己写的代码))
去掉后缀,但是有具体的逻辑路劲
请求类型:
静态(图片之类的)/动态(Ajax之类的请求)
/在springmvc xml中所有用/不用/*
3.0之后有默认包,无需配置handmappiing,只要开启注解支持,默认使用defaultannotationhandmappiing

1、开启springmvc框架注解支持(<mvc:annotation-driven/>)
3、开启自动扫描,只扫描web层的组件(表现层)(〈context(扫描到容器):component-scan(开启扫描) base-package=”com.lovo“ 〉)
过滤器:1、包含〈context :include type=”annotation“ exepression
扫描到容器
2、不包含〈context:exclude
不扫描到容器
使用@controller将某一个Java类标记成表现层组建:该类,无需继承或实现任何借口
##@requestmapping(”/login“(必填属性,支持模糊配置),method=requestmethod.get(用于制定该方法处理的请求类型,如果不瞒足奖抛出405,是一个数组,可以写多个)params={”usernaem“,pwd!=”123“}(用于参数过滤))400条件参数不匹配;完成请求与处理请求之间的映射关系
在类的上面再@requestmapping(”/user“)是一个命名空间,不能重复,是一个唯一标识,分类
请求就会变成user/login
requestparam页面表单提交项,匹配参数之间的映射0
作用域:三个,个数顺序可以自己定义:(HTTPservletresponse,HTTPservletrequest,HTTPservletsession)
Jackson(Json的封装工具,转换)

@cookiesvalue
form表单只支持get/post
Ajax支持所有的
onsubmit对提交的验证
@
rest架构风格的提交,路径中的/{id}/{name}/{sex}标识占位符
当占位符名称与参数一直是,也需要使用@pathvarialie从路径中获取
也可以将其封装成Bean对象,要求对象中属性名与占位符一致

定义静态资源包,这种请求不会通过handlemapping,直接从包中获取
Ajax有缓存机制
mv
返回的事默认逻辑位置
forword请求转发
redirect重定向
+++++++++++++++++++++++++++++++++++++++++++++++++++
p 在spring-controller.xml增加配置如下:
<!-- 默认的注解映射的支持 -->
<mvc:annotation-driven />

为了能够实现自动扫描,再加入配置:
<!--启用自动扫描  -->
<context:component-scan
  base-package="com.lovo.controller" />
配置上默认针对 jstl 的视图解析器:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/" />
        <property name="suffix" value=".jsp" />
</bean>

首先得启动核心控制器,然后再启动注解支持;之后启动自动扫描;如果是在spring3.1之后可以不用配置的版本默认使用DefaultAnnotationHandleMapping,所以只需要开启注解支持,但是视图解析器需要配置 ;
@RequestMapping的特性
1、可以被配置在控制器类名上。
@Controller
@RequestMapping("/test")
public class ToLoginController {
 
  @RequestMapping("/toLogin")
  public String jump(){
  return "login";
  }
}
此时代表请求该方法的路径是:/test/toLogin


@Controller就是把一个类声明为一个控制组建,
@RequestMapping在方法上面是表示下面的方法是针对括号里面的方法
方法中的返回值将作为ViewName,在类上面时@requestmapping(”/user“)是一个命名空间,不能重复,是一个唯一标识,分类;请求就会变成user/tologin

三个常用属性:value,params,method
value必填属性,代表请求的url,支持模糊配置。
@RequestMapping(value= /users/** )
    匹配 /users/abc/abc
@RequestMapping(value="/product?")
    匹配 /product1 /producta ,但不匹配 /product /productaa
@RequestMapping(value="/product*")
    匹配 /productabc /product ,但不匹配 /productabc/abc
@RequestMapping(value="/product/*")
    匹配 /product/abc ,但不匹配 /productabc
@RequestMapping(value={"/test1", "/create"})
在@RequestMapping中,其有三个常用属性(value,params,method),其中value为必填项,代表请求的URL(路径),支持模糊匹配,但是value可以省略不写,
params(可选属性)用于对指定参数进行过滤,如果不满足,将抛出将抛出:HTTP Status 400 - Parameter conditions "userName, pwd!=123456" not met for actual request parameters: pwd={123456}
method(可选属性)用于指定该方法可以处理的请求类型,如果不瞒足将抛出:HTTP Status 405 - Request method 'GET' not supported
他们都是String数组,可以写多个
params可选属性,代表对请求参数进行过滤
@RequestMapping(value="/toLogin",params="flag")
代表请求中必须要有名为flag的提交项
@RequestMapping(value="/toLogin",params="!flag")
代表请求中不能有名为flag的提交项
@RequestMapping(value="/toLogin",params="flag=hello")
代表请求中必须有名为flag的提交项,且值为hello
@RequestMapping(value="/toLogin",params="flag!=hello")
代表请求中如果有名为flag的提交项,其值不能为hello
@RequestMapping(value="/toLogin",params={"flag1","flag2=hello"})
代表请求中必须有名为flag1的提交项,同时必须有名为flag2的提交项,且flag2的值必须为hello



method可选属性,代表请求方式。
@RequestMapping(value="/toLogin",method=RequestMethod.POST)
@RequestMapping(value="/toLogin",method=RequestMethod.GET)
@RequestMapping(value="/toLogin", method= {RequestMethod.POST, RequestMethod.GET}"
+++++++++++++++++++++++++++++++++++++++++++++++++++
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值