Json部分学习笔记&&二级联查&&解决字符乱码问题
2020-02-16 17:59
435 查看
JSON学习笔记
1.概念:一种轻量级的数据交互格式,具有良好的可读和便于快速编写的特性。多用于存储和交换文本信息的语法,进行数据的传输。 JSON 比 XML 更小、更快、更易解析。 var p = {"name":"张三","age":23,"gender":"男"}; 2.语法基本规则 * 数据在名称/值对中:json数据是由键值对构成的 * 键用引号(单双都行)引起来,也可以不使用引号 * 值得取值类型: 1. 数字(整数或浮点数) 2. 字符串(在双引号中) 3. 逻辑值(true 或 false) 4. 数组(在方括号中) {"persons":[{},{}]} 5. 对象(在花括号中) {"address":{"province":"陕西"....}} 6. null 3. JSON数据和Java对象的相互转换 1. JSON转为Java对象 1. 导入jackson的相关jar包 2. 创建Jackson核心对象 ObjectMapper 3. 调用ObjectMapper的相关方法进行转换 1. readValue(json字符串数据,Class) 2. Java对象转换JSON 1. 使用步骤: * 导入jackson的相关jar包 * 创建Jackson核心对象 ObjectMapper * 调用ObjectMapper的相关方法进行转换 * 2. 转换方法: * writeValue(参数1,obj) * writeValueAsString(obj):将对象转为json字符串 3. 注解: 1. @JsonIgnore:排除属性。 2. @JsonFormat:属性值得格式化 @JsonFormat(pattern = "yyyy-MM-dd")
4. JSON 遍历 //1.定义基本格式 var person = {"name": "张三", age: 23, 'gender': true}; var ps = [{"name": "张三", "age": 23, "gender": true}, {"name": "李四", "age": 24, "gender": true}, {"name": "王五", "age": 25, "gender": false}]; //获取person对象中所有的键和值 //for in 循环 /* for(var key in person){ //这样的方式获取不行。因为相当于 person."name" //alert(key + ":" + person.key); alert(key+":"+person[key]); }*/ //获取ps中的所有值 for (var i = 0; i < ps.length; i++) { var p = ps[i]; for(var key in p){ alert(key+":"+p[key]); } }
二级联查
1.创建Dept、Employee类的属性 2.创建DeptDao、EmployeeDao接口,并写抽象方法 //DeptDao接口 package com.aku.dao; import java.util.List; import com.aki.beans.Dept; public interface DeptDao { List<Dept> selectAll(); Dept selectById(int deptid); int addDept(Dept dept); } //EmployeeDao接口 package com.aku.dao; import java.util.List; import com.aki.beans.Employee; public interface EmployeeDao { List<Employee> selectAll(int deptid); } 3.创建DeptDaoImpl、EmployeeDaoImpl类并继承接口 //DeptDaoImpl实现类 public class DeptDaoImpl implements DeptDao { Connection con = JdbcUtils.getConnection(); QueryRunner runner = new QueryRunner(); public List<Dept> selectAll() { List<Dept> list = null; try { list = runner.query(con, "select * from dept",new BeanListHandler<Dept>(Dept.class)); } catch (SQLException e) { e.printStackTrace(); } return list; } public Dept selectById(int deptid) { Dept dept = null; try { dept = runner.query(con, "select * from dept where deptid = ?",new BeanHandler<Dept>(Dept.class),deptid); } catch (SQLException e) { e.printStackTrace(); } return dept; } public int addDept(Dept dept) { int update = 0; try { update = runner.update(con,"insert into dept (deptname) values(?)",dept.getDeptname()); } catch (SQLException e) { e.printStackTrace(); } return update; } } //EmployeeDaoImpl实现类 public class EmployeeDaoImpl implements EmployeeDao { Connection con = JdbcUtils.getConnection(); QueryRunner runner = new QueryRunner(); @Override public List<Employee> selectAll(int deptid) { List<Employee> list = null; try { list = runner.query(con, "select * from employee where deptid=?", new BeanListHandler<Employee>(Employee.class),deptid); } catch (SQLException e) { e.printStackTrace(); } return list; } }
解决字符乱码问题
package com.yunjin.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.yunjian.utils.MyHttpRequest; @WebFilter("/*") public class UnicodeFilter implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("--------------Filter----------------------"); HttpServletRequest req = (HttpServletRequest)request; HttpServletResponse resp = (HttpServletResponse)response; MyHttpRequest myRequest = new MyHttpRequest(req); //只能处理post 请求的中文乱码 req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); chain.doFilter(myRequest, resp); } @Override public void init(FilterConfig arg0) throws ServletException { } } package com.yunjian.utils; import java.io.UnsupportedEncodingException; import java.util.Enumeration; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; /*** * 这是一个HttpreRuest 的增强类 * 我们不需要去重写request中的所有方法,只需要去重写哪一个是我们需要的方法就可以了。 * @author chanh * */ public class MyHttpRequest extends HttpServletRequestWrapper{ public MyHttpRequest(HttpServletRequest request) { super(request); //Iterator Enumeration<String> parameterNames = request.getParameterNames(); while(parameterNames.hasMoreElements()) { String name = parameterNames.nextElement(); String value = request.getParameter(name); System.out.println("value:"+value); //获取参数的值进行中文处理 String newValue =""; try { newValue = new String(value.getBytes("utf-8"),"utf-8"); System.out.println("newValue:"+newValue); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } request.setAttribute(name, newValue); } } }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- js的一些进阶知识
- JavaScript简介
- json格式转换
- 完美extjs教程
- 源生JS、canvas画图,支持拖拽
- JSP数据交互
- JS 实现元素颜色跟随滚动条变化
- JavaScript声明全局变量三种方式的异同
- javascript 获取URL各个部分的功能
- 简单的选项卡(html + css + js)
- JS使图片在图片框中自适应,按比例缩放
- JS简易拖拽效果
- Js中 关于top、clientTop、scrollTop、offsetTop的用法
- js日期的常用操作
- JS实现以日历形式显示当前时间
- 完整显示当前日期和时间的JS代码(2007年2月25日星期日正午12:42:48)
- JS左侧菜单-04
- JS关闭当前页面的方法
- C#代码和javascript函数相互调用
- JavaScript学习笔记