韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全)
最新韩顺平__jsp和selverlt原完整版课件_笔记_.doc
最新韩顺平__jsp和selverlt原完整版课件_笔记_.doc◆背景知识介绍J2EE的13种技术java->servlet->jsp [技术总是有⼀个演变过程]zip粘贴到word设置◆回顾⼀下我们现有的技术java 基础(⾯向对象,集合,界⾯,线程,⽂件,⽹络)jdbc (java 的数据库编程)oracle / mysql / sqlserverhtml css javascript (web 开发) ->⽹页设计xmlserlvet+jsp ->java web开发[使⽤java技术做web开发]◆java ee 体系的介绍◆servlet项⽬演⽰◆web 开发介绍①静态页⾯(html)②动态页⾯1.⽤户可以输⼊数据,和页⾯交互(注册,购物,发帖⼦,付款...)2.不同时间打开页⾯,内容是变化.3.⽬前⽐较流⾏的左动态页⾯的技术( servlet/jsp , php , /doc/b83fffd680eb6294dd886c36.html , asp, cgi )◆动态⽹页技术的⽐较(了解)◆bs 和cs的⽐较(1)BS:browser server 浏览器服务器(2)cs client server 客户服务为什么需要的web服务器/web究竟是⼲什么的?模拟⼀个web服务器MyWebServer.javaimport java.io.*;import /doc/b83fffd680eb6294dd886c36.html .*;public class MyWebServer{public static void main(String []args) throws Exception{ServerSocket ss=new ServerSocket(80);Socket s=ss.accept();//提⽰⼀句话System.out.println("在9999 上等待连接...");OutputStream os=s.getOutputStream();BufferedReader br=new BufferedReader(new FileReader("d:\\hello.html"));String buf="";while((buf=br.readLine())!=null){os.write(buf.getBytes());}//关闭流br.close();os.close();s.close();}}◆通过tomcat来讲解BS结构◆安装tomcat服务器(1)解压即可(2)配置①在环境变量中添加JA V A_HOME= 指向你的jdk的主⽬录(并不是bin⽂件⽬录)②在不配置JA V AHOME的前提下启动tomcat 在startup.bat的第25⾏中添加set JA V A_HOME=JKD路劲(3)启动tomcat服务器到tomcat 主⽬录下bin/startup.bat(4)验证是否安装成功http://localhost:8080(8080是默认端⼝如果该端⼝已经被占⽤需要修改端⼝)◆tomcat安装后问题解决(1)tomcat⽆法正常启动的原因分析1.JA V A_HOME 配置错误,或者没有配置2.如果你的机器已经占有了8080 端⼝,则⽆法启动,解决⽅法(1) 你可以8080 先关闭netstat –annetstat –anb 来查看谁占⽤该8080(2) 主动改变tomcat的端⼝.到conf/server.xml ⽂件中修改server.xml的端⼝号)protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>(3) 能够正常启动,但是会导航到另外⼀个页⾯.去修改⼯具->管理加载项,把默认的导航给禁⽤即可.(4) 在访问tomcat时候,⼀定保证tomcat 服务器是启动◆tomcat的⽬录结构⽂件bin: 启动和关闭tomcat的bat⽂件conf: 配置⽂件-->server.xml: 该⽂件⽤于配置和server 相关的信息, ⽐如tomcat启动端⼝后,配置Host, 配置Context 即web应⽤-->web.xml : 该⽂件配置与web应⽤(web应⽤就相当于是⼀个web站点)-->tomcat-users.xml: 该⽂件⽤户配置tomcat 的⽤户密码和权限lib⽬录: 该⽬录放置运⾏tomcat 运⾏需要的jar包logs⽬录:存放⽇志, 当我们需要去查看⽇志的时候,很有⽤!,当我们启动tomcat错误时候,可以查询信息.webapps⽬录: 该⽬录下,放置我们的web应⽤(web 站点), ⽐如:建⽴web1 ⽬录下⾯放置我们的html ⽂件jsp ⽂件..图⽚... 则web1就被当做⼀个web应⽤管理起来(?特别说明tomcat 6.0 以后⽀持tomcat 5 版本还有别的设置)work: ⼯作⽬录: 该⽬录⽤于存放jsp被访问后⽣成的对应的server⽂件和.class⽂件如何去访问⼀个web 应⽤的某个⽂件◆⾸页⾯设置及⽬录规范结构现在我们要求:把hello.html⽂件设置成该web应⽤的⾸页,则需要把web应⽤的⽬录格式做的更加规范:①在web⽂件夹下配置WEB-INF⽂件夹②在web.xml ⽂件中添加配置的代码:hello1.html③通过http://localhost:8088/web1来访问hello1.htmlweb-inf⽬录下的classes⽬录将来是存放class⽂件lib ⽬录将来时存放jar⽂件web.xml 配置当前这个web应⽤的信息.◆tomcat如何去管理虚拟⽬录需求: 当我们把web 应⽤放到webapps⽬录,tomcat会⾃动管理,如果我们希望tomcat 可以管理其它⽬录下的web应⽤?->虚拟⽬录配置我在d 盘有⼀个web应⽤.◆虚拟⽬录配置步骤:①找到server.xml⽂件②编辑host节点添加Context path在server.xml中添加:myweb2:是访问时输⼊的web名,实际取出的是web2中的资源"d:\web2":绝对路径下web2中存放资源如:hello2.html实际访问时输⼊的地址:http://localhost:8088/myweb2/hello2.html绝对路径:从根分区找某个⽂件相对路径:从该⽂件位置去找另⼀个⽂件③需要重启tomcat,才能⽣效.(因为是采⽤的dom技术讲信息加载到内存中)◆context 的⼏个属性的说明path:docbase:reloadable;如果设为ture ,表⽰tomcat 会⾃动更新web应⽤,这个开销⼤,建议在开发过程中,可以设为true, 但是⼀旦真的发布了,则应当设为false;upackW AR: 如果设为ture ,则⾃动解压,否则不⾃动解压.①:打war包cd:d/web2 然后jar –cvf web2.war *②:浏览打好的war包Deploy发布后会在webapps中⾃动⽣存改⽂件◆配置域名我们看和⼀个如何配置⾃⼰的主机名:我们在实际访问⽹站的过程中,不可能使⽤http://localhost:8080/web应⽤/资源名的⽅式去访问⽹站,实际上使⽤类似/doc/b83fffd680eb6294dd886c36.html 或者/doc/b83fffd680eb6294dd886c36.html 的⽅式去访问⽹站,这个⼜是怎么实现的呢?看看ie浏览器访问⼀个web站点的流程.实现的步骤如下:(1) 在C:\WINDOWS\system32\drivers\etc 下的host⽂件添加127.0.0.1/doc/b83fffd680eb6294dd886c36.html(2) 在tomcat 的server.xml⽂件添加主机名(3) 在d:\web3 加⼊了⼀个/WEB-INF/web.xml 把hello2.html设为⾸页⾯如果连端⼝都不希望带,则可以吧tomcat的启动端⼝设为80即可.(4) 重启⽣效◆tomcat体系的再说明图:如何配置默认主机:在tomcat/conf/server.xml ⽂件◆为什么需要servlet技术?⽐如需求:我们希望⽤户可以贴,⽤户还可以回复....这样⼀些和⽤户可以交互的功能,⽤普通的java技术就完成不了, sun 就开发了servlet技术供程序员使⽤.◆servlet的介绍①servlet 其实就是java程序(java类)②该java 程序(java 类)要遵循servlet开发规范③serlvet是运⾏在服务端④serlvet 功能强⼤,⼏乎可以完成⽹站的所有功能⑤是学习jsp基础◆tomcat 和servlet 在⽹络中的位置servlet的⽣命周期是怎样的/servlet究竟是怎样⼯作的UML 时序图帮助⼤家理解参看execel⾯试题: 请简述servlet的⽣命周期(⼯作流程)答:标准版本:①WEB服务器⾸先会检查是否已经装载并创建了该servlet实例对象。
最新韩顺平java笔记整理幻灯片课件
servlet/jsp开发工具
普通的文本编辑器notepad,uedit32 集成开发工具jcreator,jbuilder,eclipse,editplus,netbean
servlet/jsp运行环境
Tomcat是一个免费的开源的servlet容器,它是Apache基金会的 Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司 及个人共同开发而成。
java.io.OutputStream
javax.servlet.ServletOutput
ng.Throwable
javax.servlet.UnavailableException
ng.Exception javax.servlet.ServletException
servlet中操作数据库
servlet操作数据库注意事项 需要将连接数据库的jar包,拷贝到tomcat服务器 具体有两种方法: 1)将jar包拷贝到tomcat目录下的lib文件夹里 2)在webapps目录的WEB-INF文件下建立一个lib文件夹,然后将 jar包拷贝到该文件夹下
4.因为session的各个属性要占用服务器的内存,因此软件公司都 是在迫不得已的情况下才使用
cookie vs session
1.存在的位置 cookie保存在客户端,session保存在服务器端 2.安全性 比较而言,cookie的安全性比session要弱 3.网络传输量 cookie通过网络在客户端与服务器端传输,而session保存在服务 器端,不需要传输
2.开发servlet(引入Tomcat文件夹下lib文件夹里的servlet-api.jar )
3.部署你的servlet(servlet开发流程)
韩顺平循序渐进学java从入门到精通(全知识点笔记整理)
Java韩顺平笔记第1讲内容介绍.项目演示.原理剖析1. 课程包括:java面向对象编程,java图形界面,java数据库编程,java文件i/o流,java网络编程,java的多线程2. Java历史:1990 sun 启动绿色计划 1992 创建 oak语言—> java1994 gosling 参加硅谷大会演示java功能震惊世界 1995 sun 正式发布java第一个版本,目前最新的是jdk7.03. java开发工具:记事本,jcreator,jbuilder,netbean,eclipse4. jdk包括:jre(java运行环境)java的工具:编译器javac.exe解释执行器java.exe java的类库:3600多个,常用的150多个5. 第一个程序://功能:显示―HelloWorld‖//public:表示类是公共的,一个文件中只有一个public类 //class:表示这个是一个类//HelloWorld:类名(公共类的类名,必须和文件名一样)public class HelloWorld {//一个主函数,程序的入口 public static void main (String args[]) { //执行语句System.out.println("helloWorld!"); } }6. Java源程序(.java文件)——>java字节码文件(.class文件)——>由解释执行器(java.exe)将字节码文件加载到java虚拟机(jvm)——>字节码文件(.class)就会在java虚拟机中执行l,average); } }第2讲变量.数据类型1. 在java里面int占4个字节,long占8个字节2. Java基本数据类型:整数:(byte一个字节:-128---127 int四个字节:-2147483648---+2147483647short两个字节:-32768---+32767 long八个字节:)小数(浮点):float double布尔:boolean字符:char(两个字节,可以存放汉字, char test1 ='中';)引申到字符串(类)3.在java中对char进行运算的时候,直接是当做ASCII码对应的整数4.数据不能从高精度到低精度的转换Byte<short<int<long<float<doublefloat a=3.4;是过不去的,在java中小数默认是double(双精度)的应该写成是float a=3.4f;不过可以强制转换:int a=(int)1.2; intb=(int)1.95. int a=1;int b=a+1.2; a先是往高精度转换,然后赋给b,就报错改成int a=1;double b=a+1.2; 或者int a=1;float b=a+1.2f; 就解决了第4讲流程控制1. switch case语句中,switch条件表达式的数据类型应该和后面case的类型一致2. switch case语句中,可用的数据类型主要是:byte short int char enum第5讲类与对象1. 面向对象编程-类与对象类名首字母大写类里面的元素叫类的成员变量/属性2. 类的定义package 包名;class 类名extends 父类implements接口名{成员变量;构造方法;成员方法;}3. 如何创建对象:先声明再创建Cat cat1;cat1=new Cat();一步到位Cat cat1 =new Cat();4. 引用传递类似于指针一样第8讲this 类变量1. this属于类的对象的而不是属于类的2. 5this不能在类的外部使用,只能在类定义时候使用!3. 可以用类名直接访问静态变量第9讲类方法封装1.类变量是该类的所有对象共享的对象,一改全改了2.定义语法:访问修饰符static 数据类型变量名3. public class Demo9{static int i=1;static{System.out.println("zhixingyicile");i++;}//会自动执行一次,也只有一次public Demo9(){System.out.println("ffffffff");i++;}public static void main(String args[]){Demo9 t1=new Demo9();System.out.println(Demo9.i);Demo9 t2=new Demo9();System.out.println(i);}}4.类方法(静态方法、静态函数):属于所有对象实例的5.Java中:类变量(static)原则上用类方法(static)去访问;类方法中不能访问非静态变量,就是非类变量,但是普通的成员方法可以访问静态变量(类变量)使用:类名.类方法名对象名.类方法名6.非类变量就是实例变量,属于每个对象自己的7.Java面向对象编程的三(四)大特征:封装、继承、多态(、抽象)8.抽象:把一类事物的共有的属性和行为提取出来,形成一个物理模板,此研究问题的方法就是抽象9.封装:把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。
韩顺平Linux视频教程—笔记(全)
韩顺平Linux视频教程—笔记(全)Linux操作系统学习linux的特点优点:1、免费的/开源的系统2、⽀持多线程/多⽤户的系统3、安全性好4、对内存和⽂件管理优越linux体积最少只需要内存4M,由于⼩所以可以做嵌⼊式开发缺点:操作相对困难Linus于1991年⾄1994年将unix的微型版minis加以开发出linux现在redhat红帽⼦、BSD、SUN等公司进⾏再发⾏在windows环境下可以使⽤(VM等)虚拟机来运⾏linux在linux运⾏startx命令可以进⼊图形操作界⾯root是linux下的系统管理员普通⽤户登陆后可以⽤su- 切换为系统管理员关机命令shutdown -h now ⽴刻进⾏关机shutdown -r now 现在重新启动计算机reboot 现在重新启动计算机logout 注销vi编辑器是linux下最有名的编辑器,也是学习linux必须掌握的⼯具,在unix下也可使⽤vi进⾏程序的开发linux可以做java/c开发在linux的vi编辑器内写⼀下简单的java程序“hello,world”1、Vi Hello.java2、输⼊i[进⼊到插⼊模式]public class hello{public static void main(String []args){System.out.println("hello,world");}}3、输⼊esc键[进⼊命令模式]4、输⼊wq保存退出/q!退出但不保存6、编译javac hello.javajavac Hello.java7、运⾏ java Hello [java运⾏的是class⽂件]ls命令显⽰当前⽂件ls -l命令显⽰详细⽂件列表如何在linux下开发c程序或是c++(cpp)程序建⽴vi hello.cpp#include <stdio.h>int main(){printf("hello!");return 0;}gcc hello.cpp ⽤gcc编译器编译出来未命名会是a.out⽂件gcc -o [⽂件名] [源⽂件名] ⽤gcc编译器编译⽂件命名/a.out 在linux下运⾏c程序只要输⼊/就可以运⾏------------------------------------------------------------linux下的⽂件⽬录linux的⽂件系统是采⽤级层式的树状⽬录结构,在此结构中的最上层是根⽬录“/”,然后在此⽬录下再创建其他的⽬录深刻理解linux⽂件⽬录是⾮常重要的。
韩顺平老师java视频课程笔记1-13课
JA V A学习记录第一讲//pulic:表示这个类是公共的,一个java文件中只能有一个public类//class :表示这是一个类//Hello:类名(公共类的类名必须和文件名一致)public class Hello{//一个主函数,相当于是程序的入口public static void main (String args[]){/* 多行注释*///System.out.println("hello");int a=10;// 定义一个变量,变量名位a,它的值为10// int为4个字节,long为8个字节int b=20;int result=a+b//输出结果system.out.println("结果是"+result)}}第二讲JA V A基本数据类型四大类型整数类型小数(浮点)类型基本数据类型布尔类型字符类型1.整数类型整数类型表示一个整数,常用的整数类型有:byte, short, int, long范围:byte 一个字节-128 – 127short 两个字节-32768 - 32767int 四个字节-2147483648 – 2147483647long 八个字节一个字节= 八个byte例:一个byte0 0 0 0 0 0 0 1 最高位为符号位0表示正数,1表示负数1 1 1 1 1 1 1 1 – 0 1 1 1 1 1 1 12.小数(浮点)类型常用类型有float, double3.布尔类型可以表示:真或者假,类型是boolean4.字符类型表示单个字符,字符类型是char,chai是两个字节,可以存放汉字。
多个字符称为字符串,在java中用String表示,String属于类。
.在java中,对char进行运算的时候,直接当做ascii码对应的整数对待。
(汉字则是unic码)定义变量int a初始化变量int a = 45给变量赋值int a ; a =45基本数据类型转换int a = 1.2 错误会损失精度double a = 4 正确数据类型可以自动从低精度向高精度转换。
韩顺平循序渐进学java从入门到精通课件笔记29讲到31讲
韩顺平循序渐进学java从入门到精通课件笔记29讲到31讲项目经理:1、懂技术2、懂行业图形界面(gui)1、sun已经提供了一个跨平台gui开发工具包awt提供了好多类与接口。
但有缺点《致命的一个本地化lcd》2、sun又创建了一个swing框架,解决了lcd问题。
swing是awt的升级版本。
就是继承的关系。
3、IBM认为swing消耗内存,创建了一个新的gui库,就是swt。
4、IBM为了方便开发swt程序,在swt基础上又创建出一个更易用,功能强大的图形包JFace。
我们重点学习swing。
了解awt。
做图形界面在MyEclipse下开发。
Eclipse最早是IBM附属公司oti开发的。
是开源的,可扩展的开发环境,是最流行的java 开发工具,但是不能开发java ee项目,否则需要安装MyEclipse,现在一般都安装MyEclipse,不单独安装Eclipse。
IDE 集成开发环境。
(vs2005 jcreater MyEclipse等等)开发java的IDE:NetBeans jbuilder jcreater MyEclipseswing组件一览表JFrame是Frame的子类,JButton也属于容器类的布局管理器:通过布局管理器来管理控件的大小与位置。
共五种,常用3种,流式布局管理器,边界布局管理器,网格布局管理器,卡片布局管理器,网格包布局管理器第三十讲:边界布局管理器:将容器化为东南西北中五个区域,中间区域最大。
JFrame JDialog对话框自建默认的是边界布局。
注意事项:1、不是五个部件都必须添加2、中部组件会自动的调节大小3、JFrame JDialog默认布局管理器就是BorderLayout。
/***BorderLayout布局*1继承JFrame*定义需要的组件*创建组件(构造函数)*添加组件*对窗体设置*/package com.test1;import java.awt.*;import javax.swing.*;public class Demo8_2 extends JFrame {JButton jb1,jb2,jb3,jb4,jb5;public static void main(String[] args) {Demo8_2 dd =new Demo8_2();}public Demo8_2(){//创建组件jb1=new JButton("中部");jb2=new JButton("北部");jb3=new JButton("东部");jb4=new JButton("南部");jb5=new JButton("西部");//添加各个组件this.add(jb1,BorderLayout.CENTER);this.add(jb2, BorderLayout.NORTH);this.add(jb3, BorderLayout.EAST);this.add(jb4,BorderLayout.SOUTH);this.add(jb5, BorderLayout.WEST);//设置窗体属性this.setTitle("这是一个演示窗体");this.setSize(200,200);this.setLocation(500, 500);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}}流式布局flowLayout,从左到右跟网页差不多注意事项:1、流式布局不限制所管理组件的大小,允许他们有最佳大小2、当容器被缩放时,组建的位置可能发生变化,但是组建的大小不发生变化(做编程时,通常不许窗口大小变化)3、默认组件是居中对齐的package com.test1;import java.awt.*;import javax.swing.*;;public class demo8_3 extends JFrame{//定义需要组建.JButton jb1,jb2,jb3,jb4,jb5,jb6;public static void main(String[] args) {demo8_3 demo=new demo8_3();}//构造函数public demo8_3(){//创建组件jb1=new JButton("关羽");jb1.setSize(100, 200);jb2=new JButton("张飞");jb3=new JButton("刘备");jb4=new JButton("诸葛亮");jb5=new JButton("曹操");jb6=new JButton("魏延");//添加组件this.add(jb1 );this.add(jb2 );this.add(jb3 );this.add(jb4 );this.add(jb5 );this.add(jb6 );//设置布局管理器,流式布局默认的是居中对齐this.setLayout(new FlowLayout(FlowLayout.RIGHT));//设置窗体属性this.setTitle("这是一个演示窗体");this.setSize(200,280);this.setLocation(500, 500);//禁止用户修改控件大小.this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true);}}网格布局:网格布局容器分割为多行多列,将组件放在格中。
韩顺平Java(持续更新中)
韩顺平Java(持续更新中)原创上课笔记,转载请注明出处第⼀章⾯向对象编程(中级部分) PDF为主1.1 IDEA删除当前⾏,ctrl+y复制当前⾏,ctrl+d补全代码,alt+/添加或者取消注释,ctrl+/导⼊该⾏需要的类,alt+enter快速格式化代码,ctrl+ALT+L快速运⾏程序,alt+r(⾃⼰设置)⽣成构造器等,alt+insert查看⼀个类的层级关系,ctrl+H,继承有⽤(光标放在类名上)快速定位某个⽅法的位置,ctrl+B(ctrl+⿏标点击)⾃动分配变量,main⽅法中,.var,例如new Scanner(System.in).var查看快捷键模板:Live Templates (例如,fori)1.2 Object类详解(equals、==、hashCode等)所有类都实现了Object类,都能使⽤Object类的⽅法。
1.2.1 ==运算符基本类型—>判断值是否相等引⽤类型—>判断地址是否相等指向同⼀个地址,结果为true1.2.2 equals()⽅法1.2.2.1 基本介绍Object的equals()⼀⽬了然,==运算符,⽤来判断地址是否相等⽽String等类的equals()被重写了,⽤来判断内容是否相等(根据需求,判断内容相等的标准也是可能会有所改变的)如何重写equals⽅法:Person person1 = new Person("jack", 10, '男');Person person2 = new Person("jack", 20, '男');System.out.println(person1.equals(person2));//假,如果没有重写Person类的equals⽅法,这⾥的equals⽅法调⽤的Object的(即,判断的是地址)⽰例代码://重写Object 的 equals⽅法public boolean equals(Object obj) {//判断如果⽐较的两个对象是同⼀个对象,则直接返回trueif(this == obj) {return true;}//类型判断if(obj instanceof Person) {//是Person,我们才⽐较//进⾏向下转型, 因为我需要得到obj的各个属性Person p = (Person)obj;return .equals() && this.age == p.age && this.gender == p.gender;}//如果不是Person ,则直接返回falsereturn false;}1.2.2.2 课堂练习第三个输出:因为Person并没有重写equals,所以这⾥调⽤的equals⽅法是Object的,判断地址是否相同的,⽽这两个新的对象肯定不相等,所以返回false 这道题需要注意的是,基本数据类型的==运算符是判断内容的1.2.3 hashCode()⽅法1.2.4 toString()⽅法全类名:包名+类名/**Object的toString() 源码(1)getClass().getName() 类的全类名(包名+类名 )(2)Integer.toHexString(hashCode()) 将对象的hashCode值转成16进制字符串*/public String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());}1.2.5 finalize()⽅法public class Finalize_ {public static void main(String[] args) {Car bmw = new Car("宝马");//这时 car对象就是⼀个垃圾,垃圾回收器就会回收(销毁)对象, 在销毁对象前,会调⽤该对象的finalize⽅法//,程序员就可以在 finalize中,写⾃⼰的业务逻辑代码(⽐如释放资源:数据库连接,或者打开⽂件..)//,如果程序员不重写 finalize,那么就会调⽤ Object类的 finalize, 即默认处理//,如果程序员重写了finalize, 就可以实现⾃⼰的逻辑bmw = null;System.gc();//主动调⽤垃圾回收器System.out.println("程序退出了....");}}class Car {private String name;//属性, 资源。
韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全)
java平台1、J2SE java开发平台标准版2、J2EE java开发平台企业版java程序需要在虚拟机上才可以运行,换言之只要有虚拟机的系统都可以运行java程序。
不同系统上要安装对应的虚拟机才可以运行java程序开发步骤1、编写源文件 (.java)2、编译源文件为类文件(.class)可用J2SE或J2EE编译3、在虚拟机上运行注释//单行注释/* */多行注释java内容介绍java编程可以分成三个方向:1、java se (j2se)桌面开发 java中的基础中的基础2、java ee (j2ee)web开发3、java me (j2me)手机开发java se课程介绍java面向对象编程(基础)java图开界面开发java数据库编程java文件io流编程java网络编程java多线程编程java ee基础1java面向对象编程--数据库编程-->java sejava 基础2html--css--javascript-->div+cssjava ee中级部分Servlet--Jsp-->mvc模式java ee高级部分Struts--Ejb--Hibernate--Spring--Ajax(ext,dw2)-->ssh框架java之父gosling1990 sun启动绿色计划1 | 4451992 创建oak语言-->java1994 gosling参加硅谷大会演示java功能,震惊世界1995 sun正式发布java第一个版本,目前最新是jdk7.0java开发工具记事本、(jcreator、jbuilder退出舞台了)、netbean、eclipse如何选择开发工具先选择记事本,对java有一定了解后再使用eclipse高级开发工具为什么呢?1、更深刻的理解java技术,培养代码感2、有利于公司面试java语言的特点1、java语言是简单的2、java语言是面向对象的3、java语言是跨平台(操作系统)的[即一次编译,到处运行]4、java是高性能的java第一个程序hello.java运行java程序要安装和配置jdkjdk是什么?1、jdk全称java dvevlopment kit中文java开发工具包2、jdk是sun公司开发的3、jdk包括jre(java runtime envirnment)java运行环境、一堆java工具和java基础的类库(类共3600左右,常用类在150个左右)4、可以在下载**开发安装jdk,用户执行需要安装jre配置JDK添加环境变量即可windows下配置jdk在计算机属性--高级设置--环境变量--添加PATH将JDK所在路径指定即可。
韩顺平_轻松搞定网页设计html+(DIV+CSS)+javascript视频笔记(全)
韩顺平html第二讲<html><head><title>第一个网页</title></head><body><!-1-><font color=red>hello world</font><!--使用<font color=red></font>来调整字体颜色--></br><!-2-><font size=7 color=blue>hello world1</font><!--使用<font size=7></font>来调整字体大小,但是size里面的取值是1—7--></br><!-3-><font style="font-size:150px" color=yellow>hello world2</font><!--使用CSS中<font style="font-size:40px"></font>将字体调整更大--></br><!-4-><p><font color=cyan>为字体更换颜色4</font></p><b><font color="red">hhhhh</font></b><!-5-></body></html>韩顺平html第三讲Html的超链接:例子:<html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title></head><body><!--*****************html超链接案例***************--><!--*****************html超链接默认格式***************--><a href="">超链接</a> </br> <!--超链接基本格式--><!--**target常见的两个属性-blank(表示在新页面打开文件).-self(表示替换当前页面)**--><a href=""target= "-blank">在新窗口打开</a><!--超链接在新窗口下打开文件--></br><a href=""target= "-self">在本页面打开</a> <!--超链接在本页面打开文件--></br><ahref="mailto:**************************">给自己写信</a></body></html>Html图片元素(标记):<img src ="图片路径" width="宽度" height=”高度” ></img>案例:(网页上显示图片)<html xmlns="/1999/xhtml"><head><title>无标题文档</title></head><body><!--*****************图片元素***************--><img src ="a.jpg" width="100" > <!--***********插入图片************--><a href=""><img src ="a.jpg" width="100" ></a> <!--***********图片链接************--> <img src ="/photo/OqCsSUr6ytmOilpU0_1VaA==/4023121842125901437.jpg" width="400" ><img src ="a.jpg" width="100" border="10" > </img> <!--*******border表示为插入的图片加上边框********--></body></html>Table表格:<!--<table border=”边框宽度“cellspacing”两个列行间的距离大小”cellpadding”各行列间的内容被填充" align="表格的位置" bgcolor="设置表格背景颜色"></table <!--**tr表示行,td表示列,<tr align="设置字体对齐方式</tr>"***-->案例:<html xmlns="/1999/xhtml"><head><title>无标题文档</title></head><body>******************表格,为表格添加背景****************</br><!--<table border=”边框宽度”cellspacing”空隙大小”cellpadding”填充大小" align="表格的位置" bgcolor="设置表格背景颜色"></table>--><table border="15" height="1" cellpadding="20" cellspacing="0" width="477" align="center" bgcolor="cyan"> <tr align="center"><td >1</td><td>2</td><td>3</td></tr> <!--**tr表示行,td表示列,<tr align="设置字体对齐方式</tr>"***--></table></body></html>韩顺平html第四讲合并单元格:colspan=跨行列数roespan=跨列行数<head><title> 表格</title>***********菜谱***********<table border=1 bordercolor=red cellspacing=0 align="center" width=500px cellpadding="0" height=180> <tr align=center><td colspan=3>周一菜谱</td>></tr><tr align=center><td rowspan=2>素菜</td>><td>青菜</td>><td>土豆</td></tr><tr align=center><td>豆腐</td>><td>白菜</td></tr><tr align=center><td rowspan=2>荤菜</td>><td>肉丝</td>><td>大虾</td></tr><tr align=center><td>海参<img src="a.jpg" width=70></img></td>><td>鲍鱼</td>></tr></head><body></body></html>注释:<tr align=center></tr>在此处表示字体的对齐方式韩顺平html第五讲无序列表(html常用标记/元素-ui/li)格式: Html列表——无序列表<ul type=”属性值”><li>列表内容</li></ul><ul>的属性设定(常用):例如:<ul tyre=”square”>Type=”squre”设定符号款式,其值有三种,如下,默认为Typr=”disc”Type=”disc”时的列项符号是实心圆点Type=”circle”时的列项符号为空心圆Type=”square”时的列项符号为空心正方形************无序列表代码例子*********<html><body><ul type="circle"><li>1</li><li>1</li><li>1</li></ul></body></html>Html列表——有序列表ol称顺序列表标记<ol type=”属性值” start=”起始值”><li>列表内容</li></ol>的属性设定(常用):例如:<ol type=”i” start=”4”></ol>type=”i”设定数目款式的值有5种:阿拉伯数字,a小写字母,A大写字母,i小写罗马数字,I大写罗马数字************有序列表代码例子*********<html><body><ol type="1"><li>1</li><li>1</li><li>1</li></ol><ol type="1" start=”5”><li>1</li><li>1</li><li>1</li></ol></body></html>Html框架标记(元素)frameset/frame<Frameset frameborder=”边框大小”cols=”按照列的百分比,隔开”>rows=”按照行的百分比><Frame name=”给frame取名” src=”html路径” noresize></frameset>实例:qq.html<html><body bgcolor=blue>歌词</body></html>ee.html<html><body bgcolor=red>费玉清</body></html>All.html<html><frameset cols="20%,*" frameborder=100><frame src="qq.html" noresise name=”song” /><frame src="ee.html" noresise name=”jun” / ></frameset></html>注释:all.html中不能带body标记综合案例:all.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><title> New Document </title></head><frameset rows="30%,*" border="0"><frame src="top.html"noresize/><frameset cols="20%,*"><frame src="left.html" border=0 noresize/><!--frame元素中有一个属性,相当于给该frame取名--><frame src="right1.html"name="right"/></frameset></frameset></html>top.html<html><head><title> New Document </title></head><body ><img src="logo1.jpg" ></img></body></html>Left.html<html><head><title> New Document </title></head><body bgcolor=pink><a href="right1.html"target="right">青花瓷1</a></br><a href="right2.html"target="right">青花瓷2</a></br></body></html>Right1.html<html><head><title> New Document </title></head><body bgcolor=blue><p>right1.html</p></body></html>Right2.html<html><head><title> New Document </title></head><body bgcolor=yellow><p>right2.html</p></body></html>韩顺平html第六讲html表单form:介绍:html的表单元素,主要用于让客户输入数据,并提交给服务器语法格式:<form action=”url” method=“提交方法(get,post)默认是get方法”> 各种元素(输入框,下拉列表,文本域,密码框)<input type=submit><input type=reset></form>代码:提交界面.html<html><head><title> 登陆界面</title></head><body><h1>登陆界面</h1><form action="ok.html" method="get" align=center>用户名:<input type="text" name="username"/></br>密 码:<input type="password" name="pwd"/></br><input type="submit" value="登录"/><input type="reset" value="重新填写"/></form></body></html>Ok.html<html><head></head><body>ok</body></html>表单中提供给用户的输入形式有:<input type=* name=**>*=text文本框, password密码框, checkbox复选框, radio单选框, image图片按钮, hidden , submit提交按钮, reset重置按钮name是你给表单元素取的名子**=Symbolic Name for CGI scriptAction:指定把请求交给那个界面其他:<html><head><title> New Document </title></head><body>1****************复选框*******************</br><form action="" method="post" ><input type="checkbox" name="1"/>苹果<p><input type="checkbox" name="1"/>香蕉<p><p ><font color=red>*****************单选框******************</font></p></br><input type="radio" name="1"/>苹果<p><input type="radio" name="1" checked/>香蕉<p>2******隐藏一个表单元素****用处是可提交数据,同时不影响界面**********</br><input type="hidden" name="add" value="a.jpg">这里有一个隐藏的表单元素<p><p ><font*****************图片按钮******************</font></p></br> <input type="image" name="submit" src="a.jpg" width=30 align="top"/>苹果<p> *****************下拉列表******************</br><select name="like"><option valu= select>--请选择--</option><option valu=网游select>网游</option><option valu=足球select>足球</option><option valu=游泳select>游泳</option></select></br>*******文本区**<!--cols表示行,rows表示列-->*******</br><textarea name="comment" rows="4" cols="25">请输入文本</textarea></select></br>************请选择要上传的文件*************</br><input type="file" name="myfile">请选择文件</br>************按钮*************</br><input type="button" value="点击一下吧"/></input></form></body></html>韩顺平html第二讲<html><head><title>第一个网页</title></head><body><!-1-><font color=red>hello world</font><!--使用<font color=red></font>来调整字体颜色--></br><!-2-><font size=7 color=blue>hello world1</font><!--使用<font size=7></font>来调整字体大小,但是size里面的取值是1—7--></br><!-3-><font style="font-size:150px" color=yellow>hello world2</font><!--使用CSS中<font style="font-size:40px"></font>将字体调整更大--></br><!-4-><p><font color=cyan>为字体更换颜色4</font></p><b><font color="red">hhhhh</font></b><!-5-></body></html>韩顺平html第三讲Html的超链接:例子:<html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>无标题文档</title></head><body><!--*****************html超链接案例***************--><!--*****************html超链接默认格式***************--><a href="">超链接</a> </br> <!--超链接基本格式--><!--**target常见的两个属性-blank(表示在新页面打开文件).-self(表示替换当前页面)**--><a href=""target= "-blank">在新窗口打开</a><!--超链接在新窗口下打开文件--></br><a href=""target= "-self">在本页面打开</a> <!--超链接在本页面打开文件--></br><ahref="mailto:**************************">给自己写信</a></body></html>Html图片元素(标记):<img src ="图片路径" width="宽度" height=”高度” ></img>案例:(网页上显示图片)<html xmlns="/1999/xhtml"><head><title>无标题文档</title></head><body><!--*****************图片元素***************--><img src ="a.jpg" width="100" > <!--***********插入图片************--><a href=""><img src ="a.jpg" width="100" ></a> <!--***********图片链接************--> <img src ="/photo/OqCsSUr6ytmOilpU0_1VaA==/4023121842125901437.jpg" width="400" ><img src ="a.jpg" width="100" border="10" > </img> <!--*******border表示为插入的图片加上边框********--></body></html>Table表格:<!--<table border=”边框宽度“cellspacing”两个列行间的距离大小”cellpadding”各行列间的内容被填充" align="表格的位置" bgcolor="设置表格背景颜色"></table <!--**tr表示行,td表示列,<tr align="设置字体对齐方式</tr>"***-->案例:<html xmlns="/1999/xhtml"><head><title>无标题文档</title></head><body>******************表格,为表格添加背景****************</br><!--<table border=”边框宽度”cellspacing”空隙大小”cellpadding”填充大小" align="表格的位置" bgcolor="设置表格背景颜色"></table>--><table border="15" height="1" cellpadding="20" cellspacing="0" width="477" align="center" bgcolor="cyan"> <tr align="center"><td >1</td><td>2</td><td>3</td></tr> <!--**tr表示行,td表示列,<tr align="设置字体对齐方式</tr>"***--></table></body></html>韩顺平html第四讲合并单元格:colspan=跨行列数roespan=跨列行数<head><title> 表格</title>***********菜谱***********<table border=1 bordercolor=red cellspacing=0 align="center" width=500px cellpadding="0" height=180> <tr align=center><td colspan=3>周一菜谱</td>></tr><tr align=center><td rowspan=2>素菜</td>><td>青菜</td>><td>土豆</td></tr><tr align=center><td>豆腐</td>><td>白菜</td></tr><tr align=center><td rowspan=2>荤菜</td>><td>肉丝</td>><td>大虾</td></tr><tr align=center><td>海参<img src="a.jpg" width=70></img></td>><td>鲍鱼</td>></tr></head><body></body></html>注释:<tr align=center></tr>在此处表示字体的对齐方式韩顺平html第五讲无序列表(html常用标记/元素-ui/li)格式: Html列表——无序列表<ul type=”属性值”><li>列表内容</li></ul><ul>的属性设定(常用):例如:<ul tyre=”square”>Type=”squre”设定符号款式,其值有三种,如下,默认为Typr=”disc”Type=”disc”时的列项符号是实心圆点Type=”circle”时的列项符号为空心圆Type=”square”时的列项符号为空心正方形************无序列表代码例子*********<html><body><ul type="circle"><li>1</li><li>1</li><li>1</li></ul></body></html>Html列表——有序列表ol称顺序列表标记<ol type=”属性值” start=”起始值”><li>列表内容</li></ol>的属性设定(常用):例如:<ol type=”i” start=”4”></ol>type=”i”设定数目款式的值有5种:阿拉伯数字,a小写字母,A大写字母,i小写罗马数字,I大写罗马数字************有序列表代码例子*********<html><body><ol type="1"><li>1</li><li>1</li><li>1</li></ol><ol type="1" start=”5”><li>1</li><li>1</li><li>1</li></ol></body></html>Html框架标记(元素)frameset/frame<Frameset frameborder=”边框大小”cols=”按照列的百分比,隔开”>rows=”按照行的百分比><Frame name=”给frame取名” src=”html路径” noresize></frameset>实例:qq.html<html><body bgcolor=blue>歌词</body></html>ee.html<html><body bgcolor=red>费玉清</body></html>All.html<html><frameset cols="20%,*" frameborder=100><frame src="qq.html" noresise name=”song” /><fram e src="ee.html" noresise name=”jun” / ></frameset></html>注释:all.html中不能带body标记综合案例:all.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><title> New Document </title></head><frameset rows="30%,*" border="0"><frame src="top.html"noresize/><frameset cols="20%,*"><frame src="left.html" border=0 noresize/><!--frame元素中有一个属性,相当于给该frame取名--><frame src="right1.html"name="right"/></frameset></frameset></html>top.html<html><head><title> New Document </title></head><body ><img src="logo1.jpg" ></img></body></html>Left.html<html><head><title> New Document </title></head><body bgcolor=pink><a href="right1.html"target="right">青花瓷1</a></br><a href="right2.html"target="right">青花瓷2</a></br></body></html>Right1.html<html><head><title> New Document </title></head><body bgcolor=blue><p>right1.html</p></body></html>Right2.html<html><head><title> New Document </title></head><body bgcolor=yellow><p>right2.html</p></body></html>韩顺平html第六讲html表单form:介绍:html的表单元素,主要用于让客户输入数据,并提交给服务器语法格式:<form action=”url” method=“提交方法(get,post)默认是get方法”> 各种元素(输入框,下拉列表,文本域,密码框)<input type=submit><input type=reset></form>代码:提交界面.html<html><head><title> 登陆界面</title></head><body><h1>登陆界面</h1><form action="ok.html" method="get" align=center>用户名:<input type="text" name="username"/></br>密 码:<input type="password" name="pwd"/></br><input type="submit" value="登录"/><input type="reset" value="重新填写"/></form></body></html>Ok.html<html><head></head><body>ok</body></html>表单中提供给用户的输入形式有:<input type=* name=**>*=text文本框, password密码框, checkbox复选框, radio单选框, image图片按钮, hidden , submit提交按钮, reset重置按钮name是你给表单元素取的名子**=Symbolic Name for CGI scriptAction:指定把请求交给那个界面其他:<html><head><title> New Document </title></head><body>1****************复选框*******************</br><form action="" method="post" ><input type="checkbox" name="1"/>苹果<p><input type="checkbox" name="1"/>香蕉<p><p ><font color=red>*****************单选框******************</font></p></br><input type="radio" name="1"/>苹果<p><input type="radio" name="1" checked/>香蕉<p>2******隐藏一个表单元素****用处是可提交数据,同时不影响界面**********</br><input type="hidden" name="add" value="a.jpg">这里有一个隐藏的表单元素<p><p ><font*****************图片按钮******************</font></p></br> <input type="image" name="submit" src="a.jpg" width=30 align="top"/>苹果<p> *****************下拉列表******************</br><select name="like"><option valu= select>--请选择--</option><option valu=网游select>网游</option><option valu=足球select>足球</option><option valu=游泳select>游泳</option></select></br>*******文本区**<!--cols表示行,rows表示列-->*******</br><textarea name="comment" rows="4" cols="25">请输入文本</textarea></select></br>************请选择要上传的文件*************</br><input type="file" name="myfile">请选择文件</br>************按钮*************</br><input type="button" value="点击一下吧"/></input></form></body></html>DIV+CSS部分笔记当属性设置float(浮动)时,其所在的物理位置已经脱离文档流了,但是大多时候我们希望文档流能识别float(浮动),或者是希望float(浮动)后面的元素不被float(浮动)所影响,这个时候我们就需要用clear:both;来清除。
韩顺平老师oracle视频教程听课笔记
韩顺平老师 oracle教程笔记1.Oracle认证,与其它数据库比较,安装Oracle安装会自动的生成sys用户和system用户:(1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户默认的密码是change_on_install (2)system用户是管理操作员,权限也很大。
具有sysoper角色,没有create database的权限,默认的密码是manager (3)一般讲,对数据库维护,使用system用户登录就可以拉也就是说sys和system这两个用户最大的区别是在于有没有create database的权限。
2.Oracle的基本使用--基本命令sql*plus的常用命令连接命令1.conn[ect]用法:conn 用户名/密码@网络服务名[as sysdba/sysoper]当用特权用户身份连接时,必须带上as sysdba或是as sysoper 2.disc[onnect]说明: 该命令用来断开与当前数据库的连接3.psssw[ord]说明: 该命令用于修改用户的密码,如果要想修改其它用户的密码,需要用sys/system登录。
4.show user说明: 显示当前用户名5.exit说明: 该命令会断开与数据库的连接,同时会退出sql*plus文件操作命令1.start和@说明: 运行sql脚本案例: sql>@ d:\a.sql或是sql>start d:\a.sql2.edit说明: 该命令可以编辑指定的sql脚本案例: sql>edit d:\a.sql,这样会把d:\a.sql这个文件打开3.spool说明: 该命令可以将sql*plus屏幕上的内容输出到指定文件中去。
案例: sql>spool d:\b.sql 并输入 sql>spool off交互式命令1.&说明:可以替代变量,而该变量在执行时,需要用户输入。
韩顺平 循序渐进学java 从入门到精通 课件 笔记 第七十讲到第七十三讲
由于对数据库操作后有很多重复代码.这样可以把操作封装成一个类,这个类可以完成对表的操作.第七十一讲: 初步理解模式的概念(mv):增加项目的可维护性,尤其在做一个大项目的时候,如果没有一个好的方案的话,那么就会很悲剧了.软件开发也是一个渐进的过程./*** 写成一个 ming版的学生管理系统* 1,查询任务* 2,添加学生*/package com.test1;import java.awt.*;import java.awt.event.*;import java.sql.*;import javax.swing.*;public class StudentManagement extends JFrame implements ActionListener {//定义一些控件JPanel jp1,jp2;JLabel jl;JButton jb1,jb2,jb3,jb4;JTable jt ;JTextField jtf;JScrollPane jsp =null;Connection ct=null;PreparedStatement ps=null;StuModel sm=null;public static void main(String[] args) { StudentManagement ta=new StudentManagement();}public StudentManagement(){jp1=new JPanel();jl=new JLabel("请输入名字:");jtf=new JTextField(20);jb1=new JButton("查询");//注册监听jb1.addActionListener(this);//把各个控件加入到jp1;jp1.add(jl);jp1.add(jtf);jp1.add(jb1);jp2=new JPanel();jb2=new JButton("添加");jb3 =new JButton("修改");jb4 =new JButton("删除");//注册监听jb2.addActionListener(this);jb3.addActionListener(this);jb4.addActionListener(this);jp2.add(jb2);jp2.add(jb3);jp2.add(jb4);//创建一个数据模型对象sm =new StuModel();//初始化JTablejt=new JTable(sm);//初始化jspjsp=new JScrollPane(jt);//吧jsp放进到JFramethis.add(jsp);this.add(jp1,BorderLayout.NORTH);this.add(jp2,BorderLayout.SOUTH);this.setSize(500,400);this.setLocation(200, 200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub//判断是那个按钮被点击//如果相应与监听在同一个类中也可以用下面方法.if(e.getSource()==jb1){//System.out.println("用户希望查询");测试用的//因为把表的数据封装到StuModel中,我们就可以比较简单地完成查询任务String name=this.jtf.getText().trim();//写一个sql语句String sql ="select * from student where stuName='"+name+"'";//构建新的数据模型类并更新sm =new StuModel(sql);jt.setModel(sm);}//当用户点击添加else if(e.getSource()==jb2){//合理应该为模式的状态,否则,还没有插完就会执行下面的语句,导致无法更新.StuAddDialog sad =new StuAddDialog(this,"添加学生",true);//重新再获得新的数据模型sm =new StuModel();jt.setModel(sm);}else if(e.getSource()==jb3){System.out.print("aaaa");int rownum =this.jt.getSelectedRow();if(rownum==-1){//提示JOptionPane.showMessageDialog(this, "请选择一行");return;//代表不要再往下面走了,谁调用就返回给谁}//显示修改对话框new StudentUpdateDialog(this,"修改对话框",true,sm,rownum);}//当前用户点击删除else if(e.getSource()==jb4){//得到该学生的id//getSelectedRo会返回用户点击的行//如果一行都没选,则会返回-1int rownum=this.jt.getSelectedRow();if(rownum==-1){//提示JOptionPane.showMessageDialog(this, "请选择一行");return;//代表不要再往下面走了,谁调用就返回给谁}//得到学生的编号String stuId=(String)sm.getValueAt(rownum, 0);//System.out.print(stuId);//测试用的//连接数据库,完成删除任务try{//加载驱动Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//System.out.print("1");//测试用的//得到连接ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;d atabaseName=spdb1","sa","h123");//System.out.print("2");//测试用的ps=ct.prepareStatement("delete from student wherestuid='"+stuId+"'");//System.out.print("3");//测试用的ps.executeUpdate();}catch(Exception ex){ex.printStackTrace();}finally{try {if(ps!=null) ps.close();if(ct!=null) ps.close();} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}sm =new StuModel();jt.setModel(sm);}}}/*** 这是我的一个Student表的模型* 可以把对student表的各种操作封装到该模型中*/package com.test1;import java.sql.*;import java.util.V ector;import javax.swing.JTable;import javax.swing.table.AbstractTableModel; public class StuModel extends AbstractTableModel{V ector rowData, columnNames;JTable jt=null;//定义操作数据库需要的东西PreparedStatement ps=null;Connection ct=null;ResultSet rs =null;public void init(String sql){if(sql ==null){sql ="select * from student";}//中间处理jt =new JTable();columnNames=new V ector();//设置列名columnNames.add("学号");columnNames.add("名字");columnNames.add("性别");columnNames.add("年龄");columnNames.add("籍贯");columnNames.add("系别");//rowData可以存放多行rowData =new V ector();try{//加载驱动Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//System.out.print("1");//测试用的//得到连接ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;databaseName=spdb1","s a","h123");//System.out.print("2");//测试用的ps=ct.prepareStatement(sql);//System.out.print("3");//测试用的rs=ps.executeQuery();//System.out.print("4");//测试用的while(rs.next()){V ector hang =new V ector();hang.add(rs.getString(1));hang.add(rs.getString(2));hang.add(rs.getString(3));hang.add(rs.getInt(4));hang.add(rs.getString(5));hang.add(rs.getString(6));//加入到rowDatarowData.add(hang);}//System.out.print("5");//测试用的}catch(Exception e){e.printStackTrace();}finally{try {if(rs!=null) rs.close();if(ps!=null) ps.close();if(ct!=null) ct.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}//通过传递的sql语句来获得数据模型public StuModel(String sql){init(sql);}//构造函数,初始化我们的数据模型public StuModel(){this.init(null);}public void addStu(String sql){//根据用户输入的sql语句完成添加任务.}@Overridepublic String getColumnName(int column) {// TODO Auto-generated method stubreturn (String)this.columnNames.get(column);}@Override//得到共有多少列public int getColumnCount() {// TODO Auto-generated method stub//System.out.print("getColumnCount");//测试所用return this.columnNames.size();}@Override//得到共有多少行public int getRowCount() {// TODO Auto-generated method stubreturn this.rowData.size();}@Override//得到某行某列的数据public Object getV alueAt(int rowIndex, int columnIndex) {// TODO Auto-generated method stubreturn ((V ector)this.rowData.get(rowIndex)).get(columnIndex);}}package com.test1;import java.awt.*;import java.awt.event.*;import java.sql.*;import javax.swing.*;public class StuAddDialog extends JDialog implements ActionListener{//定义我需要的swing组件JLabel jl1, jl2,jl3, jl4, jl5 ,jl6;JButton jb1,jb2;JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;JPanel jp1,jp2,jp3;//构造函数 Frame代表父窗口口,title代表窗口的名字,model指定是模式窗口,还是非模式的窗口public StuAddDialog(Frame owner,String title,boolean model){super(owner,title, model); //调用父类构造方法,达到模式对话框效果jl1=new JLabel("学号");jl2=new JLabel("姓名");jl3=new JLabel("性别");jl4=new JLabel("年龄");jl5=new JLabel("籍贯");jl6=new JLabel("系别");jtf1=new JTextField();jtf2=new JTextField();jtf3=new JTextField();jtf4=new JTextField();jtf5=new JTextField();jtf6=new JTextField();jb1=new JButton ("添加");jb2=new JButton ("取消");jp1=new JPanel();jp2=new JPanel();jp3=new JPanel();//设置布局jp1.setLayout(new GridLayout(6,1)); jp2.setLayout(new GridLayout(6,1));//添加组件jp1.add(jl1);jp1.add(jl2);jp1.add(jl3);jp1.add(jl4);jp1.add(jl5);jp1.add(jl6);jp2.add(jtf1);jp2.add(jtf2);jp2.add(jtf3);jp2.add(jtf4);jp2.add(jtf5);jp2.add(jtf6);jp3.add(jb1);jp3.add(jb2);this.add(jp1,BorderLayout.WEST); this.add(jp2,BorderLayout.CENTER);this.add(jp3,BorderLayout.SOUTH);//注册监听jb1.addActionListener(this);//展现this.setSize(300,200);this.setLocation(200, 300);this.setVisible(true);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif(e.getSource()==jb1){//对用户点击添加按钮后的响应动作//连接数据库Connection ct =null;PreparedStatement ps =null;try {//加载驱动Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//获取连接ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;d atabaseName=spdb1","sa","h123");//预编译的都是通过添加参数的方式来赋值ps=ct.prepareStatement("insert into student values (?,?,?,?,?,?)");ps.setString(1, this.jtf1.getText());ps.setString(2, this.jtf2.getText());ps.setString(3, this.jtf3.getText());ps.setInt(4, Integer.parseInt(this.jtf4.getText()));ps.setString(5, this.jtf5.getText());ps.setString(6, this.jtf6.getText());int i=ps.executeUpdate();if(i==1){System.out.print("添加成功ok");}else{System.out.print("添加失败");}} catch (Exception e1) {// TODO Auto-generated catch blocke1.printStackTrace();}finally{try {ps.close();ct.close();} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}}}}/*** 修改学生界面*/package com.test1;import java.awt.*;import java.awt.event.*;import java.sql.*;import javax.swing.*;public class StudentUpdateDialog extends JDialog implements ActionListener{//定义我需要的swing组件JLabel jl1, jl2,jl3, jl4, jl5 ,jl6;JButton jb1,jb2;JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;JPanel jp1,jp2,jp3;//构造函数 Frame代表父窗口口,title代表窗口的名字,model指定是模式窗口,还是非模式的窗口public StudentUpdateDialog(Frame owner,String title,boolean model,StuModel sm,int rownum){super(owner,title, model); //调用父类构造方法,达到模式对话框效果jl1=new JLabel("学号");jl2=new JLabel("姓名");jl3=new JLabel("性别");jl4=new JLabel("年龄");jl5=new JLabel("籍贯");jl6=new JLabel("系别");jtf1=new JTextField();jtf2=new JTextField();jtf3=new JTextField();jtf4=new JTextField();jtf5=new JTextField();jtf6=new JTextField();//初始化数据jtf1.setText((String)sm.getValueAt(rownum, 0));jtf1.setEditable(false);jtf2.setText((String)sm.getValueAt(rownum, 1));jtf3.setText((String)sm.getValueAt(rownum, 2));jtf4.setText(sm.getValueAt(rownum, 3)+"");jtf5.setText((String)sm.getValueAt(rownum, 4));jtf6.setText((String)sm.getValueAt(rownum, 5));jb1=new JButton ("修改");jb2=new JButton ("取消");jp1=new JPanel();jp2=new JPanel();jp3=new JPanel();//设置布局jp1.setLayout(new GridLayout(6,1));jp2.setLayout(new GridLayout(6,1));//添加组件jp1.add(jl1);jp1.add(jl2);jp1.add(jl3);jp1.add(jl4);jp1.add(jl5);jp1.add(jl6);jp2.add(jtf1);jp2.add(jtf2);jp2.add(jtf3);jp2.add(jtf4);jp2.add(jtf5);jp2.add(jtf6);jp3.add(jb1);jp3.add(jb2);this.add(jp1,BorderLayout.WEST);this.add(jp2,BorderLayout.CENTER);this.add(jp3,BorderLayout.SOUTH);//注册监听jb1.addActionListener(this);//展现this.setSize(300,200);this.setLocation(200, 300);this.setVisible(true);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif(e.getSource()==jb1){//对用户点击添加按钮后的响应动作//连接数据库Connection ct =null;PreparedStatement ps =null;try {//加载驱动Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//获取连接ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;d atabaseName=spdb1","sa","h123");//预编译的都是通过添加参数的方式来赋值ps=ct.prepareStatement("update student setstuName=?,stuSex=?,stuAge=?,stuJg=?,stuDept=? where stuId=?");ps.setString(1, this.jtf2.getText());ps.setString(2, this.jtf3.getText());ps.setInt(3, Integer.parseInt(this.jtf4.getText()));ps.setString(4, this.jtf5.getText());ps.setString(5, this.jtf6.getText());ps.setString(6, this.jtf1.getText());int i=ps.executeUpdate();if(i==1){System.out.print("修改成功ok");}else{System.out.print("修改失败");}} catch (Exception e1) {// TODO Auto-generated catch blocke1.printStackTrace();}finally{try {ps.close();ct.close();} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}}}}}第七十二讲:下面将前面的model1模式改成model2模式Model2模式的最大特点是: 界面和后台操作是分离的,代码复用性高,可读性好,可维护性高;缺点是:复杂性高.现在大部分公司采用的是model2模式./*** Model2 模式* 写成一个ming版的学生管理系统* 1,查询任务* 2,添加学生*/package com.test2;import java.awt.*;import java.awt.event.*;import java.sql.*;import javax.swing.*;public class StudentManagement extends JFrame implements ActionListener {//定义一些控件JPanel jp1,jp2;JLabel jl;JButton jb1,jb2,jb3,jb4;JTable jt ;JTextField jtf;JScrollPane jsp =null;StuModel sm=null;public static void main(String[] args) {StudentManagement ta=new StudentManagement();}public StudentManagement(){jp1=new JPanel();jl=new JLabel("请输入名字:");jtf=new JTextField(20);jb1=new JButton("查询");//注册监听jb1.addActionListener(this);//把各个控件加入到jp1;jp1.add(jl);jp1.add(jtf);jp1.add(jb1);jp2=new JPanel();jb2=new JButton("添加");jb3 =new JButton("修改");jb4 =new JButton("删除");//注册监听jb2.addActionListener(this);jb3.addActionListener(this);jb4.addActionListener(this);jp2.add(jb2);jp2.add(jb3);jp2.add(jb4);//创建一个数据模型对象sm =new StuModel();//初始化JTablejt=new JTable(sm);//初始化jspjsp=new JScrollPane(jt);//吧jsp放进到JFramethis.add(jsp);this.add(jp1,BorderLayout.NORTH);this.add(jp2,BorderLayout.SOUTH);this.setSize(500,400);this.setLocation(200, 200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setV isible(true);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stub//判断是那个按钮被点击//如果相应与监听在同一个类中也可以用下面方法.if(e.getSource()==jb1){//因为把表的数据封装到StuModel中,我们就可以比较简单地完成查询任务String name=this.jtf.getText().trim();//写一个sql语句String sql ="select * from student where stuName='"+name+"'";//构建新的数据模型类并更新sm =new StuModel(sql);jt.setModel(sm);}//当用户点击添加else if(e.getSource()==jb2){//合理应该为模式的状态,否则,还没有插完就会执行下面的语句,导致无法更新.StuAddDialog sad =new StuAddDialog(this,"添加学生",true);//重新再获得新的数据模型sm =new StuModel();jt.setModel(sm);}else if(e.getSource()==jb3){System.out.print("aaaa");int rownum =this.jt.getSelectedRow();if(rownum==-1){//提示JOptionPane.showMessageDialog(this, "请选择一行");return;//代表不要再往下面走了,谁调用就返回给谁}//显示修改对话框new StudentUpdateDialog(this,"修改对话框",true,sm,rownum);}//当前用户点击删除else if(e.getSource()==jb4){//得到该学生的id//getSelectedRo会返回用户点击的行//如果一行都没选,则会返回-1int rownum=this.jt.getSelectedRow();if(rownum==-1){//提示JOptionPane.showMessageDialog(this, "请选择一行");return;//代表不要再往下面走了,谁调用就返回给谁}//得到学生的编号String stuId=(String)sm.getV alueAt(rownum, 0);//System.out.print(stuId);//测试用的StuModel temp=new StuModel();//创建一个sql 语句String sql ="delete from student where stuId=?";String[] paras ={stuId};if(!temp.updateStudent(sql, paras)){//提示JOptionPane.showMessageDialog(this, "删除失败");}sm =new StuModel();//解决一次无用的查询jt.setModel(sm);}}}/*** 这是我的一个Student表的模型* 可以把对student表的各种操作封装到该模型中*/package com.test2;import java.sql.*;import java.util.Vector;import javax.swing.JTable;import javax.swing.table.*;public class StuModel extends AbstractTableModel{Vector rowData, columnNames;JTable jt=null;//定义操作数据库需要的东西PreparedStatement ps=null;Connection ct=null;ResultSet rs =null;String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"; String url="jdbc:sqlserver://127.0.0.1:1433;databaseName=spdb1"; String user="sa";String password ="h123";//添加,删除,修改学生由于添加的参数不确定,因此用数组来传递参数public Boolean updateStudent( String sql,String [] paras ){boolean b=true;try{//1加载驱动Class.forName(driver);//2得到连接ct=DriverManager.getConnection(url,user,password);//3创建ps对象ps=ct.prepareStatement(sql);//给ps的?赋值for(int i=0;i<paras.length;i++){//sql 中给int 传入String类型,dbms会自动转的.ps.setString(i+1, paras[i]);}//4执行操作if( ps.executeUpdate()!=1){b=false;}}catch (Exception e){b=false;e.printStackTrace();}finally{try {if(ps!=null) ps.close();if(ct!=null) ct.close();} catch (SQLException e) {e.printStackTrace();}}return b;}public void init(String sql){if(sql ==null){sql ="select * from student";}//中间处理jt =new JTable();columnNames=new Vector();//设置列名columnNames.add("学号");columnNames.add("名字");columnNames.add("性别");columnNames.add("年龄");columnNames.add("籍贯");columnNames.add("系别");//rowData可以存放多行rowData =new Vector();try{//加载驱动Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//System.out.print("1");//测试用的//得到连接ct=DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433;d atabaseName=spdb1","sa","h123");//System.out.print("2");//测试用的ps=ct.prepareStatement(sql);//System.out.print("3");//测试用的rs=ps.executeQuery();//System.out.print("4");//测试用的while(rs.next()){Vector hang =new Vector();hang.add(rs.getString(1));hang.add(rs.getString(2));hang.add(rs.getString(3));hang.add(rs.getInt(4));hang.add(rs.getString(5));hang.add(rs.getString(6));//加入到rowDatarowData.add(hang);}//System.out.print("5");//测试用的}catch(Exception e){e.printStackTrace();}finally{try {if(rs!=null) rs.close();if(ps!=null) ps.close();if(ct!=null) ct.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}//通过传递的sql语句来获得数据模型public StuModel(String sql){init(sql);}//构造函数,初始化我们的数据模型public StuModel(){this.init(null);}public void addStu(String sql){//根据用户输入的sql语句完成添加任务.}@Overridepublic String getColumnName(int column) {return (String)this.columnNames.get(column);}@Override//得到共有多少列public int getColumnCount() {//System.out.print("getColumnCount");//测试所用return this.columnNames.size();}@Override//得到共有多少行public int getRowCount() {return this.rowData.size();}@Override//得到某行某列的数据public Object getValueAt(int rowIndex, int columnIndex) { return ((Vector)this.rowData.get(rowIndex)).get(columnIndex);}}package com.test2;import java.awt.*;import java.awt.event.*;import java.sql.*;import javax.swing.*;public class StuAddDialog extends JDialog implements ActionListener{//定义我需要的swing组件JLabel jl1, jl2,jl3, jl4, jl5 ,jl6;JButton jb1,jb2;JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;JPanel jp1,jp2,jp3;//构造函数 Frame代表父窗口口,title代表窗口的名字,model指定是模式窗口,还是非模式的窗口public StuAddDialog(Frame owner,String title,boolean model){super(owner,title, model); //调用父类构造方法,达到模式对话框效果jl1=new JLabel("学号");jl2=new JLabel("姓名");jl3=new JLabel("性别");jl4=new JLabel("年龄");jl5=new JLabel("籍贯");jl6=new JLabel("系别");jtf1=new JTextField();jtf2=new JTextField();jtf3=new JTextField();jtf4=new JTextField();jtf5=new JTextField();jtf6=new JTextField();jb1=new JButton ("添加");jb2=new JButton ("取消");jp1=new JPanel();jp2=new JPanel();jp3=new JPanel();//设置布局jp1.setLayout(new GridLayout(6,1));jp2.setLayout(new GridLayout(6,1));//添加组件jp1.add(jl1);jp1.add(jl2);jp1.add(jl3);jp1.add(jl4);jp1.add(jl5);jp1.add(jl6);jp2.add(jtf1);jp2.add(jtf2);jp2.add(jtf3);jp2.add(jtf4);jp2.add(jtf5);jp2.add(jtf6);jp3.add(jb1);jp3.add(jb2);this.add(jp1,BorderLayout.WEST);this.add(jp2,BorderLayout.CENTER);this.add(jp3,BorderLayout.SOUTH);//注册监听jb1.addActionListener(this);//展现this.setSize(300,200);this.setLocation(200, 300);this.setVisible(true);}@Overridepublic void actionPerformed(ActionEvent e) { if(e.getSource()==jb1){//希望添加StuModel temp =new StuModel();String sql="insert into student values (?,?,?,?,?,?)";String[]paras={jtf1.getText(),jtf2.getText(),jtf3.getText(),jtf4.getText(), jtf5.getText(),jtf6.getText()};if(!temp.updateStudent(sql, paras)){//提示JOptionPane.showMessageDialog(this, "添加失败");}//关闭对话框,关闭添加对话框this.dispose();}}}/*** 修改学生界面*/package com.test2;import java.awt.*;import java.awt.event.*;import java.sql.*;import javax.swing.*;public class StudentUpdateDialog extends JDialog implements ActionListener{//定义我需要的swing组件JLabel jl1, jl2,jl3, jl4, jl5 ,jl6;JButton jb1,jb2;JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6;JPanel jp1,jp2,jp3;//构造函数 Frame代表父窗口口,title代表窗口的名字,model指定是模式窗口,还是非模式的窗口public StudentUpdateDialog(Frame owner,String title,boolean model,StuModel sm,int rownum){super(owner,title, model); //调用父类构造方法,达到模式对话框效果jl1=new JLabel("学号");jl2=new JLabel("姓名");jl3=new JLabel("性别");jl4=new JLabel("年龄");jl5=new JLabel("籍贯");jl6=new JLabel("系别");jtf1=new JTextField();jtf2=new JTextField();jtf3=new JTextField();jtf4=new JTextField();jtf5=new JTextField();jtf6=new JTextField();//初始化数据jtf1.setText((String)sm.getValueAt(rownum, 0)); jtf1.setEditable(false);jtf2.setText((String)sm.getValueAt(rownum, 1)); jtf3.setText((String)sm.getValueAt(rownum, 2)); jtf4.setText(sm.getValueAt(rownum, 3)+"");jtf5.setText((String)sm.getValueAt(rownum, 4)); jtf6.setText((String)sm.getValueAt(rownum, 5));jb1=new JButton ("修改");jb2=new JButton ("取消");jp1=new JPanel();jp2=new JPanel();jp3=new JPanel();//设置布局jp1.setLayout(new GridLayout(6,1));jp2.setLayout(new GridLayout(6,1));//添加组件jp1.add(jl1);jp1.add(jl2);jp1.add(jl3);jp1.add(jl4);jp1.add(jl5);jp1.add(jl6);jp2.add(jtf1);jp2.add(jtf2);jp2.add(jtf3);jp2.add(jtf4);jp2.add(jtf5);jp2.add(jtf6);jp3.add(jb1);jp3.add(jb2);this.add(jp1,BorderLayout.WEST);this.add(jp2,BorderLayout.CENTER);this.add(jp3,BorderLayout.SOUTH);//注册监听jb1.addActionListener(this);//展现this.setSize(300,200);this.setLocation(200, 300);this.setVisible(true);}@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubif(e.getSource()==jb1){String sql ="update student setstuName=?,stuSex=?,stuAge=?,stuJg=?,stuDept=? where stuId=?";String[]paras={this.jtf2.getText(),jtf3.getText(),this.jtf4.getText(),this. jtf5.getText(),this.jtf6.getText(),this.jtf1.getText()};StuModel temp =new StuModel();temp.updateStudent(sql, paras);}}}第七十三讲: ADO 模型:在函数里需要传值,但是在调用时却不需要传值,那么就可以传入null值,在函数内部先if判断是否为null 如果不是再进行操作,为空的时候在进行为空的操作.或者第二种解决方法来自于: select * from student where 1=1;可以在传入的参数中为1 sql 语句改为select * from student where 1=?简而言之:还是第一个方法好。
韩顺平javascript笔记(全套)解析
韩顺平2011javascript笔记(全)JavaScript1.javascript基本介绍:(1)javascript是实现网页动态效果的基石,在web的开发中扮演重要的角色,被广泛的应用到各个领域:○1网页游戏○2地图搜索○3股市信息查询○4web聊天····(2)在web开发中,js是必不可少的技术,同时js也是ajax/jquery/extjs等框架的基础。
(3)javascript是一种广泛用于客户端WEB开发的脚本语言,常用来给HTML网页添加动态的功能,比如响应用户的各种操作。
2.脚本语言:(1)脚本语言往往不能独立使用(单独使用没有什么意义),它一般与html/asp/jsp/php(2)脚本语言有自己的变量,函数,控制语句。
(3)脚本语言是一种解释性语言。
3.JS一般在客户端的浏览器执行。
但也可以对服务器进行编程(非常少)4.JavaScript简介JavaScript是一种解释型的语言。
Javascript并不是java的一种java脚本语言,除了名字都带有java这个此外,两者并没有任何关系。
Javascript的第一个版本出现在Netscape Navigator2浏览器中。
人们最初给javascript 起的名字是LiveScript。
然而由于,当时java技术的正是如日中天,netscape公司给livescript改名为javascript,以便是人们更加注意javascript。
随着javascript的发展,微软公司决定在IE浏览器中加入微软的品牌的javascript,即Jscript。
脚本语言不仅只有javascript的一种,还有其他的脚本语言,如VBscript和perl语言(1)<script>标记:第一个简单的javascript程序在网页中添加<script></script>标签中添加javascript代码,在<script></script>之间的代码块,不是用于显示html元素,而是需要浏览器进行处理的脚本代码,在<script>标记和对应的</script>标记之间包围的代码块,称为脚本块。
韩顺平 循序渐进学java 从入门到精通 课件 笔记 第四十七讲到第五十讲
image3 =Toolkit.getDefaultToolkit().getImage(Panel.class.getResource("/10.gif"));
for(int i=0;i<hero.ss.size();i++)
{
//取出子弹
shut s=hero.ss.get(i);
//判断子弹是否有效
if(s.isLive==true)
{
//取出每个敌人的坦克,与他判断
for(int j=0;j<ets.size();j++)
{
//从向量中删除子弹
hero.ss.remove(myShut);
}
}
//画出子弹 ,画出一颗子弹
//isLive=true控制子弹到达边缘的时候,会消失否则不会消失,这个判断来控制内存,减少内存资源的.
// if (hero.s!=null&&hero.s.isLive==true)
mp= new MyPanel();
Thread t=new Thread(mp);
//创建线程会自动调用run方法
t.start();
this.add(mp);
this.addKeyListener(mp);
this.setSize(500,500);
}
else if(b.life>3)
{
g.drawImage(image2, b.x, b.y, 30, 30, this);
500G!!史上最全的JAVA全套教学视频网盘分享(JEECG开源社区)
500G!!史上最全的JAVA全套教学视频⽹盘分享(JEECG开源社区)500 G JAVA视频⽹盘分享(JEECG开源社区)[涵盖从java⼊门到深⼊架构,Linux、云计算、分布式、⼤数据Hadoop、ios、Android、互联⽹技术应有尽有] JEECG开源社区秉承开源宗旨,分享社区Java架构视频,更多资料点击:JEECG师徒架构群①: 39596137Jeecg开设师徒架构学习班(师傅带徒弟模式),有兴趣的可以参加学习 =>1、javascript视频教程2、JPA视频教程3、马⼠兵hibernate视频教程4、JAVA电⼦书5、ext4.0视频教程6、hadoop实战7、android视频教程8、photoshop基础教程视频9、马⼠兵struts2视频教程10、junit视频教程11、Struts2+Spring3+Hibernate4+Maven+EasyUI整合⼊门视频12、spring mvc视频教程13、ext视频教程14、UML视频教程15、⽹页与UI设计从⼊门到精通视频教程16、JSP视频教程17、java邮件开发视频教程18、EJB视频教程19、编译原理视频教程20、韩顺平J2SE视频教程21、银⾏交易系统实现22、⿊客攻防技术见招拆招视频教程23、scm_cvs_svn视频教程24、dreamweaver教学视频25、马⼠兵j2se、j2EE视频教程26、Unix操作系统(哈⼯⼤)27、Android开发视频教程28、dwr视频教程29、jquery视频教程30、马⼠兵spring3视频教程31、java并发教程31、巴巴⽹开发实现32、张孝详J2SE⾼深讲解33、Flash动画制作教程视频34、C语⾔基础35、php视频教程36、linux视频教程-韩顺平37、spring-mvc视频教程38、[吉林⼤学计算机操作系统视频教程]39、mysql特级课视频教程40、NoSQL视频教程41、maven视频教程42、JNI视频教程43、易语⾔资料与教程44、⿊客新⼿综合书藉45、tomcat视频教程46、计算机操作系统原理视频教程47、oracle视频教程及OCP认证教程48、SEO⽹站优化视频教程-学⽆忧49、设计模式视频教程50、jdbc视频教程51、php从⼊门到精通52、html+CSS教程[13个视频⽂件+1个rar⽂件-423M+资源⼤⼩]53、JAVA编程⾼级知识54、OA+⼯作流视频教程55、webservice视频教程56、数据结构视频教程57、计算机⽹络视频教程58、HTML5开发框架PhoneGap实战(jQuery Mobile开发、API解析、3个经典项⽬实战)59、SpringMvc+Spring+MyBatis+Maven整合视频60、weblogic视频教程61、java⽹上在线⽀付实战视频62、23种设计模式视频教程63、lucene视频教程64、xml视频教程65、HTML5⼊门视频教程【秀野堂】66、微普年薪10W版Android教学视频67、ibatis视频教程68、传智播客-韩顺平-php从⼊门到精通69、国内⾸部Zookeeper从⼊门到精通70、⿊马ios71、phonegap HTML5开发视频72、Zookeeper⼊门到精通73、java⼊门74、SSH2+activiti5OA管理系统案例视频75、word转换76、桌⾯UI77、ajax78、axure视频教程79、兄弟连NoSQL视频教程 redis80、Hadoop81、JS视频教程共150集82、activiti ⼯作流学习专题83、oa84、前段资料85、简单微信[⼩项⽬]87、nutch88、anocation89、DataGuru视频90、Nutch相关框架视频教程(压缩超清)91、Mars《Android开发视频教程》92、Python93、oa activiti 新版94、maven视频教程95、linux视频教程96、⼩布⽼师Git⼊门97、Redis98、⼯作流相关资料99、EasyUI⼊门视频教程100、MongoDB视频教程101、thinkphp。
韩顺平循序渐进学java从入门到精通课件笔记第三十五讲到第三十七
韩顺平循序渐进学java从入门到精通课件笔记第三十五讲到第三十七第三十五讲:Java异常处理在本节课中,我们将学习Java中的异常处理。
异常是在程序执行过程中出现的错误或异常情况。
Java提供了一套强大的异常处理机制,可以帮助我们更好地处理这些异常情况,使程序更加健壮和可靠。
1. 异常的概念和分类异常是指在程序运行过程中出现的错误或异常情况。
Java中的异常分为两种类型:受检异常(checked exception)和非受检异常(unchecked exception)。
- 受检异常:需要在代码中显式处理的异常,如IOException、SQLException等。
必须使用try-catch语句块或将异常抛出。
- 非受检异常:不需要在代码中显式处理的异常,如NullPointerException、ArrayIndexOutOfBoundsException等。
可以使用try-catch语句块处理,但不强制要求。
2. 异常处理的语法Java中的异常处理通过try-catch-finally语句块来实现。
try块用于包含可能会引发异常的代码,catch块用于捕获并处理异常,finally块用于定义无论是否发生异常都需要执行的代码。
```javatry {// 可能引发异常的代码} catch (ExceptionType1 e1) {// 处理ExceptionType1类型的异常} catch (ExceptionType2 e2) {// 处理ExceptionType2类型的异常} finally {// 无论是否发生异常都会执行的代码}```3. 异常处理的示例下面是一个简单的示例,演示了如何使用异常处理机制来处理除数为零的异常。
```javapublic class DivideByZeroExample {public static void main(String[] args) {int dividend = 10;int divisor = 0;try {int result = dividend / divisor;System.out.println("结果:" + result);} catch (ArithmeticException e) {System.out.println("除数不能为零!");}}}```在上面的示例中,我们首先定义了一个除数为零的情况,然后使用try块来执行除法运算。
韩顺平 j2ee视频实战教程jsp第1讲 课件 笔记
java ee ; j2ee视频教程- jsp第1讲作者: 韩顺平(一)jsp第1讲1 java EE核心十三种技术介绍2 java EE程序员修炼成精的法门(卖油翁的故事)3 jsp版本的用户管理系统演示4 jsp的概述(基本语法)5 jsp的运行原理(还是hello.jsp)6 jsp版的计算器6.1 jsp中如何使用js(javascript)和css技术..(二)java EE核心十三种技术介绍Java ee是一个开发的平台,它包括的技术很多,主要包括十三种技术.在开发时选择地进行使用,并不是要把所有的技术就去找工作。
只会几种技术就可以从事javaee的开发,正好比如说中国的十八般武艺,最好是什么都会~基础是java servlet jsp !!!基础要像大象一样扎实!不要想水中芦苇,没有跟!(三)java EE程序员修炼成精十三种技术规范:1、Jdbc2、java命名与目录接口(jndi)很少用了3、企业java Bean (Enterprise Java Bean EJB 3.0 以前的版本也要回!因为之前的开发用之前的版本,现在要维护!)4、jsp(本课程讲)5、servlet (之前讲过了)6、corba(很少用,但日本人喜欢用!)7、java的事物体系(JTA)/java事务服务(JTS)现在很少用8、javaMail(要回)和javaBeans激活架构(JAF )9、java信使服务(JMS)短信那边用10扩展标记语言(XML很重要!相当有用)11、Struts + hibernate + Spring (SSH)很重要!卖油翁的故事:我亦无他唯手熟尔!原文:陈康肃公尧咨善射,当世无双,公亦以此自矜。
尝射于家圃,有卖油翁释担而立,睨之,久而不去。
见其发矢十中八九,但微颔之。
康肃问曰:“汝亦知射乎?吾射不亦精乎?”翁曰:“无他,但手熟尔。
”康肃忿然曰:“尔安敢轻吾射!”翁曰:“以我酌油知之。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
java平台1、J2SE java开发平台标准版2、J2EE java开发平台企业版java程序需要在虚拟机上才可以运行,换言之只要有虚拟机的系统都可以运行java程序。
不同系统上要安装对应的虚拟机才可以运行java程序开发步骤1、编写源文件 (.java)2、编译源文件为类文件(.class)可用J2SE或J2EE编译3、在虚拟机上运行注释//单行注释/* */多行注释java内容介绍java编程可以分成三个方向:1、java se (j2se)桌面开发 java中的基础中的基础2、java ee (j2ee)web开发3、java me (j2me)手机开发java se课程介绍java面向对象编程(基础)java图开界面开发java数据库编程java文件io流编程java网络编程java多线程编程java ee基础1java面向对象编程--数据库编程-->java sejava 基础2html--css--javascript-->div+cssjava ee中级部分Servlet--Jsp-->mvc模式java ee高级部分Struts--Ejb--Hibernate--Spring--Ajax(ext,dw2)-->ssh框架java之父gosling1990 sun启动绿色计划1 | 4451992 创建oak语言-->java1994 gosling参加硅谷大会演示java功能,震惊世界1995 sun正式发布java第一个版本,目前最新是jdk7.0java开发工具记事本、(jcreator、jbuilder退出舞台了)、netbean、eclipse如何选择开发工具先选择记事本,对java有一定了解后再使用eclipse高级开发工具为什么呢?1、更深刻的理解java技术,培养代码感2、有利于公司面试java语言的特点1、java语言是简单的2、java语言是面向对象的3、java语言是跨平台(操作系统)的[即一次编译,到处运行]4、java是高性能的java第一个程序hello.java运行java程序要安装和配置jdkjdk是什么?1、jdk全称java dvevlopment kit中文java开发工具包2、jdk是sun公司开发的3、jdk包括jre(java runtime envirnment)java运行环境、一堆java工具和java基础的类库(类共3600左右,常用类在150个左右)4、可以在下载**开发安装jdk,用户执行需要安装jre配置JDK添加环境变量即可windows下配置jdk在计算机属性--高级设置--环境变量--添加PATH将JDK所在路径指定即可。
多个环境变量设置时需要用;号进行隔开1、编写第一个hello.java//注释 (解释) 作者://功能:在控制台显示"hello"//日期:2013.11.28//public:表示这个类是公共的,一个java文件中只能有一个public类//class:表示这是一个类//hello:类名(公共类的类名必须和文件名一致)public class hello{2 | 445//一个主函数,相当于是程序的入口public static void main(String args[]){//执行语句//System:是一个包//out.println是输入函数System.out.println("hello!");}}2、编译hello.java 使用javac hello.java3、执行hello.java 使用java hellojava程序运行关系1、java源文件(.java文件)2、java编译器即javac.exe3、java字节码文件(.class文件)4、由解释执行器即(java.exe)将字节码文件加载到java虚拟器(jvm)5、字节码文件(.class)就会在java虚拟机中执行对hello.java程序进行改过使之变为一个简单的加法运算程序//注释 (解释) 作者://功能:在控制台显示"hello"//日期:2013.11.28//public:表示这个类是公共的,一个java文件中只能有一个public类//class:表示这是一个类//jiafa:类名(公共类的类名必须和文件名一致)public class jiafa{//一个主函数,相当于是程序的入口public static void main(String args[]){//执行语句//System:是一个包//out.println是输入函数// System.out.println("hello!");int a=10;//定义一个变量,变量名a,它的值10int b=20;//定义一个变量,变量名b,它的值20int result=a+b;//定义一个叫result变量将变量ab相加的值赋值给result //输出结果System.out.println("结果是"+result);}}----------------------------------------------------------------为什么有变量不论是使用哪种高级程序语言编写程序,变量都是其程序的基本组成单位。
java中的基本数据类型的定义与c/c++中大体一致。
3 | 445public class Test{public static void main(String []args){int a=1;//定义一个整形变量,取名a,并赋初值1int b=3;//定义一个整形变量,取名b,并赋初值3b=89;//给变量b赋89System.out.println(a);//输出语句,把变量a的值输出System.out.println(b);//把变量b的值输出}}----------------------------------------------------------------java基本语法---基本数据类型java基本数据类型四大类型整数类型、小数(浮点)类型、布尔类型、字符类型整数类型可以表示一个整数,常用的整数类型有:byte,short,int,long主要区别是数据大小范围,请大家看一个小案例。
byte 占用内存一个字节范围:-128至127short 占用内存两个字节范围:-32768至32767int 占用内存四个字节范围:-2147483648至2147483647long 占用内存八个字节范围:-?至?小数(浮点)类型可以表示一个小数,常用的小数(浮点)类型有:float(单精度),double(双精度)float 占用内存四个字节范围:3.4E-38至3.4E+38 只能提供7位有效数字double占用内存八个字节范围:1.7E-308至1.7E+308 可提供16位有效数字布尔类型可以表示"真"或者"假",类型是boolean比如:boolean spBool=true; //给变量spBool定义为boolean型并赋值为真字符类型可以表示单个字符,字符类型是char。
char是两个字节(可以存放汉字)多个字符我们称为字符串,在java中String这种数据类型表示,但是String不是基本数据类型,而是类,类是复合数据类型。
结论:在java中,对char进行运算的时候,直接当做ascii码对应的整数对待。
思考:int test1='a'+'b'; 输出值195char test2='a'+'b'; 输出值?char test3='中'; 输出值1954 | 445java基本语法--定义变量,初始化,赋值定义变量1、什么是定义变量?int a; 这就是定义了一个变量,变量名是afloat haha;这也定义了一个变量,表示一个float类型的小数,变量名是haha初始化变量在定义变量的时候,就给值int a=45;这就是初始化变量a给变量赋值比如你先定义了变量:int tt;然后再给值tt=780; ->这就是给变量赋值----------------------------------------------------------------java基本语法--基本数据类型转换自动转换int a=1.2; double b=3;结论:数据类型可以自动的从低精度-->高精度。
高精度不能转为低精度。
byte小于<short小于<int小于<long小于<float小于<double在java中的小数默认是double数据类型float赋值时要在值后加flong赋值时要在值后加l强制转换如何把高精度转成低精度?int a=(int)1.2;练习int a=1; int a=1;double b=4.5; double b=4.5;a=b; b=a;报错成功计算过程中的转换int a=3;int b=a+3.4;结论:当一个整数和一个double运算的时候,运算结果会向高精度转换5 | 445java 基本语法--运算符java中常用的算术运算符是:+加、-减、*乘、/除、%取模其实%运算可以得到两个数的余数。
算术运算符:++自加、--自减。
这两个运算符比较特殊,请大家思考一下:int a=90;a++; 等同于(a=a+1)这时a等于? 91int b=89;b--; 等同于(b=b-1)这时b等于? 88int a=56;int b=a++;System.out.println(b); 56System.out.println(a); 57***int b=++a;相当于a=a+1再将b=a;int b=a++;相当于b=a再将a=a+1。
----------------------------------------------------------------算术运算符:+=左加、-=左减、/=左除、%=左取模请大家看看几个案例,就明白了:int a=90;a+=90; (相当于a=a+90)请问,a现在等于多少? 180float b=89.7f;b+=a; (相当于b=b+a)请问,b现在等于多少? 269.7int a=56;int b=90;a-=34;b%=a; (相当于a=a-34,b=b%a)System.out.println(b); 2System.out.println(a); 22----------------------------------------------------------------运算符关系运算符1、==等于;2、>大于;3、<小于;4、>=大于等于;5、<=小于等于;6、!=不等于6 | 445int a=90;int b=90;if(a==b){System.out.println("ok1");}b--;if(a>b){System.out.println("ok2");}if(a>=b){System.out.println("ok3");}请编写一个程序,该程序可以接收两个数(可以是整数,也可是小数)并判断两个数是大于?小于?还是等于?程序代码:import java.io.*;//载入IO流包public class Demo5{public static void main(String []args){try{//输入流,从键盘接收数InputStreamReader isr=new InputStreamReader(System.in);BufferedReader br=new BufferedReader(isr);//给出提示System.out.println("请输入第一个数");//从控制台读取一行数据String a1=br.readLine();System.out.println("请输入第二个数");String a2=br.readLine();//把String转为floatfloat num1=Float.parseFloat(a1);float num2=Float.parseFloat(a2);if(num1>num2){System.out.println("第一个大");}if(num1==num2){System.out.println("相等");}if(num1<num2){System.out.println("第二个大");}}catch(Exception e){e.printStackTrace();}}}----------------------------------------------------------------运算符--逻辑运算符用于判断逻辑关系的运算符1、&&与;2、||或;3、!非&&与的运算关系,真真为真,其它都为假。