当前位置 : 主页 > 编程语言 > c++ >

spring mvc

来源:互联网 收集:自由互联 发布时间:2021-07-03
mvc的注解 Spring MVC 它是Spring框架的一个子产品,它是一个典型的教科书式的mvc构架,而不像struts等都是变种或者不是完全基于MVC系统的框架,对于初学者或者想了解MVC的人来说我觉得 S
mvc的注解
Spring MVC 它是Spring框架的一个子产品,它是一个典型的教科书式的mvc构架,而不像struts等都是变种或者不是完全基于MVC系统的框架,对于初学者或者想了解MVC的人来说我觉得 Spring是最好的,它的实现就是教科书,
	PS:spring mvc 希望用户在使用controller不再调用任何servlet里面的对象
		-->解耦方式(耦:耦合)
1.导入架包
	-->直接导入Spring的所有jar即可(因属于Spring的子产品,后面也会用到Spring)
	-->除Spring的架包,还需要导入commons-logging-1.1.1和标准标签库的包
2.添加Web.xml中关于SpringMVC的配置
	-->建议复制标准配置,然后修改即可
3.在src下添加springmvc.xml的配置
	-->建议复制标准配置,然后修改即可
4.创建普通类,添加控制器@Controller注解,并在方法添加@RequestMapping注解即可
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
spring mvc 知识体系
1.核心流程:浏览器-DispatcherServlet-HandlerMapping-HandlerAdapter-Controller-DispatcherServlet-ViewResoler-View-浏览器
	详解:
		-->1.浏览器 请求 DispatcherServlet(核心Servlet)
		-->2.DispatcherServlet 	调用 HandlerMapping(映射处理类)
		-->3.HandlerMapping 	调用 HandlerAdapter(处理适配器)
		-->4.HandlerAdapter 	分配 到指定的Controller
		-->5.Controller     	处理 完数据后返回到DispatcherServlet
		-->6.DispatcherServlet 	根据 Controller返回结果找到 ViewResoler视图解析器
		-->7.ViewResoler	找到 指定页面
2.请求映射@RequestMapping(value,method,params,headers)
	-->*所有,??两个字符,{userid}参数值
	-->@PathVariable("userid"):获取路由参数列表值
	-->@RequestParam(value,required,defaultValue)
		-->value	参数名
		-->required	是否为必须,默认true,必须有参数,无则抛异常
		-->defaultValue	默认值,有此属性则required=false
	-->@CookieValue("key")	获取Cookie值
		-->spring mvc 希望controller和servlet完全解耦,但 cookie解耦还不完善
	-->@RequestHeader("key")获取头文件值
	-->参数也支持 实体类,HttpServletRequest,HttpServletResponse

	-->ajax请求 使用@ResponseBody注解即可
	-->ajax乱码:produces="text/plain;charset=utf-8"
3.处理模型数据
	-->ModelAndView 	返回值类型,传递视图数据			可传参入UI,但必须作为返回值类型
	-->@ModelAttribute	参数类型,入参对象直接放入		可接收UI值(但仅限于对象),也可传参入UI(但仅限于对象)
		-->执行所有action之前调用的方法,一般用来初始化信息或者权限管理
	-->Map,Model,ModelMap	参数类型				可传参入UI,但必须作为参数传入
	-->@SessionAttributes	将模型中某个属性暂存到HttpSession中	
		-->只能在类上使用,不可在方法中使用
		-->通过model.addAttribute("session",值); 会在request和session里面同时存放值
		-->@SessionAttributes(value={"info"},types={Integer.class})	value:在Model存放相同名称或类型时会自动存放在session中
	-->重定向使用redirect:/index	转发使用forward:/index
4.Spring MVC数据校验
	-->@Pattern(regexp)	正则匹配	
	-->@Length(min,max)	字符长度区间限制
	-->@DecimalMin(value)	数据必须在指定值以上
	-->@DecimalMax(value)	数据必须在指定值以下
	-->@NotNull		不是空
	-->@Null		是空
	-->@NotEmpty		验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
	-->@Range(min=最小值, max=最大值)
	-->@NotBlank		验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,@NotBlank只应用于字符串且在比较时会去除字符串的空格
	-->@Email		验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式
	-->获取验证结果
		-->index(@Valid User user,[BindingResult br,Errors er]){br.hasErrors()}
		-->添加配置,启用验证注解
 
	-->在JSP页面显示错误信息
		-->1.<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
		-->2.
 
  
		-->3.如果需要使用JS验证,就不需要写自定义标签了
5.Spring表单标签
	-->1.引用标签声明	<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
	-->2.
  
    -->3.公共属性path 对象属性 -->4.<:input> 文本框 -->5.<:password> 密码框 -->6.<:hidden> 隐藏框 -->7.<:textarea> 多行输入框 -->8.<:radiobutton> 单选按钮 -->9.<:radiobuttons> 单选组 -->items List,String[],Map -->path 当前值,默认选中items中和[]path相同的 -->ps:如果是Map时,可指定 ItemValue,ItemLabel -->10.<:checkboxs> :复选框组,类似单选组 -->11.<:select> :下拉框组,类似单选组 -->12.<:option[s]> :下拉列表,下拉列表组,类似单选组 -->13.<:errors> : 6.文件上传 -->1.需要在配置文件加入 
    
     
     
     
    -->2.在控制其中使用 @RequestParam("file") MultipartFile file 作为参数 使用file.transferTo(new File("path")); 即可 -->3.必须在表单中加上
   
7.拦截器(过滤器) -->实现HandlerInterceptor类即可 -->preHandle 请求之前 -->postHandle 生成视图之前 -->afterCompletion 最后执行,一般用来释放资源 -->配置 配置文件
网友评论