您的位置:首页 > Web前端 > JavaScript

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);
}
}

}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
qq_42758008 发布了3 篇原创文章 · 获赞 0 · 访问量 26 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: