Json
回顾:
1.把学校系统的前端升级了,把小脚本和表达式给替换了.
2.老师修改学生信息的功能,复用学生修改个人信息页面,在Servlet中根据身份来确定是 学生还老师修改功能.
3.老师添加学生信息的功能,复用注册页面,在后台根据session用户信息来确定是谁的添 加.
4.Servlet整合:将原来一个请求对应一个Servlet进行整合,将项目划分为多个模块,一个 模块一个Servlet,这个模块中所有请求都提交对应模块的Servlet.
方法:在请求时作标记的方式来告知Servlet怎样处理请求.
4.1:Get提交作标记的方式
表单的get提交:在表单中用隐藏域作标记
除了表单以外的get提交:url后面将标记作为参数拼接提交
4.2:post提交作标记的方式:在表单中用隐藏域作标记;在url后面将标记作为参数拼接提交.
解决:
传标记,判断标记再作处理.
总结:
用setAttribute(key,value)存到四大范围中的值,取出时如果没值就是null;所有表单元素(文本框,密码框,隐藏域)如果value没值默认是"",不是null.
解决web项目后台的bug的方法
1.Web项目,判断是否缓存问题,明明后台代码已经更改,但是它还是执行没有修改之前的 代码就是缓存.
2.用代码调试:在认为有问题的地方用System.out.println()来打印变量或其他值.
3.debug调试:
3.1:在认为有问题的java为中的地方设置断点;
3.2:选中项目名->右键debug as->debug on server->调试运行
3.3:从浏览器可以从默认页面开始运行到调试功能的地方,也可以自己输入url运行 调试了问题的地方,通过F6下一步调试运行或F5跳到方法中去执行,观察变量窗 体找到出错的地方.
解决Web项目前台的bug的方法
1.alert()弹出消息调试
2.浏览器debug调试:
2.1:在浏览器要调试的页面上->右键检查(f12)->Sources->选中调试的页面->在认 为有问题的代码旁设置断点->重新刷新当前页面启动调试->在界面上输入值- 执行到调试功能时就进行调试地方(高亮显示)->f11(跳入方法中执行)/f10(一 步一步往下执行)->找到出错的代码解决->取消断点.
JSON
1.Json:
JavaScript object notation的简称,js对象简谱,js的本地对象.
语法:
Json对象:var jsObject={“属性名1”:“值1”,“属性名2”:“值2”,“属性名3”:“值3”…};
Json数组:var jsArray=[{“属性名1”:“值1”,“属性名2”:“值2”},{“属性名1”:“值1”,
“属性名2”:“值2”}…];
2.Json的作用:
它是一种轻量级数据交换格式.它可以用来前后台来传递数据.
3.Json解析:
fastjson-1.1.22.jar
3.1:简单Json字符串与Json对象和Java对象三者之间的相互转换
eg:public static void main(String[] args) {
//准备一个json字符串
String s1="{'sname':'项超洋','sage':22}";
/*1.将普通Json字符串转换Json对象*/
JSONObject jsOb1=JSON.parseObject(s1);
//用json对象调用方法获得属性值
System.out.println("1.姓名:"+jsOb1.getString("sname")+",年龄:"+jsOb1.getInteger("sage"));
/*2.将普通Json字符串转换Java对象,前提条件:java类中属性名与Json字符串属性名一一对应*/
Student stu1=JSON.parseObject(s1, Student.class);
System.out.println(stu1.toString());
/*3.将Json对象转换为Java对象,前提条件:java类中属性名与Json对象的属性名一一对应*/
Student stu2=JSON.toJavaObject(jsOb1, Student.class);
System.out.println(stu2);
/*4.将Java对象转换为Json对象*/
JSONObject jsOb2=(JSONObject) JSON.toJSON(stu2);
System.out.println("4.姓名:"+jsOb2.getString("sname")+",年龄:"+jsOb2.getInteger("sage"));
//声明普通学生对象
Student stu3=new Student();
stu3.setSname("朱继发");
stu3.setSage(20);
//将java对象转换json对象,java对象有什么属性,转换json对象后,json对象就有与java对象对应的属性,这个属性是公有私有都可以.
JSONObject jsOb3=(JSONObject) JSON.toJSON(stu3);
System.out.println("5.姓名:"+jsOb3.getString("sname")+",年龄:"+jsOb3.getInteger("sage"));
/*将Java对象和Json对象转换Json字符串*/
String s2=JSON.toJSONString(jsOb3);
System.out.println(s2);
}
3.2:复杂Json字符串与Json对象和Java对象三者之间的相互转换
eg:public static void main(String[] args) {
//准备一个复杂json字符串
String s1="{'stuName':'吴慧贤','stuAge':22,'classObject':{'cid':'1901','cname':'NZjavaee'}}";
/*1.将复杂的Json字符串转换Json对象*/
JSONObject ob1=JSON.parseObject(s1);
//用json对象调用方法得到属性
System.out.println("1.姓名:"+ob1.getString("stuName")+",年龄:"+ob1.getInteger("stuAge"));
//用json对象得到班级对象属性,
JSONObject classOb1=ob1.getJSONObject("classObject");
//又因为班级对象也是一个json对象,可以用班级对象调用它的属性
System.out.println("班级编号:"+classOb1.getString("cid"));
System.out.println("班级名称:"+classOb1.getString("cname"));
/*2.将复杂的Json字符串转换java对象,前提:json字符串中属性与java类中属性一一对应*/
Student2 stu1=JSON.parseObject(s1, Student2.class);
System.out.println(stu1.toString());
/*3.将json对象转换java对象,前提:json对象的属性与java对象属性要一一对应*/
Student2 stu2=JSON.toJavaObject(ob1, Student2.class);
System.out.println(stu2);
/*4.将java对象转换json对象*/
JSONObject ob2=(JSONObject) JSON.toJSON(stu2);
//用json对象调用方法得到属性
System.out.println("2.姓名:"+ob2.getString("stuName")+",年龄:"+ob2.getInteger("stuAge"));
//用json对象得到班级对象属性,
JSONObject classOb2=ob2.getJSONObject("classObject");
//又因为班级对象也是一个json对象,可以用班级对象调用它的属性
System.out.println("班级编号:"+classOb2.getString("cid"));
System.out.println("班级名称:"+classOb2.getString("cname"));
/*5.将json对象和java对象转换Json字符串*/
String s2=JSON.toJSONString(stu2);
System.out.println(s2);
}
3.3:Json数组字符串与Json数组和Java集合三者之间的相互转换
eg:public static void main(String[] args) {
//准备Json数组字符串
String s1="[{'sname':'谢宇','sage':22},{'sname':'张煜','sage':30},{'sname':'高昂','sage':73}]";
/*1.将Json数组字符串转换Json数组*/
JSONArray array1=JSON.parseArray(s1);
//遍历Json数组
for (int i = 0; i < array1.size(); i++) {
//获得当前遍历json对象
JSONObject ob1=array1.getJSONObject(i);
//用对象调用属性输出
System.out.println("1姓名:"+ob1.getString("sname")+",年龄:"+ob1.getInteger("sage"));
}
/*2. 将Json数组字符串转换Java集合,前提:json数组中对象属性与java集合中每个对象的属性一一对应*/
List<Student> stulist1=JSON.parseArray(s1, Student.class);
for (Student stu : stulist1) {
System.out.println(stu);
}
/*3.将Java集合转换为Json数组*/
JSONArray array2=(JSONArray) JSON.toJSON(stulist1);
//遍历Json数组
for (int i = 0; i < array2.size(); i++) {
//获得当前遍历json对象
JSONObject ob1=array2.getJSONObject(i);
//用对象调用属性输出
System.out.println("3姓名:"+ob1.getString("sname")+",年龄:"+ob1.getInteger("sage"));
}
/*4.将Json数组转换java集合不能直接转换,只能间接转换,先Json数组转换为字符串,再将字符串转换为集合*/
String s2=JSON.toJSONString(array2);
List<Student> stulist2=JSON.parseArray(s2, Student.class);
for (Student stu : stulist2) {
System.out.println(stu);
}
/*将Json数组或Java集合转换为Json数组字符串*/
String s3=JSON.toJSONString(stulist2);
System.out.println(s3);
}