Java开发笔记 — HttpServletRequest方法总结

时间:2019-05-15 10:03:37下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《Java开发笔记 — HttpServletRequest方法总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《Java开发笔记 — HttpServletRequest方法总结》。

第一篇:Java开发笔记 — HttpServletRequest方法总结

Java开发笔记 — HttpServletRequest方法总结

HttpServletRequest方法总结

getScheme()方法返回请求的计划,比如http,https或者ftp.getServerName()方法返回被发送请求的服务器的主机名 getServerPort()方法返回被发送请求的端口号。

getContextPath()返回请求地址的根目录,以“/”开关,但不是以“/”结尾。

一个常用的获得服务器地址的连接字符串是: String path = request.getContextPath();String basePath = request.getScheme()+“://”+request.getServerName()+“:”+request.getServerPort()+path+“/”;getCookies()取得cookie

getMethod()取得请求方法,如get,post或put getRequestURL()取得请求URL(统一资源定位符)getRequestURI()取得请求URI(统一资源标识符)getSession()取得对应session getHeaderNames()返回请求包含的所有头名称的一个enumeration(遍历器)使用方法如下:

Enumeration en = request.getHeaderNames();while(en.hasMoreElements()){

out.print(en.nextElement());

} 输出如下结果:

accept accept-language accept-encoding user-agent host connection cookie 具体含义是:

Accept:浏览器可接受的MIME类型。

Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。

Accept-Encoding:浏览器能够进行解码的数据编码方式,比如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。

User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。Host:初始URL中的主机和端口。

Connection:表示是否需要持久连接。如果Servlet看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点,Servlet需要在应答中发送一个Content-Length头,最简单的实现方法是:先把内容写入 ByteArrayOutputStream,然后在正式写出内容之前计算它的大小。

Cookie:这是最重要的请求头信息之一

getHeader(name)返回指定名称的特定请求的值。使用方法如下:

out.print(“cookie:===”+request.getHeader(“cookie”)+“
”);完整举例: accept:===*/* accept-language:===zh-cn accept-encoding:===gzip, deflate user-agent:===Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.1;SV1;TheWorld)host:===localhost:8080 connection:===Keep-Alive cookie:===JSESSIONID=BF00F7FD72F5DF83DF8F62E3D5EFF960

第二篇:Java笔记总结

1、Java是一种可以编译 跨平台、面向对象的高级计算机语言。

2、Java语言的特点:简单、安全、跨平台、面向对象、支持多线程。

3、Java的三个技术平台分别是 JavaSE、JavaEE、JavaME。

4、Java程序的运行环境简称为 JDK。

5、编译Java程序需要使用 javac 命令。

6、javac.exe和java.exe这两个可执行程序存放在JDK安装目录的bin目录下。

7、PATH环境变量用来存储Java的编译和运行工具所在的路径;CLASSPATH环境变量 则用来保存Java虚拟机要运行的“.calss”文件。

8、.class文件在 java.exe 文件启动的JVM中运行。

9、JRE与JDK之间的区别:

a)JRE(Java Runtime Environment)提供java程序运行所需要的基本条件(如JVM)和许多基础类。

b)JDK(Java Development Kit)是Java程序开发工具包——包含编译工具、解释工具、打包工具等开发工具。

10、JVM——Java虚拟机,相当于一个虚拟的操作系统,负责运行javac.exe生成的 字节码(二进制)文件。java.exe执行”.class”,就是java.exe启动JVM运行”.class”文件。

11、标识符命名规则:

a)包名所有字母一律小写。

b)类名和接口名每个单词首字母大写。

c)常量名所有字母都大写,单词之间用下划线分开。

d)变量名和方法名的第一个单词小写,之后的每个单词首字母大写。

12、强制类型转换:

a)格式:目标类型 变量名 =(目标类型)值

b)int类型转换成byte类型 很容易造成 精度丢失。因为int类型变量是32位,byte类型只有8位,所以在转换过程中会丢失int类型的高3位字节。

c)在用”双字符“型运算符(+=、-=之类的)运算时,强制类型会自动完成,不用程序显示的声明。

13、三元运算符:判断条件?表达式1:表达式2;——若条件成立,执行表达式1,否则执行表达式2。

14、跳转语句:

a)break:

i.用于switch语句,终止某case并跳出switch结构。ii.用于循环语句,跳出循环语句,执行后面的程序。

b)continue——只用于循环语句中:终止本次循环,执行下一次循环。

15、方法重载:

a)2个条件:方法名相同、参数个数或参数类型不同。b)与返回值类型无关。

16、数组:

a)定义数组:

i.类型[ ] 数组名 = new 类型[ 数组长度 ] //这种定义方式只指定了长度,元素的初值由系统自动赋0。(动态初始化)

ii.类型[ ] 数组名 = new 类型[ ]{元素,元素,......} iii.类型[ ] 数组名 = {元素,元素,......} //这2种称为 静态初始化。

17、冒泡排序:

a)若有n个元素,则进行n-1轮排序(n-1次外循环)

b)第1轮排序,元素之间进行n-1次比较;第2轮排序进行n-2次排序......最后1轮只进行1次比较。c)外循环条件:i < arr.length d)内循环条件:j < arr.length1

18、二维数组:

a)定义方式1:类型[ ][ ] 变量名 = new 类型[ 几行 ][ 几列 ];b)可理解为数组的 数组——例arr[0][1]-->数组名arr[0],第二个元素[1];c)二维数组的 长度 由”[ 几行 ]“确定!

d)定义方式2:类型[ ][ ] 变量名 = new 类型[ 几行 ][ ];//行数确定,列数不确定——每行可以随便 赋值。

e)定义方式3:类型[ ][ ] 变量名 = { { ,...,...,...},{ },{ },......} //这种行数、列数都不确定。大括号 内的每个 大括号 代表 一行 的元素,每行有多少个元素 取决于 内大括号 中元素的个数。

19、面向对象的特点:封装性、继承性、多态性。

20、在创建变量后,JVM运行程序时,会自动初始化变量。引用型变量 为 null。

21、垃圾对象——没有变量引用的对象。

22、类的封装:将类中的属性 私有化。外界访问私有属性时 只能通过该属性的 getxxx()方法。

a)//择Generate getter and setter--> 自动生成

set和get方法。

23、构造方法:实例化对象。

a)可以用 带参数的构造方法 在实例化对象时就 给私有属性 赋值。b)好的程序员 应该为每个类 写一个 无参构造方法。c)定义构造方法的条件:

i.方法名与类名相同。ii.没有返回值的 声明。

iii.方法中 不能有return 返回值。

24、this关键字

a)this指代 该类实例化的 对象。所以可以用 this.xx的方式调用 成员。b)在成员方法中使用this关键字,避免参数名与属性名相同。c)用this关键字调用 构造方法

i.只能在构造方法中 用this调用其他构造方法; ii.此时this语句必须位于第1行,并且只能出现一次 iii.不能在一个类的两个构造方法中互相调用。

25、static关键字

a)静态变量:

i.用static修饰的变量 ii.静态变量被所有实例共享

iii.可以使用“类名.变量名”的形式来访问。iv.只能修饰 成员变量 b)静态方法

i.希望在不创建对象的情况下也能条用 类中的 某个方法,那就用static关键字休息这个方法 ii.静态方法 只能访问 静态成员!

//因为非静态成员 必须先创建对象才能访问,而静态方法在被调用的时候可以 不创建对象——那么就没有非静态成员可供访用。

c)静态代码块

i.当类被加载时,静态代码会执行一次。而类只会被加载一次,所以静态代码块只会被执行一次。

ii.通常会用静态代码块对类的成员变量进行初始化。d)单例模式

i.private static 类名 INSTANCE = new 类名();量——自己创建一个对象。private 类名(){};

//私有的 构造方法,只能内部访问

}

//私有成员变public static 类名 getInstance(){ return INSTANCE;//定义静态方法,返回自己的实例对象。ii.第二种单例模式创建方法。

1.Private 类名(){} 调用。

2.public static fianl 类名 INSTANCE = new 类名();的不能被修改的 静态成员对象。

26、内部类——定义在类里面的 类

a)成员内部类

i.相当于成员方法,可以访问外部类的所有成员;

ii.因为成员内部类相当于 成员方法,所以想要创建内部类对象时,必须得用外部类的对象 去创建内部类对象:

1.外部类名.内部类名 变量名 = new 外部类名().new 内部类名();b)静态内部类

i.用static修饰的成员内部类,也相当于静态方法。只能访问外部类的静态成员。

ii.因为静态,所以在创建内部类对象时,可以不用先创建外部类对象:

1.外部类名.内部类名 变量名 = new 外部类名.内部类名();iii.静态内部类中 可以定义静态成员,非静态内部类则不可。c)方法内部类

i.在方法中定义的类,只能在当前方法中被使用。

27、当一个对象被当成垃圾从内存中释放时,它的 finalize()方法会被自动调用。

//公有

//私有的 构造方法,只能在类的内部被

28、继承

a)继承关键字:extends。b)格式:Class A extends B{} c)单继承——一个类只能有一个直接父类。

29、重写父类方法

a)条件:方法名、参数、返回值类型 3个都相同。

b)重写之后,子类调用被重写的方法时,就是调用自己写的方法。c)重写应用:

i.应用对象 是父类的 公有方法。重载 应用的对象是 类本身的 方法。ii.重写父类 不适合子类的 方法 iii.实现接口。

30、super关键字

a)调用父类成员变量和成员方法:

i.super.成员变量;ii.super.成员方法(参数1,参数2,...);b)调用父类的构造方法

i.super(参数1,参数2,...);ii.必须位于子类的构造方法的第一行,且只能出现一次。

iii.在实例化子类时,系统会在 子类的构造方法中 调用

父类的构造方法——如果子类的构造方法中 没有调用 父类的构造方法,系统会自动调用父类的无参构造方法。所以 每个类的 无参构造方法 一定不要漏了!子类也可以显示的调用 父类的有参或无参构造法方法。c)解决 重写了父类方法之后,不能调用父类方法的问题。

31、final关键字

a)final修饰的类 不能被继承 b)final修饰的方法 不能被子类重写

c)final修饰的变量 是常量,不能被修改,且必须在定义时 为变量赋值。

32、抽象类

a)关键字 abstract b)抽象方法:abstract void shout(){};——没有方法体。

c)包含抽象方法的类必须声明为 abstract类:abstract class Animal{} d)抽象类可以 不包含任何抽象方法,只需用abstract修饰。e)抽象方法不能直接实例化,只能让 子类实例化。

33、接口

a)定义关键字:interface——interface Animal{} b)接口中的方法 被默认修饰为:public abstract——抽象方法。c)接口中的变量 被默认修饰为 :public static final —— 全局常量

i.所以变量最好用

全大写

表示。

d)因为方法都是抽象的,所以必须定义一个类 来实现(implements)接口——Class A implements B{} e)接口之间可以继承——interface C extends B{} f)一个类可以实现多个接口,接口直接间用逗号隔开。g)一个类可以在继承一个类的同时,实现其它的接口。

h)如果一个类去实现接口的话,那么这个类必须实现接口中所有的方法。

34、多态

a)方法上的多态

i.类内部方法的重载 ii.子类对父类方法的重写 b)对象上的多态性

i.假设父类:A;子类B B b = new B();ii.对象的自动向上转型:A a = b;//子类对象,变成了父类对象。

1.虽然a指向A的对象,但是如果B重写了A的方法,那a调用的还是B中的方法。

iii.对象的强制向下转型

1.若 A a = new A();2.B b =(B)a;

//父类对象变成了 子类对象。3.这时对象b调用的是 子类的重写的方法。

4.注意:对象发生强制向下转型之前,必须保证已经发生了向上转型,否则会出异常。

35、异常

a)异常类分为:编译时异常、运行时异常 b)异常处理机制: i.try...catch...finally 1.try代码包含可能发生异常的Java语句,catch块中包含针对一场进行处理的代码。

2.当发生异常时,系统将异常信息封装成一个异常对象传递给catch代码块。所以catch需要定义1个对应的异常类 变量。3.finally代码块包含,无论发生什么异常都要执行的代码。常用于关闭系统资源。

ii.throws关键字声明抛出异常,调用者对其处理。这种方法能通过编译,但是发生异常后就会终止运行。

c)自定义异常

i.首先定义 一个继承Exception异常的 异常类;异常类中 编写一个无参构造方法(调用父类无参构造方法),再编写一个 带String参数的构造方法(也调用父类的带Stirng参数的构造方法)。ii.再定义一个 测试类,定义要调用的方法,并在此方法后面用 throws关键字 声明抛出自定义异常;再在 方法体 内判断什么时候 用throw new 自定义异常(“要打印的信息”)。//声明自定义异常对象。

iii.最后在 测试类的main 方法中,iv.try{...}

catch(...){ System.out.printlan(e.getMessage)}

finally{...}

36、线程的创建: a)继承Thread类,并重写run()方法。然后new Thread().start;开启线程。

b)实现Runnable接口,重写run()方法。然后new Thread(new myRunnable).start开启线程。

37、两种实现多线程的比较——实现Runnable接口的方法更好

a)可以让多个线程共享资源。——售票系统需要。b)避免单继承。38、36、

第三篇:java学习笔记总结

java 学习笔记总结

1.Java是什么呢?

Java不仅是一门语言,而且是一个完整的平台,有一个庞大的库,其中包含了很多可重用的代码和一个提供安全性、跨操作系统的可移植性以及自动垃圾收集等服务的执行环境。

2.JDK 和 JRE 是什么?

JDK:全称是 Java Development Kit,这是我们编写java程序的开发人员需要的。我们首先要下载和安装JDK,然后设置环境变量,具体操作可以加我扣:七零五叁零六久久久

JRE:全称是 Java Runtime Environment,它包含虚拟机但不包含编译器,这是运行java程序的用户需要的环境

3.来个Hello World看看吧?

照例先创建一个类HelloWorld.java,源代码如下: /** * @author 老孙

*/ public class HelloWorld {

public static void main(String[] args){

System.out.println(“Hello World”);

} } Java类名一般是以大写字母开头的名词,多个单词的话每个单词首字母都应该大写。Java源代码以.java作为扩展名,而且文件名必须和文件里的公共类同名。

4.怎么用命令行运行java程序?

比如上面我们编写了一个类叫做HelloWorld.java,首先打开一个终端;

 然后进入到HelloWorld.java类所在的目录;  输入命令 javac HelloWorld.java。javac是一个java编译器,注意该命令需要的是文件名,也就是要带着.java后缀。 输入命令 java HelloWorld。java启动Java虚拟机,该命令只需要类名,不需要带着.java或者.class等后缀。

5.Java代码怎么加注释?

// 单行注释 和 /*{……}*/ 长篇注释,这两种方式很多语言都一样,没什么特别强调的。

另外还有一种注释可以方便的生成java doc文档,以/** 开头,以*/结束。

6.Java的几种基本数据类型是?

4种整型:byte(1字节),short(2字节),int(4字节),long(4字节)。(PS:Java没有无符号整型) 2种浮点型:float(4字节),double(8字节) 字符类型:char  布尔类型:boolean

在Java种每个类型占用几个字节是固定的,与运行java的机器无关,这点与C#不同,这也是Java具有可移植性的关键点。

浮点类型一般double比float常用,而且浮点型存在四舍五入的情况,如果用在对精确度要求高的商业场景,就得使用java.math.BigDecimal类型了。我们写个demo看看: 

/** * @author 老孙

*/ public class DemoDouble { public static void main(String[] args){

double d1=0.05;

double d2=0.01;

double result=d1+d2;

System.out.println(result);//结果:0.***005

BigDecimal bd1=new BigDecimal(“0.05”);

BigDecimal bd2=new BigDecimal(Double.valueOf(“0.01”));

double result2=bd1.add(bd2).doubleValue();

System.out.println(result2);//结果:0.06

} }

7.Java怎么定义常量?

使用关键字final定义常量,之前C#用的是const关键字,这一点不同要注意一下。命名规则上,常量一般使用大写字母,中间用下划线分隔。例如: private static final Integer MAX_SIZE=100;

8.String字符串怎么截取子串?

Substring(beginIndex,endIndex):返回子字符串,从beginIndex到endIndex-1。String s=“你好,今天是2018年1月5日,圣诞快乐!” String date = s.substring(6,17);System.out.println(date);// 输出:2018年1月5日

注意:该方法的返回结果不包含最后一个位置的字符。如果有问题就问我:七零五叁零六久久久 9.Java字符串怎么拼接?

①最简单的拼接方式就是使用+符号。

②String.join(char,str1,str2….strN):静态方法拼接字符串,用字符char分隔,将字符串进行拼接。//拼接

String s2=String.join(“、”,“JAVA核心技术”,“JAVA编程思想”,“SpringBoot”);System.out.println(s2);//输出:JAVA核心技术、JAVA编程思想、SpringBoot

③当有大量字符串拼接操作的时候使用StringBuilder,这跟C#基本相同。

10.怎么判断两个Java字符串是否相等?

equals方法判断两个字符串内容是否相等。而==判断两个字符串是否指向内存中同一位置。//比较

String s3=“abc”;String s4=“abc”;String s5=new String(“abc”);String s6=new String(“abc”);System.out.println(s3==s4);//true System.out.println(s3.equals(s4));//true System.out.println(s5==s6);//false System.out.println(s5.equals(s6));//true 这个demo中s3==s4返回true,因为在Java中字符串是不可修改的,编译器有一些优化机制让字符串共享,所以s3和s4实际上指向了内存中同一位置 11.Java数组有哪些常用操作?

①foreach循环数组

//foreach循环数组 int[] arr={1,3,5,7,9};for(int item:arr){ System.out.println(item);} ②打印数组元素

Arrays.toString(a):返回字符串,数组元素包含在方括号中,以逗号分隔。Arrays.deepToString(arr):用来打印多维数组。//打印数组

System.out.println(Arrays.toString(arr));//输出 [1, 3, 5, 7, 9] int[][] arrM={{1,2,3},{11,12,13},{21,22,23}};System.out.println(Arrays.deepToString(arrM));//[[1, 2, 3], [11, 12, 13], [21, 22, 23]] ③拷贝数组元素

静态方法Arrays.copyOf(originalArray,length):第一个参数是要拷贝的源数组,第二个元素是新数组的长度,如果第二个大于原数组长度,则自动填充默认值。//拷贝数组元素

int[] arr2=Arrays.copyOf(arr,arr.length);System.out.println(Arrays.toString(arr2));//输出 [1, 3, 5, 7, 9] int[] arr3=Arrays.copyOf(arr,arr.length/2);System.out.println(Arrays.toString(arr3));//输出 [1, 3] int[] arr4=Arrays.copyOf(arr,arr.length*2);System.out.println(Arrays.toString(arr4));//输出 [1, 3, 5, 7, 9, 0, 0, 0, 0, 0] ④排序

静态方法Arrays.sort()方法采用优化后的快速排序算法对数组元素进行排序。//排序

int[] arr6={12,4,53,78,21,943,3};Arrays.sort(arr6);System.out.println(Arrays.toString(arr6));//输出 [3, 4, 12, 21, 53, 78, 943]

⑤查找

静态方法Arrays.binarySearch(arr, valueToFind):二分查找,第一个参数是要查找的数组,第二个参数是要查找的目标元素。该方法有个前提是数组必须是有序的。//查找

int index=Arrays.binarySearch(arr6,12);//输出 2 System.out.println(index);

⑥填充数组元素

静态方法Arrays.fill(arr,item):将数组arr每个元素都填充为item.//填充数组元素

String[] arr7=new String[5];Arrays.fill(arr7,“*”);System.out.println(Arrays.toString(arr7));//[*, *, *, *, *]

⑦比较数组

注意要使用Arrays.equals(arr1,arr2)比较数组,如果两个数组元素全部相同,则返回true。//比较数组元素

String[] arr8={“*”,“*”,“*”,“*”,“*”,};System.out.println(arr7.equals(arr8));//false System.out.println(Arrays.equals(arr7,arr8));//true

12.日期对象LocalDate ①获取当前日期时间 //当前日期

LocalDate today=LocalDate.now();

System.out.println(today);//2017-12-26

//当前时间

LocalTime currentTime=LocalTime.now();

System.out.println(currentTime);//12:23:09.054

//当前日期时间

LocalDateTime dateTime=LocalDateTime.now();

System.out.println(dateTime);//2017-12-26T12:23:09.054

②构造某个指定日期

//构造指定日期

LocalDate newYear=LocalDate.of(2018,1,1);System.out.println(newYear);//2018-01-01

③解析日期字符串,如果不合法会抛出异常。

//解析日期字符串

LocalDate date1=LocalDate.parse(“2018-12-31”);System.out.println(date1);//2018-12-31//LocalDate.parse(“2018-11-31”);//抛出异常

④获取若干天后的某个日期 //15天后

LocalDate date15=today.plusDays(15);System.out.println(date15);//2018-01-10

⑤获取年份、月份、日期

//获取年、月、日

System.out.println(date15.getYear());//2018 System.out.println(date15.getMonth());//JANUARY System.out.println(date15.getMonthValue());//1 System.out.println(date15.getDayOfMonth());//10 System.out.println(date15.getDayOfWeek());//WEDNESDAY System.out.println(date15.getDayOfYear());//10 注意:使用Date对象的getYear()方法,不能获取当前的年份

System.out.println(new Date().getYear());//117,不是我们想要的结果2018 我们看一下该方法的源码,计算的是当前年份和1900年的差值

public int getYear(){ return normalize().getYear()-1900;}

大家在学习的过程中遇到任何的问题都可以咨询我(QQ:705306999,奔跑de蜗牛)

也可以加入到我们的免费学习交流群: 579016988(职坐标java编程交流群2)玩微信的朋友也可以加老孙的个人微信公众号:微信右上角点击加号--添加朋友--公众号--搜索:我是老孙(如下图),也会不定期发送技术文章,娱乐八卦,吃喝玩乐,房产头条,心灵鸡汤等信息!

加图片说明文字

注意:添加时请注明微博

移除点击此处添如果大家想看老孙的直播学习,可以加入咱们的免费公开课进行学习!腾讯课程地址:https://ke.qq.com/course/92963#tuin=2a0a2177

有的人会这样说:“我只是在业余时间打盹而已,业余时间干吗把自己弄得那么紧张?”

爱因斯坦就曾提出:“人的差异在于业余时间。”

一位在哈佛任教的朋友说,只要知道一个青年怎样度过他的业余时间,就能预言出这个青年的前程怎样。记得点赞和转发哦!

片说明文字

移除点击此处添加图

第四篇:java学习方法笔记总结.

本人亲自总结了多年学习JAVA的笔记总结,多年心血都在此了,速来下载!下面简单列举一下大家学习java的一个系统知识点的一些介绍(按照TTS6上面的顺序来的):

一:java基础部分:java基础的时候,有些知识点是非常重要的,比如循环系列。For,while,do-while.这方面只要大家用心点基本没什么难点。

二:面向对象:oop面向对象的时候,偏重理论,相信这方面的文章也很多,大家可以多看看,在这就不说了。重点掌握面向对象的三大特征和基本原理。

三:java核心一:这方面主要偏重API,所以在学习了这章的时候,一定要对照API去学习,多看API,主要就是方法多,string和集合的方法最为重要。后面将为大家提供本人整理的部分笔记。

四:java核心二:主要讲解了异常,线程和IO流,其实个人认为重点掌握线程就行,对于流和异常多写就行,线程偏重理论也最为重要。

五:oracle数据库方面:建议学习数据库的时候大家一定要端正态度,数据库极为重要,本人当时在学习这个的时候,一直以为数据库只是为了增删改查,故没有认真学习,后期面试的时候吃了不少亏,因为现在软件公司对数据库的要求跟java一样重要,基本都会单独一张笔试题笔试数据库。

六:JDBC/XML系列:JDBC主要是3个核心接口(Connection)(Statement)(ResultSet)的使用,大家在学习的时候,熟练运用3接口,jdbc的原理也相当重要,虽然后期学习了HIbernate之后,JDBC不需要再用,但其底层原理还是JDBC,而且现在很多软件公司不一定会用到Hibernate框架,所以建议大家还是把“本”学好,XML:重点掌握解析互换的2个核心接口方法。

七:HTML/CSS/JS:对于这个,本人相当纠结,因为这个有点偏向于美工的意思,所以后期想从事后台开发的同学一般不会太重视,但是现在都是web项目,而且很多软件公司并不是把许多这方面的事情交给美工(除非是那种有很高要求的静态页面),而且现在html代码都是在jsp里面写,所以建议还是好好学学,因为公司不会让一个美工去专门为你写一些简单的html代码,包括js!这章其实不难,就是属性方法知识点比较多,大家多记记,多写写,重在多练!

八:Servlet/Jsp:如果想从事web和b/s开发(现在基本都是web和b/s开发),这章极为重要,服务器的访问以及配置。tomcat的使用都在这一章,虽然后期struts框架的学习简化了servlet代码的繁琐性,但是你可知道现在有些公司只用servlet不用struts!即使用了框架技术也不一定是struts!servlet跟JDBC一样都是“本”,而struts和Hibernate一样都是封装了它们而后简化代码而已。所以只有把“本”学会了,就不怕框架的变化!jsp就不多说了,如果你学习java这个就不会缺少!后期b/s项目页面的布局以及功能就全靠它了。

九:Ajax/Jquery:当初学习这个的时候,本人没有用心去学,然后结果就是本人在进公司之后花了一个星期的时间练习jQuery!这个对于强化web服务器页面的功能技术实在是强大.这个封装了js对象的技术,可以对jsp页面元素进行样式的更改以及操作,想要玩好web项目,这个技术必须玩好!

十:SSH:传说中的三大框架;

Struts:前面已经提到,这个框架技术主要是为了弥补servlet和jsp页面之间交互的复杂性,可以有效的提高客户端与服务器之间的交互。而且采用了MVC思想进行改善减弱代码之间的复杂性。Hibernate:主要封装了jdbc的核心功能,可以采用映射方式访问并操作数据库,一定程度上讲是简化了程序代码,但前面已经提到,由于是框架,而框架是随着时代而改变的,并且很多公司不一定用到这个框架,所以,只有掌握好JDBC的根本原理,才会更加理解这个框架。

Spring框架:其实后期学框架知识大家都会觉得很无趣和乏味,因为框架的知识都是理论很深的知识点,spring主要是要完善代码之间的耦合度,包括类似工厂模式的对象自动控制,AOP的事物日志管理等,都其实是为了减少程序员的工作量,但不得不说是有很大的作用的,而且这个框架可以整合JDBC以及Hibernate,struts技术,可以把所有的框架技术都整合在一起。相当于一块主板把内存,风扇,cpu,显卡都集中在一起。

前面所有的都是个人学习之中的一点感受,希望大家也能有所感触,主要想说明的是前面的基础一定要打好,对于学习方法的问题也可以和大家聊一聊,本人在学习之初,由于面向对象和集合一些理论较深的知识点出现,导致后期比较注重理论,最终在写实际项目的时候吃了苦头,因为代码量没有跟上,即使理论都懂,但很多功能还是无法自己写出,所以要强调的是在注重理论的情况下一定要多写代码,我的建议是在理论比较深刻的知识点面前,比如面向对象,集合,线程这些知识,多看点理论,而对于html,css以及API方法比较多的知识点的情况下,多写代码。总之,各50%最好!当然,这就需要大家付出更多的时间和精力辛苦勤劳下了!其实java的学习还是要多练代码,多思考,举一反三,任何的知识点只要你认真的去做,没有拿不下的顽石,勤能补拙,相信自己,然后用功,你就胜利了。

下面说一下面试技巧。

其实4个月是相当的快,一瞬间而已,所以希望大家在还没有学完的时候,就要有面试的准备,关于面试,一般企业也就那几个步骤,笔试-面试,面试又包括技术面试和人事面试,人事面试基本不会有什么问题,关键就是技术面试,当然,如果大家有认真的学学习,笔试一般不会有什么问题,技术面试的话,一般都是项目经理之类的,会问到几个技术问题,范围也很广,不知道他会问到什么,所以必须大家对于知识点的话都要有基本的掌握,当然会有几个比较重点的知识 点,像集合,servlet,线程,其实重点也很多,这个大家后期可以参考面试的文档,到时候老师会发给大家一些相关的文档,当然自己也可以去下载一些相关的文档,要强调一点的是数据库必问!这个相当重要!前面也已经说了,所以希望一定要把数据库学好!

下面为大家提供部分本人整理的笔记: String的核心方法:

字符串转换整数:Integer.parseInt(字符串变量);整数转换字符串:String.valueOf(整型变量)

日期转字符串:new SimpleDateFormat().format(date类型)返回字符串元素的字符长度:length()方法

Int IndexOf(String a),在字符串元素中检索a字符,返回第一个出现的下标位置。Int indexOf(String a,int fromIndex),从formIndex位置开始检索字符串,找到之后的a字符。

Char charAt(int index):用于返回字符串index位置的字符.Substring(begin,end):返回子字符串

valueOf(Object):返回Object参数的字符串表示形式。toUpperCase():返回字符串的大写形式。toLowerCase():返回小写形式。

StringBuilder核心方法:

StringBuilder:性能好,非线程安全.Append(String s):追加字符串。

Insert(3,”String”)插入字符串

Delete(int start,int end):删除字符串。

Replace(int start,int end, String s):替换字符串 Reverse():字符串反转.集合核心方法:

Boolean isEmpty():判断集合是否为空 Size():判断集合里面元素的个数

Boolean Contains(Object):判断集合元素中是否包含Object元素.Clear():清空集合。

Boolean Add(Object):向集合中添加元素,返回是否添加成功.Boolean remove(Object):从集合中删除元素。Iterator iterator():迭代元素。

增强for循环:for(Point p:list):遍历list,每次循环从list中取出一个元素赋值给p.List单独的方法:

get(index):得到index下标的集合元素.Set(index,元素o):设置index处的元素为元素o,前面的元素将被覆盖,并且方法返回的值是前面的元素。

Add(index,元素):在指定下标index添加元素 Remove(index):删除指定下标的元素值

List:定义线性表数据结构.ArrayList:动态数组方式,适合随机访问对象.LinkedList:链表方式,适合于插入和删除.subList():用于获取子List,获取的List与原List占有相同的存贮空间,操作会影响原List.List subList(int 开始下标,int 结束下标);

以上方法都是本人从API里面选取的面试笔试必考的方法,这些方法大家完全可以去背熟,当然理解的去记更好了。这个还是需要大家自己亲身去总结的!别人给不了你知识!知识还是自己去学去掌握!别人只能给你方法!别人可以写出来给你,但是要完全理解并掌握还是要自己!授人与鱼不如授人与渔!好了,本人要说的就是这些了。更多的精彩需要大家自己去发现!曾在网上看过几个不错的学习视频,感兴趣的可以进群了解下,群号是五一四,一六七,后面是六七八,连在一起就好了,真心可以学到东西!

第五篇:java开发技术总结

数据库

oracle-->数据库管理系统-->SQL、PL/SQL-->Java(JDBC+SQL)DBA,数据库编程程序员 1.概念导论

1)什么是数据库

有组织和结构存储数据。可以存储 字符、字节、图形、图像等类型数据

DB(数据库):数据集合

DBMS(数据库管理系统):对数据集合进行管理和操作的软件

--Oracle

--DB2

--MySQL

--SQLSERVER

JDBC 1.什么是JDBC 全称Java DataBase Connection,Java数据库访问。

JDBC是Java访问数据库的一项技术

JDBC是SUN推出的Java访问数据库的一套标准。由一系列接口构成。

各个数据库厂商负责提供JDBC接口API的实现包。

开发者只需要掌握JDBC接口的使用,就可以实现对各种数据库的操作,不需要了解开发商的实现类。

XML

1、什么是xml(xtendsible markup language可扩 展的标记语言)? 1)定义

基于文本的通用的数据保存格式。

(1)通用的点的坐标

Point类

point对象(x=10,y=20)

a,序列化

b,数据库表

c,文件

...(2)数据格式

10

20

HTML 知识准备

1、分层:表现层:UI界面(DOS界面、桌面类型、web类型)

业务层:

数据层:文件、Oracle数据库

2、Web类型的应用程序----B/S 类型

打开 Browser,输入 URL,浏览器将请求发送到服务器

服务器得到请求,分析,返回响应

浏览器得到响应,解析(翻译),显示为页面

3、web 学习阶段

客户端技术:HTML+CSS+Javascript---Web 基础

服务器端技术:JSP、PHP、ASP.NET

4、web基础的课程

HTML:页面的创建

CSS:页面的外观

JavaScript:页面的动态效果和交互行为--3 一:HTML 概述

1、超文本标记语言:一种编写页面的纯文本的标记语言,文件以.html或者.htm 为后缀,依靠浏览器运行显示----解释性的语言

2、标记:一些用 <> 括起来的内容,特殊的显示

3、主流浏览器:IE/Firefox/Chrome/

4、浏览器兼容性:符合标准规范,具体问题

CSS 一:CSS 概述

1、CSS:级联样式表(层叠样式表)

2、特征:为页面定义外观的语言,实现内容和表现的分离,多个样式可以合为一个,如果冲突,以优先级为准

二:基础语法

1、语法:

属性名称:值;属性名称:值;比如--color:red;

2、如何应用

方式一(内联方式):<元素 style=“" />---将样式直接定义在元素的 style 属性里

方式二(内部样式表):在页面的 head 里的 style 里定义样式

方式三(外部样式表):定义一个单独的.css的文件(定义样式);然后,在页面的 head 里用 link 引入---推荐方式

3、外部样式表的优点:实现内容和表现的分离,提高代码的可重用性和可维护性

---可以准备多套样式---换皮肤/主题

4、样式表,如果重复定义

a、样式不同,取并集

b、相同,按照优先级

内联 > 内部或者外部

c、相同优先级下,以最后定义的为准

javascript 一:javascript 概述

1、什么是 javascript:一种基于对象和事件驱动的解释性脚本语言,嵌入到网页上

2、历史:js代码---W3C定义了标准规范的 js 代码

3、浏览器兼容问题:标准代码,个别情况个别对待

4、怎么写

方式一:直接写在事件里,仅限于代码很少

方式二:写在 head 的 script 里,仅限于当前页面重用

方式三:写在 js 文件里,html 页面的head 里用 script 引入

5、js的特征53………………………………………………..一种解释性的脚本语言,适用于为网页添加动态效果和交互行为

6、错误:

二:基础语法

1、写法:以 ;结束,大小写敏感

2、标识符:以字母、数字和下划线还有 $组成,不以数字开头---不能和系统关键字重

3、变量 ***----声明变量,以 var 开始

var i = 1;var s = ”mary“;var b = true;js是一种弱类型的语言---变量声明时不需要确定类型,数据类型以赋值为准

4、数据类型

简单类型:string、number、bool 特殊类型:null、undefined

var i;

alert(i);---undefined 复杂类型:对象

5、(string)字符串类型

var s = ”mary“;var s = 'mary';

特殊字符:使用转义---转换为普通字符,解决汉字的问题

”hello'w“ornld” alert(“一”);alert(“u4e00”);[u4e00-u9fa5]

6、number:并不区分整数和小数

var n = 12;var n1 = 12.34;

7、bool:true(1)和 false(0)

8、数据类型之间的转换

var n = 18;var name = “mary”;隐式转换(直接)

string + number--

number + bool--

bool + bool--

string + bool--

显式转换(调用方法)*** xxx.toString()parseInt(xxx);parseFloat(xxx);--确实能转,如果不能转,将返回 NaN

NaN---not a number 判断

isNaN(“aaa”)--is not a number--返回 bool

9、运算符

算术运算符、比较、逻辑、位。。

特殊一:***

=== 严格相等:值和类型

if(a == b)

if(a === b)servlet 1、web开发的背景知识(了解)b/s架构:

特点:

客户端使用浏览器,服务器端使用web服务器,客户端与服务器端使用标准化的http协议来进行通信。

优点:

与c/s架构相比,有两个优点:

a,客户端不需要单独安装

b,开发相对简单(因为c/s架构需要自定义协议,开发相应的 通信模块,而b/s使用标准化的http协议,浏览器与 web服务器都提供了相应的通信模块)。

2、什么是servlet? sun公司制订的一种用来扩展web服务器功能的组件规范。

(1)扩展web服务器功能

早期的web服务器(iis,apache ws等等),只能够处理静态

资源的请求(即需要事先将html文件写好并保存到web服务器

相应的文件夹下面),不能够处理动态资源的请求(即需要进行

计算,然后生成相应的html)。

a,可以使用cgi程序来扩展。

cgi程序可以使用c/c++,perl等语言来开发,但是,程序比较复杂,而且可移值性不好,性能也比较差,现在用得不多。

b,servlet可以扩展这些web服务器的功能。

浏览器发送请求给web服务器(apache ws),web服务器

检查请求是否需要计算,如果需要,web服务器会访问

servlet容器,servlet容器会调用servlet来进行计算。

(2)组件规范

1)什么是组件?

符合一定规范,实现部分功能,并且需要部署到

相应的容器里面才能运行的软件模块。

2)什么是容器?

符合一定规范,为组件提供运行环境及相应服务的 程序。

3、如何开发一个servlet? step1,先写一个java类,实现Servlet接口或者继承

HttpServlet类(一般会使用继承的方式)。

step2,编译

step3,打包(创建一个具有如下结构的文件夹)

appname(应用名称)

WEB-INF

classes(放.class文件)

lib(可选,放.jar文件)

web.xml(部署描述文件)step4,部署

将step3创建好的文件夹拷贝到servlet容器指定的 某个文件夹下面(比如,如果容器是tomcat,可以拷贝到

webapps文件夹下面)。

注意:也可以使用jar命令将step3创建好的文件夹

压缩成一个以“.war”为后缀的文件,然后拷贝。

step5,启动servlet容器,访问servlet

http://ip:port/appname/servlet-url

6、servlet是如何运行的? 比如,在浏览器地址栏输入

http://ip:port/web01/hello

step1,浏览器依据ip,port建立与servlet容器(容器同时 也是一个简单的web服务器)之间的连接。

step2,浏览器将请求数据打包(按照http协议,该数据包 也称为请求数据包)。

step3,浏览器发送请求数据包给容器。

step4,容器收到请求数据包之后,解析该数据包,并将

解析之后得到的数据封装到request(请求数据包)对象上,同时,容器 还要创建response对象。

step5,容器要依据请求资源路径(“/web01/hello”)找到 servlet的配置,然后创建servlet对象。

step6,容器调用servlet对象的service方法。容器会将事先 创建好的request,response作为参数传递给service方法。step7,在service方法里面,可以通过request对象获得

请求参数,并进行相应的处理,处理结果会放到response对象 里面。

step8,容器从response对象中取出处理结果,然后打包(按照http协议,该数据包称之为响应数据包)。然后将 响应数据包发送给浏览器。

step9,浏览器收到响应数据包之后,解析处理结果,然后生成 相应的页面。

http://localhost:8080/web01/hello?uname=jetty ?后是请求参数,其中uname是参数名,jetty是参数值。

JSP

1、什么是jsp(java server page java服务器端页面技术)? 1)定义

sun公司制订的一种服务器端动态页面生成技术规范。

2)理解

a,因为直接使用servlet,虽然也可以生成动态页面,但是比较繁琐(需要使用out.println语句),并且维护困难

(如果页面发生改变,必须修改java代码),所以,sun 在servlet规范制订之后,又添加了jsp规范。

b,jsp其实就是一个以“.jsp”为后缀的文本文件,该文件会被容器(比如tomcat)转换成一个servlet。

2、如何写一个jsp文件? step1,写一个以“.jsp”为后缀的文件。step2,在该文件里面,可以添加如下的内容:

1)html(css,javascript)

直接写即可(不用out.println)

2)java代码

a, java代码片断

<% java代码;

%>

b, jsp表达式

<%= java表达式 %>

3)指令

a,什么是指令?

告诉容器,在容器将.jsp文件转换成.java文件时

做一些额外的处理,比如导包。

b,基本语法

<%@指令名称 属性名称=属性值 %>

c,page指令

import属性:导包,比如

<%@page import=“java.util.*”%>

<%@page import=“java.util.*,java.text.*”%>

contentType属性:设置

response.setContentType的内容,比如

<%@page contentType=“text/html;charset=utf-8”%>

pageEncoding属性:告诉容器jsp文件的编码。

因为容器需要读jsp文件的内容(也就是

说,需要解码,某些容器,如果没有该

属性,默认情况下会按照iso-8859-1

去解码,会产生乱码问题)。

4)隐含对象

a,什么是隐含对象?

在jsp文件里面可以直接使用的对象,比如

out,request,response。

b,为什么可以直接使用这些隐含对象?

因为容器会自动添加创建这些对象的语句。

3、jsp是如何运行的? step1,容器要将.jsp文件转换成.java文件(其实就是

一个servlet类)。

a, html(css,javascript)--->

在service方法里,使用out.write输出。

(out.write方法会将null转换成“"输出)

b,<%

%>

----->

在service方法里,照搬。

c, <%=

%>

----->

在service方法里,使用out.print输出。

step2,容器调用servlet来处理请求。

4、转发

(1)什么是转发?

一个web组件(servlet/jsp)将未完成的处理通过

容器交给另外一个web组件继续完成。

最常见的情况:

一个servlet获得数据,然后转发给一个jsp来展现

这些数据。

(2)如何转发?

step1,绑订数据到request对象上。

request.setAttribute(String name,Object value);

说明:

name:绑订名称

value:绑订值 step2,获得转发器

RequestDispatcher rd =

request.getRequestDispatcher(String uri);

说明:

url : 转发的目的地 step3,转发

rd.forward(request,response);request对象的其它和绑订相关的方法: 依据绑订名称找到绑订值,如果找不到对应的值,返回null。

Object request.getAttribute(String name);

解除绑订

request.removeAttribute(String name)(3)转发的特点

a,转发之后,浏览器地址栏的地址不变。

b,转发的目的地必须是同一个应用内部某个

web组件的地址。

Ajax

1、ajax是什么?(asynchronous javascript and xml 异步的javascript 和xml)

ajax是一种用来改善用户体验的技术,其实质是

利用浏览器提供的一个特殊的对象(XMLHttpRequest 对象,一般称之为ajax对象)异步地(当ajax对象向

服务器发请求时,浏览器不会销毁当前页面,用户

仍然可以对当前页面做其它的操作)向服务器发送请求。服务器返回的数据不再是一个完整的新的页面,而是部分数据,利用这些数据,更新当前页面。整个

过程,页面无刷新,不打断用户的操作。

2、如何获得ajax对象?

XMLHttpRequest没有标准化,要区分浏览器。

function getXhr(){

var xhr = null;

if(window.XMLHttpRequest){

} //非ie浏览器

xhr = new XMLHttpRequest();}else{ //ie浏览器

xhr = new ActiveXObject('MicroSoft.XMLHttp');} return xhr;

4、编程步骤

step1,获得ajax对象。

比如:

var xhr = getXhr();

step2,使用ajax对象发请求。

1)发送get请求

xhr.open('get', 'check_username.do?username=tom',true);xhr.onreadystatechange=f1;xhr.send(null);注意:

true:发送异步请求(ajax对象发请求时,浏览器不会销毁当前页面,用户仍然可以

做其它操作)。

false:发送同步请求(ajax对象发请求时,浏览器不会销毁当前页面,浏览器会锁定

当前页面,用户不能操作当前页面)。step3,编写服务器端的处理代码,一般不再需要返回

一个完整的页面,只需要返回部分数据。step4,编写事件处理函数

function f1(){

if(xhr.readyState == 4){

var txt = xhr.responseText;

更新当前页面

}

} jQuery

1、jQuery介绍 www.xiexiebang.com

(1)特点

利用选择器查找要操作的节点,并且会将这些节点

封装成一个jQuery对象。通过调用jQuery对象的属性

或者方法来实现对底层节点的操作,这样做的好处有

两个:一是兼容性更好了,另外,代码得到简化。

(2)编程步骤

step1,使用jQuery选择器查找要操作的节点。

step2,调用jQuery对象的方法或者属性。

(3)一个简单例子 first.html(4)jQuery对象与dom对象如何相互转换?

1)dom对象---> jQuery对象

$(dom对象)

2)jQuery对象---> dom对象

2、选择器

(1)选择器是什么?

jQuery借鉴了css选择器的语法,用来查找要操作的节点。

(2)基本选择器

selector / s1.html

#id

.class

element

select1,select2..selectn

*(3)层次选择器

selector / s2.html

select1 select2:查找所有的后代

select1>select2:只查找子节点

select1+select2:下一个兄弟

select1~select2:下面所有兄弟

(4)过滤选择器

1)基本过滤选择器

selector / s3.html

:first

:last

:not(select)排除满足select要求的节点 :even :odd :eq(index):gt(index):lt(index)2)内容过滤选择器

selector / s4.html :contains(text)匹配包含给定文本的元素

:empty 匹配所有不包含子元素或者文本的空元素

:has(select)匹配含有选择器所匹配的元素的元素

:parent 匹配含有子元素或者文本的元素 3)可见性过滤选择器 selector / s5.html :hidden 匹配所有不可见元素,或者type为hidden的元素

:visible 匹配所有的可见元素 4)属性过滤选择器 selector / s6.html [attribute] [attribute=value] [attribute!=value] 5)子元素过滤选择器

selector / s7.html :nth-child(index/even/odd)

注意: 下标从1开始。

6)表单对象属性过滤选择器 selector / s8.html

:enabled

:disabled

:checked

:selected(5)表单选择器

:input :text

:pasword :radio :checkbox :submit :image :reset :button :file :hidden

3、dom 1)查询

dom / d1.html

找到节点之后,可以读取或者修改节点的html内容,文本,值,属性。

a, html()读取或者修改节点的html内容

b, text()读取或者修改节点的文本内容

c, val()

读取或者修改节点的值

d, attr()读取或者修改节点的属性

2)创建

dom / d2.html

$(html);3)插入节点

append():作为最后一个孩子添加进来。

prepend():作为第一个孩子添加进来。

after():作为下一个兄弟

before():作为上一个兄弟 4)删除节点

dom / d3.html remove()remove(selector)empty():清空节点

5)数据与行为分离 dom / d4.html d5.html 即不用修改html文件,通过引入外部的js文件来 为页面提供动态效果。

$(fn);fn是一个函数的名称

或者

$(function(){

//当整个页面加载完毕,会执行这儿的代码。

});6)复制节点 dom / d6.html clone()clone(true):使复制的节点也具有行为(将事件

处理代码一块复制)7)属性操作

读取:attr('id');设置: attr('id','d1')或者一次

设置多个 attr({”id“:”d1“,”class“:”s1“});删除:removeAttr('id')8)样式操作 dom / d7.html 获取和设置: attr(”class“,”“)attr(”style“,”“)追加:addClass('')移除:removeClass('')

或者removeClass('s1 s2')

或者removeClass()//会删除所有样式

切换样式:toggleClass,有该样式,就删除,没有,就添加。

是否有某个样式 hasClass('')读取css('')设置css('','')或者

css({'':'','':''})//设置多个样式 9)遍历节点 dom / d8.html children()/children(select):只考虑子元素,不考虑其它后代元素。

next()/next(select):下一个兄弟

prev()/prev(select):上一个兄弟

siblings()/siblings(select):其它兄弟

find(select):从当前节点向下查找所有的后代

(满足select要求的)parent():父节点

struts

1、什么是Struts? Struts是基于MVC的轻量级框架,主要处理请求分发的问题,重心在控制层和表现层。

--基于MVC:实现了MVC,满足MVC的设计思想。

--轻量:侵入性低,是我们业务代码对框架的依赖程度很小,既很少需要import Struts包。

--框架:基础的代码,引入之后可以减少我们的开发工作量,提高开发效率。

2、为什么用Struts? 1)对比Servlet

--Servlet优缺点

优点:直接、效率高

缺点:业务代码耦合度高,不便于维护

--Struts优缺点

优点:将业务代码解藕,便于维护

缺点:效率低

--Servlet中的MVC与Struts中的MVC,参考图理解

2)对比其他框架

--健壮性(4*):稳定程度

--易用性(4*):好学、好用

--扩展性(5*):就软件未来而言,将来有更复杂的需求时,是否有处理方式。

--侵入性(4*):与依赖性/耦合度成正比

3、Struts发展史

1)Struts1,结构简单、易用,由Apache推出。

与Servlet/JSP耦合紧密,导致发展受限。

2)WebWork,技术先进,核心是XWork。

3)Struts2,基于XWork,在此基础上发展形成。

面试题:Struts1和Struts2的区别和联系?

--Struts2与Struts1差别很大,不能理解为Struts1

的升级版本。

--Struts2以XWork为核心,可以理解为WebWork

的升级版本。

*

4、Struts2使用步骤,HelloWorld--使用版本Struts2.1.8 1)创建web项目

2)导包

3)配置前端控制器(filter)

--在web.xml中配置filter

--控制请求分发的控制器

4)创建struts.xml--放在src根路径

--名称必须是struts.xml 5)*创建Action--控制业务流程的控制器 6)*创建JSP 7)*配置struts.xml--体现请求和Action的关系

--体现Action和JSP的关系

*

5、扩展HelloWorld 目标:掌握Action与JSP页面数据交换的方式。

1)Action如何向页面发送数据?

--通过EL表达式

2)*Action如何从页面接收数据?

--注入:调用JavaBean的set方法,为其属性赋值的行为称之为注入。

*a、基础属性注入

--Action中定义基本类型的属性,给它set方法

--表单中,文本框的name=”属性名“

--表单提交时,Struts2会自动将表单的内容,传递给Action里的属性。

--Struts2会自动初始化属性

--注意:Action跳转的页面,EL表达式${属性名}

*b、域模型注入

--Action中定义JavaBean类型的属性,给他set方法

--表单中,文本框的name=”对象名.属性名“

--表单提交时,Struts2会自动将表单的内容,传递给Action里定义的对象

--Struts2会自动的初始化对象

--注意:Action跳转的页面,EL表达式${对象名.属性名}

c、模型驱动注入(了解即可)

--需要Action实现接口ModelDriven

*

6、使用Struts2实现NetCTOSS中的资费列表

--准备:分析需求、了解表结构、建表

1)创建web项目

2)导包

3)前端控制器(filter)4)创建struts.xml 5)创建Action

-->filter->struts.xml->Action

-->DAO-->DBUtil,Entity a、Entity b、DBUtil c、DAO d、Action 6)JSP 7)配置struts.xml Hibernate

1、什么是Hibernate 1)Hibernate是数据访问层的框架,对JDBC进行了

封装,是针对数据访问层的面向对象的解决方案。

2)Hibernate允许我们直接访问对象,然后将访问

自动转化为SQL去执行,从而达到间接访问数据库

的目的,简化代码开发,提升开发效率。

2、为什么使用Hibernate 1)使用JDBC开发出现的问题

--需要在代码中写大量的SQL

--需要给大量的?赋值

--需要将结果集转换为实体对象

--在SQL中可能会写数据库特定的函数,移植性差。

2)使用Hibernate可以解决上面的问题

--基本上不需要写SQL,因为Hibernate可以

自动生成SQL并执行

--可以自动给?赋值

--可以自动将结果集转换为实体对象

--Hibernate提供通用的API来访问不同的数据库,移植性好。

3)补充JDBC与Hibernate的优缺点

a、JDBC优点:

效率高

b、Hibernate缺点:

效率相对于JDBC要低

*

3、Hibernate的设计原理

1)Hibernate是采用了ORM的思想,对JDBC进行的 封装。

2)ORM:Object Relation Mapping,即对象关系

映射,指的是Java对象和关系数据库的映射。

--之前使用JDBC开发时,需要知道数据库表和实体

对象的关系,以及字段和对象属性的关系,比如

需要知道COST表和Cost对象的关系。那么这种 关系我们之前是手动维护的,比如: cost.setName(rs.getString(”name“));ps.setString(2,cost.getName());--ORM思想是希望将这种关系的维护提炼出来,用一个公共的组件描述,那么在我们访问数据库

时,需要使用这种关系时,可以复用基于ORM 思想提炼出来的关系

--正是由于存在这样通用关系的描述,Hibernate 才可以让我们直接访问Java对象,从而通过

关系转换成SQL自动执行。

--Hibernate中将这种关系定义在XML配置文件中。

4、Hibernate体系结构

1)hibernate.cfg.xml

是Hibernate的主配置文件,用于配置数据库连接

参数,以及Hibernate框架参数。

2)实体类

是Java类型,用于封装表中的数据

3)xxx.hbm.xml

是关系映射文件,用于配置表与实体类的关系,以及表中字段与类中属性的关系。

4)Hibernate底层API

主要是用于解析主配置文件,以及关系映射文件,然后根据关系自动生成SQL并执行。

5、Hibernate常用API 1)Configuration

用于解析主配置文件的2)SessionFactory

用于创建Session的3)Session

是数据库连接会话,相当于是数据库连接。

注意:此Session和HttpSession没有任何关系。

4)Transaction

用于控制事务

5)Query

用于做特殊查询

*

6、Hibernate使用步骤

1)导包

2)引入主配置文件hibernate.cfg.xml 3)创建实体类Emp 4)*创建关系映射文件Emp.hbm.xml

--该配置文件必须和实体类同名

--该配置文件必须和实体类位于同一个包下

--在主配置文件中引入该关系映射文件

5)使用Hibernate的API,来进行增、删、改、查

Spring 1.什么是Spring,有什么作用

Spring框架属于一个解决方案框架 可以对其他技术和框架进行整合 应用。

*好处是:将程序中的各个组件和 框架技术进行解耦,便于日后系统 维护,升级和扩展操作。

在SSH中,会将Action,DAO组件都 交给Spring框架管理,由Spring 框架创建这些对象,建立这些对象 关联。

*2.Spring都含有哪些功能

--可以创建和管理程序组件对象

(相当于工厂的作用)--提供了IoC机制实现组件对象关系的解耦

--提供了AoP机制实现共通组件低耦合的调用。

(例如事务处理)--提供了对其他技术,例如JDBC,Hibernate,Struts等框架整合API--提供了一个Spring MVC框架实现

*3.Spring基本使用

1)创建和管理程序组件对象

--引入Spring IOC开发包

--在src下添加Spring配置文件

--将Bean组件定义到Spring配置

文件中

--(编码)实例化Spring容器对象

利用getBean获取Bean对象实例

*a.控制Bean对象创建模式

在使用时,可以在定义 部分利用scope属性指定bean对象 采用单例模式创建还是原型模式 创建。

scope=”singleton“表示单例模式(默认值)scope=”prototype“表示原型模式,每次调用getBean都返回一个新的 Bean对象。

b.控制Bean对象创建时机

scope=”singleton“时,Bean对象 是在容器实例化时创建。

中使用lazy-init=”true“ 可以将Bean创建推迟到getBean方法

scope=”prototype“时,Bean对象 是在getBean方法时创建。

c.追加初始化和销毁方法

中利用init-method指定 一个初始化方法。可以在对象创建 之后自动调用。

创建Bean对象后,会自动执行 myinit方法。

同理destroy-method=”mydestroy“ 在容器销毁时,也释放单例的Bean 对象,此时会自动调用mydesctory 方法。(该属性仅适用于singleton 模式的Bean对象)

2)Spring的核心IoC容器

a.IoC概念

Inversion of Control 控制反转 或反向控制(控制转移)

2004 Martin fowler提出的IoC思想.IoC思想:两个组件之间调用(例如A调用B)原有方式是A负责创建B对象;现在变成了 B对象由第三方框架或容器负责实例化,然后给A对象注入。即A对象获取B对象的 方式发生了反转。

IoC技术方案有两种:依赖注入和依赖查找 Spring采用依赖注入技术实现IoC控制。依赖技术主要以下两种方式:--set方式注入(推荐)在A中定义setB(B b),接收传进来的B对象--构造方式注入 在A中定义构造方法 public A(B b){}

DI:Dependency Injection依赖注入

b.IoC使用方法

--编写Action,定义到Spring配置中

--编写DAO,定义到Spring配置中

--在Action中定义DAO接口类型变量和

setter方法

--在Action的配置中使用下面

配置

ref=”要注入的Bean对象id值">

下载Java开发笔记 — HttpServletRequest方法总结word格式文档
下载Java开发笔记 — HttpServletRequest方法总结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    Java编程思想重点笔记(Java开发必看)

    Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而且在大型项目开发中也是常用的......

    java基础总结大全(笔记)

    一、基础知识: 1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性。 java语言是跨平台,jvm不是跨平台的。JRE(Java Runtime Environmen......

    java学习笔记

    jdk(java development kit)有如下公司或组织开发jdksun jdkibm jdkbea jrocketgun jdk其中ibm的jdk包含的jvm(java virtual machine)运行效率要比sun jdk包含的jvm高出许多。......

    java学习心得笔记

    j2ee学习笔记 注:框架可以用word菜单中的 “视图/文档结构图” 看到j2ee模式 value object(值对象)用于把数据从某个对象/层传递到其他对象/层的任意java对象。 通常不包含任......

    JAVA开发个人简历

    个 人 简 历 个人信息 姓名:xxxxxxx性别:x 电话:187-xxx7-xxxx年龄:22 邮箱: lxxxxxxx@xxx.com专业:软件技术应聘职位 Java软件开发工程师 专业技能 熟练掌握CoreJava编程,具有扎实......

    java开发面试题

    1、 编写程序 题目:古典问题:有一对公母猪,从出生后第3个月起每个月都生一对猪,小猪长到第三个月后每个月又生一对猪,假如猪都不死,问每个月的猪总数为多少? 答案: public class li......

    Java XML的开发技巧总结

    首先出场的是 DOM(JAXP Crimson 解析器) DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准。DOM 是以层次结构组织的节点或信息片断的集合。这个层次结构允许开......

    java学习笔记(更新)

    1.JSP内置对象分类 与Servlet有关的隐含对象 page、config 与Input/Output有关的隐含对象out、request、response JSP执行时,提供有关Context的隐含对象 session、applicatio......