SpringMVC【三】
来源:互联网 发布:虚拟炒股软件下载 编辑:程序博客网 时间:2024/05/16 17:42
Controller接收客户端传的参数 1、参数是基本数据类型/包装类型/String 注意参数名字要和客户端传的参数相同,否则要使用@RequestParam指定参数名 2、参数是数组类型 注意客户端传值类似于 name=tom&&name=lili 也可以使用json方式 3、参数是类类型 例如实体类User、Student 客户端传值类似于username=tom&&password=123&dob=2017-10-21 注:1、username/password/dob必须是存在的property 2、日期类型的转换 4、参数是类类型的数组 转json格式传 5、List/Set集合 如果是set集合,直接把List换成set即可, 6、Map集合 7、以上任何类型遇到特殊情况下,都可以使用自定义类型转换。 spring提供的转换器接口: public interface Converter<S, T> { T convert(S source); } 可以让我们把任意类型S转换为T类型,但是转换的代码需要我们来提供给spring 编写完成后需要在spring中注册,例如: <mvc:annotation-driven conversion-service="formatService"/> <bean name="formatService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <property name="converters"> <set> <!-- 自己编写的类型转换器,可以有多个 --> <bean class="com.briup.web.converter.StringToDateConverter"></bean> </set> </property> </bean>2、SpringMVC中的跳转 1、因为在Controller中的功能处理方法上可以获得到request和response,所以可以像之前的servlet中一样,进行服务器内部跳转和客户端重定向。 //服务器内部跳转到一个页面 //request.getRequestDispatcher("/WEB-INF/jsp/index.jsp").forward(request, response); //服务器内部跳转到一个功能处理方法 //request.getRequestDispatcher("/dispatcher/b").forward(request, response); //客户端重定向到另一个功能处理方法 response.sendRedirect(request.getContextPath()+"/dispatcher/b"); 2、Controller中也可以使用字符串表示服务器内部跳转和客户端重定向。 //服务器内部跳转到另一个功能处理方法 //return "forward:/dispatcher/b"; //客户端重定向到另一个功能处理方法 //return "redirect:/dispatcher/b"; //服务器内部跳转到一个页面 return "index"; 3、Controller中使用ModelAndView进行跳转和重定向 //服务器内部跳转到另一个功能处理方法 //ModelAndView mv = new ModelAndView("forward:/dispatcher/b"); //客户端重定向到另一个功能处理方法 //ModelAndView mv = new ModelAndView("redirect:/dispatcher/b"); //服务器内部跳转到一个页面 ModelAndView mv = new ModelAndView("index"); 3、SpringMVC中的数据校验 通常在项目中使用较多的是前段校验,比如页面中js校验。对于安全要求较高的建议在服务端同时校验。 SpringMVC使用Hibernate的实现的校验框架volidation所以需要导入相关依赖的jar包。 数据校验之后,如果有错误信息,那么需要使用Spring提供的标签库中的标签在页面中显示校验信息。 注意: 1.需要访问一个Controller再跳转这个页面,同时需要向模型中添加一个名字叫user的对象,这就是之前说的命令/表单对象,否则跳转到这个页面的时候会报错 2、表单中没有这种action属性值,那么默认把数据提交给当前页面,但是提交方式是post 3、input标签中的path属性的值对应的是表单对象中的属性 4、Controller中映射的url为:/Valid/add,如果是get方式访问这个url那么把valid.jsp显示给用户,如果是post访问这个url,就表示要提交表单的数据。 5、在Controller中,需要验证的额参数前面加入@Valid注解 6、方法参数列表中,加入BindingResult对象,用来接收验证的错误信息,并根据这个进行不同情况的跳转 7、在被验证的表单对象所属类中,给需要验证的属性上加入指定注解。 常用的数据校验的注解 @Null 值只能为null @NotNull 值不能为null @NotEmpty 值不为null且不为空 @NotBlank 值不为null且不为空(先去除首尾空格) @Pattern 正则表达式验证 @Size 限制长度在x和y之间 @Max 最大值 @Min 最小值 @Future 必须是一个将来的日期(和现在比) @Past 必须是一个过去的日期(和现在比) @Email 校验email格式 注意:日期属性上要加@DateTimeFormat(pattern="yyyy-MM-dd"),否则页面传的字符串是不能自动转为为日期的 4、SpringMVC中的异常处理 在SpringMVC中可以把异常统一进行处理, <!--Spring提供的默认的异常解析器,也可以自定义--> <!--可以在jsp目录下新建一个error目录,然后放入显示错误页面--> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <!--定义异常处理页面用来获取异常信息的变量名,默认为exception--> <propertu name="execeptionAttribute" value="ex"></property> <!--定义需要特殊处理的异常,用简单类名或权限类名作为key,异常页面的逻辑视图名作为value--> <property name="exceptionMappings"> <props> <prop key="IOException">error/error_io</prop> <prop key="java.sql.SQLException">error/error_sql</prop> </props> </property> </bean> 页面中: 1.如果使用jsp的脚本显示信息 <!-- 因为spring中修改了异常的默认名字,所以这里是ex --> <% Exception ex = (Exception)request.getAttribute("ex"); %> <H2>Exception: <%= ex.getMessage()%></H2> <P/> <% ex.printStackTrace(new java.io.PrintWriter(out)); %> 2.如果是EL显示错误信息 <div>${ex }</div> <div>${ex.message }</div>5、SpringMVC中上传 使用上传功能需要两个包 commons-fileupload-1.2.2.jar commons-io-2.0.1.jar 利用spring中提供的MultipartFile接口实现上传功能,MultipartFile中重要方法 getName 获取表单中文件组件名字(上传框的名字) getOriginalFilename:获取上传文件的原名(上传文件名字) transferTo(FilenewFile)把上传文件转存到指定文件中(把上传的文件写入到一个指定位置) spring配置文件中加入以下配置: <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <!-- 注意:bean的名字不要改,一定要叫multipartResolver --> <bean name="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8"/> <!-- 指定所上传文件的总大小不能超过指定字节大小 --> <property name="maxUploadSize" value="20000000"/> </bean>6、SpringMVC中下载 springMVC的下载只需要自己设置response信息中的各个部分就可以,可以使用之前使用过的responseEntity<T>来完成7.ajax上传文件 在上面普通上传的例子中进行修改即可 1)spring中配置上传的解析器 2)页面中引入jquery以及ajax上传的插件 ajax上传的插件有很多,这里使用的一个插件为:ajaxfileupload.js 3)jsp页面代码及其对应js代码 4)Controller中功能处理函数的代码
阅读全文
0 0
- springMVC三
- SpringMvc(三)
- SpringMVC【三】
- springMVC入门(三)
- SpringMVC学习笔记三
- SpringMVC学习总结(三)
- SpringMVC-基础知识点(三)
- SpringMVC学习(三)
- SpringMVC(三)
- springMVC实例(三)
- springMVC (三) HandlerAdapter
- 小结SpringMVC(三)
- SpringMVC(三)DispatcherServlet
- SpringMVC深入三
- SpringMVC进阶(三)
- SpringMVC(三)HiddenHttpMethodFilter
- SpringMVC数据校验(三)
- 三.SpringMVC 数据校验
- 智能音箱大战全面开火,那么问题来了:如何成为一名全栈语音识别工程师?
- Python 3 尴尬了这么久,终于有救了
- Class Confidence Proportion---不平衡数据集的决策树算法
- Win7下Apache2.4-win64的安装和配置以及启动服务
- 对指针的一些深入理解
- SpringMVC【三】
- django-simple-captcha==0.4.6 验证码插件使用方法
- json、jsonp、jsonp跨域
- 建立非门
- Kafka的文件存储机制
- Dilated Residual Networks
- Go游戏服务器开发的一些思考(二十六):Go Redis ORM库
- Java修饰符指代的访问权限
- java 自我知识总结 (十九)lamdba表达式和内部类