博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springmvc小结(下)
阅读量:7282 次
发布时间:2019-06-30

本文共 6161 字,大约阅读时间需要 20 分钟。

1.@ModelAttribute

1.给共享的数据设置model数据设置,贴在形参上,也可以贴在方法上,设置一个model的key值
2.当controller方法返回一个对象的时候,,缺省值会把当前请求的url作为逻辑视图名称,共享返回对象

 

2.多个对象的传递

//自定义属性注解,用于请求参数转移到对应的对象参数中去     //把一dog.开头的参数封装到dog中     @InitBinder("dog")     public void initBing(WebDataBinder binder){           binder.setFieldDefaultPrefix("dog.");     }          @InitBinder("cat")     public void initBing1(WebDataBinder binder){           binder.setFieldDefaultPrefix("cat.");     }          @RequestMapping("/testmany")     public String test(Cat cat,Dog dog){                      System.out.println(cat);           System.out.println(dog);           return null;     }
catName:
catAge:
DogName:
DogAge:

处理不同的数据可以传递到不同的pojo实现类中。

 

3.处理json

①.单个对象

//@ResponseBody     //处理响应,把对象转为json字符串     //贴在方法上,只针对当前的方法做json处理     //在类上会对当前类的所有方法做json处理          //把单个对象转为json     @RequestMapping("/user1")     @ResponseBody     public User user1(){           User u = new User();           u.setName("MrChegns");           u.setAge(12);           return u;     }

 

②.多个对象

//多个对象          @RequestMapping("/user2")     @ResponseBody     public List
user2(){ List
users = new ArrayList<>(); User u1 = new User("MrChengs",12); User u2 = new User("MrChengs",13); users.add(u1); users.add(u2); return users; }

 注意://返回一个String,把返回的字符串不会当作物理逻辑返回 ,当作json

@RequestMapping(value="/test1",produces=MediaType.APPLICATION_JSON_VALUE)     @ResponseBody     public String test1(){           return "success“;     }

 

4.日期处理

//把请求参数封装成Date字符串     //前台向后台传数据     @RequestMapping("/test1")     public ModelAndView  test(@DateTimeFormat(pattern="yyyy-MM-dd")Date d){           System.out.println(d);           return null;     }

  

 time时的Date类型:

@InitBinder     public void initBind(WebDataBinder binder){           SimpleDateFormat sdf = new SimpleDateFormat();           sdf.applyPattern("yyyy-MM-dd");           binder.registerCustomEditor(java.util.Date.class, new  CustomDateEditor(sdf, true));     }     @RequestMapping("/test2")     public ModelAndView dates(User u){           System.out.println(u);           return null;     }

 

 

配置全局可以使用
新建类:
这个类需要加入到spring容器
@ControllerAdvicepublic class DateformateConfig {     @InitBinder     public void initBind(WebDataBinder binder){           SimpleDateFormat sdf = new SimpleDateFormat();           sdf.applyPattern("yyyy-MM-dd");           binder.registerCustomEditor(java.util.Date.class, new  CustomDateEditor(sdf, true));     }}
@RequestMapping("/test2")     public ModelAndView dates(User u){           System.out.println(u);           return null;     }

得到结果不变

 

jsp页面处理:

 

 后台向前台

public class User {     private String name;     private int age;     //东八区     @JsonFormat(pattern="yyyy-MM-dd  HH:mm:ss",timezone="GMT+8")     private Date time;     ....}
@RequestMapping("/test4")     @ResponseBody     public User user12(){           User u = new User();           u.setAge(12);           u.setName("Mrcheng");           u.setTime(new Date());           return u;     }

 

 

 

 5.拦截器

 

配置

 

 实现类登陆拦截

public class LoginCheckInterceptor implements  HandlerInterceptor{     //登陆判断     @Override     public boolean preHandle(HttpServletRequest request,  HttpServletResponse response, Object handler)                throws Exception {                           if(request.getSession() == null){                     response.sendRedirect(request.getContextPath()+ "/login.jsp");                     return false;                }           return true;     }     @Override     public void postHandle(HttpServletRequest request,  HttpServletResponse response, Object handler,                ModelAndView modelAndView) throws Exception {     }     @Override     public void afterCompletion(HttpServletRequest request,  HttpServletResponse response, Object handler, Exception ex)                throws Exception {     }}

  

 6.异常处理:

①.全局:
springmvc.xml
value的值也是根据逻辑视图的转换来的
//设置错误的默认视图

 

 错误的提示页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8" isErrorPage="true"%>
Insert title hereerror:<%=exception.getMessage() %>

 

 错误页面获取异常信息的变量名称

 

 根据不同类型的异常配置不同的异常

  

 

 7.数据校验

 

 

springmvc.xml中

pojo中

public class User {     private int id;          @NotNull(message="username 不可以为空")     private String username;          @Size(max=5,min=1,message="密码大于1小于5")     private String password; ... }

 

controller类上
BindingResult  必须在 @Valid之后
@RequestMapping("/insertuser")     public String Users(@Valid User user,BindingResult  bindingResult,Model model) throws Exception{                List
es = bindingResult.getAllErrors(); if(es.size() > 0){ model.addAttribute("es", es); return "/insert"; } System.out.println("hellouser"); System.out.println(user); UserMapper um = (UserMapper) getContext().getBean("userMapper"); um.addUser(user); return "redirect:/select/selectall"; }

  

 jsp页面上

${e.defaultMessage}

 

 

更多的可以从参考网上的更多教程.......

 

 8.文件上传

 

1.apache版本
id是固定的
springmvc.xml

 

 jsp页面

name:
file:

  

 controller

@Controllerpublic class FileUpLoad {          @Autowired     private ServletContext servletContext;          @RequestMapping("/upload")     public ModelAndView upload(User user,MultipartFile pic)  throws IOException{           System.out.println(user);           String fileName = pic.getOriginalFilename();           System.out.println(fileName);           String dir = servletContext.getRealPath("/photo");           Files.copy(pic.getInputStream(),Paths.get(dir,  fileName));           return null;     }}

两个同名pic位置  

基本上总结到此结束了.....

转载于:https://www.cnblogs.com/Mrchengs/p/9974237.html

你可能感兴趣的文章
MS UC 2013-0-虚拟机-标准化-部署-2-模板机-制作-2-设置-虚拟机
查看>>
KVM虚拟化性能优化
查看>>
Rsync、Unison及DRBD的比较
查看>>
SecureCRT中文显示乱码
查看>>
JavaScript 中 arguments,callee,caller,arguments[0] 的理解
查看>>
Lua4.0 编译器其它
查看>>
常回“家”看看
查看>>
EL 运算符——小记
查看>>
slf4j查看
查看>>
Java算法之 费氏搜寻法
查看>>
Struts2笔记——11.文件下载
查看>>
利用反射机制查询数据库内数据,数据库内数据库类型为类型时
查看>>
在 .NET Core 中的并发编程
查看>>
jQuery从无知到无所不知
查看>>
运维学习之网络管理&IP设置&网关、DNS、DHCP的设置
查看>>
宝德网络公司与江西科技师范大学合作签约授牌
查看>>
第二节 表操作及约束
查看>>
Linux运维之道之网络基础学习1.1
查看>>
数据结构--数组类实现
查看>>
mongo3 安装
查看>>