SpringMvc(2)
(1)接收的参数为日期类型
使用Controller注解的类在接收参数时如果参数为时间类型的参数时会报错:表示请求的参数有问题
解决方法(1):在对应的Controller类中加入如下代码 表示:当接收的参数为日期类型时先经过该方法进行处理。适合接收单个日期参数
@InitBinder public void initBinder(ServletRequestDataBinder binder){ //只要网页中传来的数据格式为yyyy-MM-dd 就会转化为Date类型 binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),//模式可以更改 true)); }
解决方案(2):当接收的参数比较多时(接收的是一个对象)
@RequestMapping("/list.do") public String list(User user) { System.out.println(user); return "index"; }
参数有上图几个,这时为了避免报错400,我们可以在该实体类的Date属性中加入@DateTimeFormat(pattern="yyyy-MM-dd")注解 适合用于实体类中
(2)controller 进行数据保存
2.1 数据保存到request作用域的方式.
1. 使用ModelAndView,那么该方法的返回类型必须是ModelAndView
package com.zhiyou100.ydb.controller; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.ServletRequestDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.SessionAttributes; import org.springframework.web.servlet.ModelAndView; import com.zhiyou100.ydb.bean.User; @Controller @RequestMapping("/user") @SessionAttributes(names={"name"}) public class UserController { // 使用ModelAndView 将数据保存到request @RequestMapping("/mod.do") public ModelAndView Mod() { ModelAndView mv =new ModelAndView("index"); mv.addObject("name", "张三"); return mv; } }
测试:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> ${requestScope.name } <img src="/springmvc-03/img/1.jpeg" height="700px"> </body> </html>
2. 使用Model, 方法的返回值还是字符串类型。
package com.zhiyou100.ydb.controller; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.ServletRequestDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.SessionAttributes; import org.springframework.web.servlet.ModelAndView; import com.zhiyou100.ydb.bean.User; @Controller @RequestMapping("/user") @SessionAttributes(names={"name"}) public class UserController { // 使用Model 将数据保存到request @RequestMapping("/mode.do") public String Mode(Model mdoel) { mdoel.addAttribute("name", "李四");
return "index"; } }
测试
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> ${requestScope.name } <img src="/springmvc-03/img/1.jpeg" height="700px"> </body> </html>
3. 使用Map.方法的返回值还是字符串类型。
package com.zhiyou100.ydb.controller; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.ServletRequestDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.SessionAttributes; import org.springframework.web.servlet.ModelAndView; import com.zhiyou100.ydb.bean.User; @Controller @RequestMapping("/user") @SessionAttributes(names={"name"}) public class UserController { // 使用Map 将数据保存到request @RequestMapping("map.do") public String Setmap(Map<String, Object> map) { map.put("name", "王五"); return "index"; } }
测试
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> ${requestScope.name } <img src="/springmvc-03/img/1.jpeg" height="700px"> </body> </html>
4. 原始的HttpServletRequest对象保存
package com.zhiyou100.ydb.controller; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.ServletRequestDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.SessionAttributes; import org.springframework.web.servlet.ModelAndView; import com.zhiyou100.ydb.bean.User; @Controller @RequestMapping("/user") @SessionAttributes(names={"name"}) public class UserController { // 使用原始 HttpServletRequest 将数据保存到request @RequestMapping("req.do") public String Setmap(HttpServletRequest request) { request.setAttribute("name", "刘六"); return "index"; } }
测试:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> ${requestScope.name } <img src="/springmvc-03/img/1.jpeg" height="700px"> </body> </html>
2.2数据保存到session作用域的方式.
- 使用原始的HttpSession保存。
package com.zhiyou100.ydb.controller; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.ServletRequestDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.SessionAttributes; import org.springframework.web.servlet.ModelAndView; import com.zhiyou100.ydb.bean.User; @Controller @RequestMapping("/user") @SessionAttributes(names={"name"}) public class UserController { // 使用原始 HttpSession 将数据保存到Session @RequestMapping("ses.do") public String Setmap(HttpSession session) { session.setAttribute("name", "赵七"); return "index"; } }
测试:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> ${sessionScope.name } <img src="/springmvc-03/img/1.jpeg" height="700px"> </body> </html>
2.使用注解@SessionAttributes(name={key1,key2})
package com.zhiyou100.ydb.controller; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.ServletRequestDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.SessionAttributes; import org.springframework.web.servlet.ModelAndView; import com.zhiyou100.ydb.bean.User; @Controller @RequestMapping("/user") @SessionAttributes(names={"name"})//键名叫:name的保存的作用域为session public class UserController { // 使用注解 将数据保存到request @RequestMapping("/sess.do") public String Mode(Model mdoel) { mdoel.addAttribute("name", "李四"); return "index"; } }
测试:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> ${sessionScope.name } <img src="/springmvc-03/img/1.jpeg" height="700px"> </body> </html>
2.3保存到application中
package com.zhiyou100.ydb.controller; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.ServletRequestDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.SessionAttributes; import org.springframework.web.servlet.ModelAndView; import com.zhiyou100.ydb.bean.User; @Controller @RequestMapping("/user") @SessionAttributes(names={"name"}) public class UserController { // 使用Model 将数据保存到request @RequestMapping("/mode.do") public String Mode(Model mdoel,HttpSession session) { mdoel.addAttribute("name", "李四"); session.getServletContext().setAttribute("name","我在application中") return "index"; } }
测试:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> ${applicationScope.name } <img src="/springmvc-03/img/1.jpeg" height="700px"> </body> </html>
因为RequestMapping注解下的方法 返回的默认为请求转发 如何让其变成重定向呢?
解决方案 :加入redirect:
(3)静态资源的映射关系
当我们在jsp文件中引入img 图片,在用浏览器运行会出现找不到图片现象
1.首先配置任何请求都要经过DispatcherServlet
2.这时就需要使用静态资源映射 在springmvc的配置文件中添加
(4)Springmvc完成ajax功能
1.加入Jackson的jar包 和 jquery jar包
2.引入js
3.在响应的方法上加 @ResponseBody : 表示把Java对象转化为json对象
@RequestMapping("Ajax1") @ResponseBody public String ajax1(String name) { System.out.println(name); return "你好"; }
4.编写ajax方法
5.方法的返回类型可以是字符串 ,对象 , 集合
package com.zhiyou100.ydb.controller; import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.zhiyou100.ydb.bean.User; @Controller @RequestMapping(value="ajax", produces = "text/plain;charset=UTF-8") public class AjaxController { @RequestMapping("Ajax1") @ResponseBody public String ajax1(String name) { System.out.println(name); return "你好"; } @RequestMapping("Ajax2") @ResponseBody public User ajax2(String name) { User user = new User("张三",10); return user; } @RequestMapping("Ajax3") @ResponseBody public List<User> ajax3(String name) { User user1 = new User("张三",10); User user2 = new User("李四",10); User user3 = new User("王五",10); User user4 = new User("刘六",10); User user5 = new User("赵七",10); List<User> list = new ArrayList<>(); list.add(user1); list.add(user2); list.add(user3); list.add(user4); list.add(user5); return list; } }
(注意:)如果ajax返回的为字符串,那么就会出现乱码
因为在spring-webmvc 源码中返回的是字符串默认的格式是ISO--1
解决方案(1):在springmvc 映射文件中加入
解决方案(2):在RequestMapping的属性中添加返回数据类型属性 produces = "text/plain;charset=UTF-8"
原文地址:https://www.cnblogs.com/Kuriyama-Mirai/p/11455767.html
- 1宽币=883?山本宽称要发行自己的数字货币
- 十种深度学习算法要点及代码解析
- 王健林旗下万达网科被曝大裁员 总裁出面说话了
- lodash源码分析之缓存方式的选择
- 《物联网智能终端信息安全白皮书》发布
- SemCmsv2_4 Function_php文件过滤不严导致Sql注入
- Python为什么这么火?聆听Python之父诠释Python的精神和文化
- 阿里程序员2017年终总结:web前端最有效学习方法!让你少走弯路
- 《关于深化“互联网+先进制造业”发展工业互联网的指导意见》的系列解读 解读二:打造平台体系
- 2018最火的AI丶云计算丶大数据丶物联网丶量子计算五大热门之间的关系
- 人工智能或能帮助揭示永葆青春的秘密 寻减缓衰老药物
- 近百万的“荣耀”域名遭仲裁 两个终端的对决
- IT专业人员如何看待软件定义的数据中心市场
- 安正平:网络隐私保护不能止于关闭直播平台
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Maven系列第二讲 安装、配置、mvn运行过程详解
- Maven第六讲 生命周期详解 高手必备!
- 鸿蒙 Ability 讲解(页面生命周期、后台服务、数据访问)
- Maven 项目第七讲 Maven插件
- weblogic Schema validation schemaValidationEnabled=false 启动报错解决
- redis 反序列化deserialize异常问题解决
- redis 入门(二)——maven4.0 + Jedis2.9.0 + redis3.2.6 实战
- spring boot 启动报错Log4j2 could not find a logging implementation 解决
- spring boot 启动 NoClassDefFoundError: org/springframework/core/ErrorCoded 报错
- java.lang.NoSuchMethodError: org.springframework.core.ResolvableType.forInstance 错误解决
- spring boot启动 no method 'getPersistenceUtil'报错解决
- spring redis java.lang.IllegalStateException: Cannot load configuration class: redis.RedisTemplet报错
- Elasticsearch: Index template
- 基于rest风格对Neo4j进行调用访问之———httpClient
- spring boot + mybatis 访问 neo4j