java web 第一阶段_javaweb 复习第一阶段:javase

第一章

1:   junit

函数前添加@Test 测试环境junit测试类

函数前添加@Before或@After 在测试前后先执行类 例:public void before(){}

函数前添加@BeforeClass 或@AfterClass   Public static void beforeClass(){}

Junit中assert//断言 判断两个对象是否相等

DAY2:     jdk1.5之后新特性

List list = new ArraysList();

List.add(1);

List.add(2);

Iterator it = list.iterator();

While(it.hasNext()){

Int k = (Integer)It.next(); //拆箱

}

2:增强for循环:只能用在数组或实现Iterable接口的集合类上

public void test(){

Map map = new LinkedHashMap();//顺序输出

map.add(“1”,”aaa”);

map.add(“2”,”bbb”);

//传统方式1

Set set = map.keySet();

Iterator it = set.iterator();

while(it.hasNext()){

String key = (String)it.next();

String value = (String)map.get(key);

}

//传统方式2

Set set = map.entrySet();

Iterator it = set.iterator();

while(it.hasNext()){

Map.entry entry = (Entry) it.next();

String key = (String) entry.getKey();

String value = (Sting)entry.getValue();

}

//增强for循环

for(Object oj : map.keySet()){

String key = (String) oj.next();

String value = (value)map.get(key);

}

}

可变参数

int num={1,2,3,4,5}

List list =Arrays.asList (num)

syso(list);      //输出arrys

integer num={1,2,3,4,5}

List list =Arrays.asList (num)

syso(list);      //输出1,2,3,4

3:枚举

枚举的构造函数必须是私有的

定义枚举的构造函数、方法和字段去封装信息

enum Grade{       //相当于定义一个class提供特定的几个对象

A(“100-90”){

public String localeValue(){

return “优”;

}

}

,B(“90-80”){

public String localeValue(){

return “良”;

}

}

,C(“80-70”){

public String localeValue(){

return “一般”;

}

}

,D(“70-60”){

public String localeValue(){

return “不及”;

}

}

,E(“59-0”){

public String localeValue(){

return “很差”;

}

};

String value= null;

private void setValue(String value){

this.value = value;

}

public String getValue(){

return this.value;

}

public abstract String localeValue();

}

4单态设计模式=枚举类只含有一个值

将字符串转换成枚举类型,valueof:应用在用户提交表单,男或女

Grade g; g.values();//此方法在jdk中查找不到,返回所有的枚举值

5反射:应用在制作框架上

加载类,并解剖出各个组成成分

反射类,加载类的字节码

法一:Class clazz = Class.forName(“cn.itcast.reflect.Person”);

法二:Class clazz = new Person().getClass();

法三:Class clazz = Person.getClass();

解剖类:

@Test

//反射构造函数:public Person()

public void test() throws Exception{

Class clazz = Class.forName("cn.itcast.refelect.Person");

Constructor con = clazz.getConstructor(null);

Person p = (Person)con.newInstance(null);

System.out.println(p.name);

}

@Test

public void test2() throws Exception{

Class clazz = Class.forName("cn.itcast.refelect.Person");

Constructor con = clazz.getConstructor(String.class);

Person p = (Person) con.newInstance("88888");

System.out.println(p.name);

}

@Test

public void test3() throws Exception{

Class clazz = Class.forName("cn.itcast.refelect.Person");

Constructor con = clazz.getDeclaredConstructor(List.class);

con.setAccessible(true);//暴力反射,强制访问私有成员函数

Person p = (Person) con.newInstance(new ArrayList());

System.out.println(p.name);

}

//反射类的方法

public void test() throws Exception{

Person p = new Person();

Class clazz = Class.forName(“cn.itcast.refelect.Person”);

Method m = clazz.getMethod(“aa1”,null);//函数名,参数

m.invoke(p,null);//对象,参数(用来执行方法)

}

//反射类的main方法

public void test() throw Exeception{

Class clazz = Class.forName(“cn.itcast.refelect.Person”);

Method method = clazz.getMethod(“main”,String[].class);

method.invoke(null,(Object)new String[](“1”,”2”));//第一种方法

method.invoke(null,new Object[](new String[](“1”,”2”)));//第二种方法

}

//反射字段

public void test() throw Exeception{

Person p = new Person();

Class clazz = Class.forName(“cn.itcast.refelect.Person”);

Field f = clazz.getField(“name”);

f..get(p);

Class type = f.getType();//获取字段类型

}

6内省:操作JavaBean的属性(JavaBean就是将用户发送的内容封装成对象)

javaBean属性:类中只要有getter或setter的就是其属性,不仅有字段.

@Test

public void test() throws Exception{

BeanInfo info = Introspector.getBeanInfo(Person.class,Object.class);//省类

PropertyDescriptor[] pds = info.getPropertyDescriptors();//属性描述

for( PropertyDescriptor p : pds){

System.out.println(p.getName());

}

}

7 apache发布了beanutils框架来操作bean属性

添加第三方jar包:新建文件夹->需要beanutils.jar和一个知识架(日志记录器)

//使用beanutils操作bean的属性

@Test

public void test() throws Exception{

Person p = new Person();

BeanUtils.setProperty(p, "name", "xxc");

System.out.println(p.getName());

}

beanutils只支持八种数据类型

将用户输入的String类型转换为Date类型传给bean(注意Date引用的包必须是util的)

例一:

public void test2() throws IllegalAccessException, InvocationTargetException{

//转换工具

ConvertUtils.register(new Converter() {

@Override

public Object convert(Class type, Object value) {

if(value==null){

return null;

}

if(!(value instanceof String)){

throw new ConversionException("不好使");

}

String str = (String) value;

if(str.trim().equals("")){

return null;

}

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

try {

return df.parse(str);

} catch (ParseException e) {

// TODO Auto-generated catch block

throw new RuntimeException(e);

}

}

}, Date.class);

Person p = new Person();

String birthday = "1993-08-21";

BeanUtils.setProperty(p, "birthday", "1993-08-21");

System.out.println(p.getBirthday());

}

例二:

public void test3() throws IllegalAccessException, InvocationTargetException{

//将用户输入的数据用map封装

Map map = new HashMap();

map.put("name", "li lei");

map.put("password","123");

map.put("age","21");

map.put("birthday","1992-08-21");

ConvertUtils.register(new DateLocaleConverter(), Date.class);

Person bean = new Person();

BeanUtils.populate(bean, map);//用map集合中的值填充bean的属性

System.out.println(bean.getName());

System.out.println(bean.getPassword());

System.out.println(bean.getAge());

System.out.println(bean.getBirthday().toLocaleString());

}

8泛型使用

@Test

public void test(){

ArrayList list = new ArrayList();

list.add("aa");

list.add("bb");

list.add("cc");

//           Iterator it = list.iterator();

//           while(it.hasNext()){

//                  System.out.println(it.next());

//           }

for(String s : list){

System.out.println(s);

}

}

@Test

public void test2(){

Map map = new HashMap();

map.put(1, "aaa");

map.put(2, "bbb");

map.put(3, "ccc");

//entrySet

Set> set =map.entrySet();

Iterator> it =set.iterator();

while(it.hasNext()){

Map.Entry entry =it.next();

int key = entry.getKey();

String value = entry.getValue();

System.out.println(key+" "+value);

}

for(Map.Entry entry : map.entrySet()){

int key = entry.getKey();

String value = entry.getValue();

System.out.println(key+" "+value);

}

}

泛型类型必须为引用类型,不是基本类型

//编写一个泛型方法,接受一个数组并颠倒数组中的所有元素

public void reverse(T arr[]){

int start =0;

int end = arr.length-1;

while(true){

if(start>=end){

break;

}

T temp = arr[start];

arr[start] = arr[end];

arr[end] = temp;

start++;

end--;

}

}

第二章

1、xml语法(作为配置文件)

2、xml约束

3、xml编程(CRUD)create read update delete

(1)xml解析方式:dom(内存消耗大,crud方便)和sax(占内存少,只适合读取)

调整jvm内存大小(64M):argument 配置-XMX80m

项目实践:

xml学生成绩管理系统:(day_exam)

domain包下创建bean类

dao包下创建各个函数

util包下创建工具类,都是静态方法

再在junit包下先创建测试类

(2)sax解析方式解析xml文件:涉及到两个内容,解析器和事件处理器

(3)dom4j解析xml文档,需要加入dom4j开发包

4、schema

你可能感兴趣的:(java,web,第一阶段)