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进行校验,如果出出错信息展示到页面
配置校验器:validatior
在springmvc.xml中添加<bean id="validation">
注入到处理器适配器中: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类型解析器
(2)在编译器配置虚拟目录:
(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)准备:
在注解适配器中加入messageConverters