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中功能处理函数的代码
原创粉丝点击