springmvc第二天学习

一:通过商品的修改功能学习springmvc的注解开发

需求:点击修改按钮,进入修改页面,页面显示了要修改的商品信息(要修改的商品从数据库中查询,根据主键),修改商品后点击提交到数据库(update)

  步骤

(1)开发mapper :

        (1)  mapper功能:根据id查询商品的信息,根据id更新商品表数据

         (2) 一般反向映射自动生成了,

(2)开发service:

       接口功能:根据id查询商品的信息,修改商品信息

(3)开发controller、

    方法:信息页面修改展示方法,商品信息修改提交

  一  注解

((1)@RequestMapping :定义controller方法对应的url,进行处理器映射使用。

 1)窄化请求映射 @RequestMapping (/。。。。)

放在类名上设置请求前缀。放在方法名上设置请求映射url

 2)设置http请求:对http方法限制

   @RequestMapping (value=”/,,“,method={Request Method。Post})

((2)controller方法的返回值

1)返回ModelAndView:方法结束时定义ModelAndView,将modle和view分别设置

2)返回string:

    a:返回逻辑视图名:真正的视图(jsp路径)=前缀+逻辑视图名+后缀

   b:重定向:redirect:。。。。(重定向到商品查询列表);浏览器url变化

    c:转发:forward:浏览器url变化

             HttpServletRequest request

      request。getParamter()

3)返回void 

  在controller 方法形参上可以定义request 和response,使用request 或response 指定响应结果:
1、使用request转向页面,如下:。
request.getRequestDispatcher页面路径").forward(request,response);e
2、也可以通过response页面重定向:.response.sendRedirectur
3、也可以通过response指定响应结果,例如响应json数据如下:。response.setCharacterEncoding("utf-8);4
response.setContentType("application json;charset=utf-8"):response.getWriter().write("json 串”);


二参数绑定:

(1)从客户端请求key-value数据,经过参数绑定将数据绑定controller方法形参。(处理器适配器调用springmvc提供参数绑定组件将key/value数据转成controller方法的形参)

springmvc中,接收页面提交的数据是通过形参接收,而不是在conteoller方法中定义成员变量来接收。

(2)默认支持类型:HttpServletRequest,HttpServletResponse,HttpSession ,Model/MedelMap

                      简单数据类型

(3)简单数据进行绑定:

     方法参数中放入RequestParam注解

@RequestParam:对简单数据进行绑定,如果不使用,要求request传入参数名和controller的形参一致

                          (value,defultvalue:默认值)

(4)绑定pojo:页面中input的name和controller和pojo形参的属性名一致 将页面数据绑定到pojo

(5)自定义参数绑定:

   实现日期类型转换。将日期数据传转换成日期数据类型。

 需要向处理器适配器中注入自定义的参数绑定组件。在xml中的<mvc:annotation-driver conversion-service="">调用转换器</><bean  id="conversionService=""">定义转换器</bean>

(6)包装类型参数绑定

 (7)数组参数绑定

 (8)list,绑定

 (9)map绑定


三:校验validation

页面提交请求的参数,请求到controller方法中,使用validation进行校验,如果出出错信息展示到页面

springmvc第二天学习

配置校验器:validatior

    在springmvc.xml中添加<bean id="validation">

springmvc第二天学习


注入到处理器适配器中:mvc注解驱动

添加校验规则:在pojo中:

  @size  @notnull  等等等

在controller中 配置:形参

    在要校验的pojo前添加 @Validated,在要校验的pojo后面添加BindingResuil bindingResult接收校验出错信息




分组校验

value={ValidGroup1.class}


(四)数据回显:

 提交之后,将刚才的数据显示到提交页面;

springmvc默认对pojo数据进行回显


@ModeleAttribute("")将""返回值放在request的key中



(五)异常


(六)上传图片 ;

(1)在form中提交 enctype="multipart/form-data"时,需要springmvc对multipart类型数据进行解析。

在springmvc.xml文件中配置multipart类型解析器

springmvc第二天学习

(2)在编译器配置虚拟目录:

springmvc第二天学习


springmvc第二天学习

(3)加jar:jar包是commons-fileupload-1.2.2.jar  和commons-io-2.4.jar


(4)controller改代码:

  参数绑定:MultipartFile itpic

上传图片:

//获得原始图片名称

String originalFilename=itpic.getOriginalFilename();

 if(itpc!=null&&originalFilename!=null&&originalFilename.length()>0){

    //存储图片的物理路径

  String pic_path="F:\\develop\upload\temp";\

//得到新的图片名称

String  newFilename=UUID.randomUUID()+originalFilename.substring(originalFilename.lastIndexOf("."));

//新的图片

File newfile= new File(pic_path+newFilename);

//将内存中的数据写入磁盘

itpic.transferTo(newFile);

//将新的图片名称写入发到itemsCustom(项目的扩展类)中

itemsCustom.setPic(newFileName);

}


上传图片的名字控件:<input type="file" name="itpic">  进行参数绑定 name的名字要是一样的




(七)json交互

json数据格式在接口调用和html页面较为常用,解析比较方便。

(1)RequestBody和ResponseBody

请求key/value,输出json

(2)准备:

springmvc第二天学习

在注解适配器中加入messageConverters

springmvc第二天学习