韩顺平Spring笔记之图解

合集下载

最新韩顺平java笔记整理幻灯片课件

最新韩顺平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开发流程)

韩顺平Linux视频教程—笔记(全)

韩顺平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⽂件⽬录是⾮常重要的。

2021韩顺平图解Linux课程(全面升级)实操篇

2021韩顺平图解Linux课程(全面升级)实操篇

2021韩顺平图解Linux课程(全⾯升级)实操篇第5章 Linux 实操篇-远程登录到 Linux 服务器远程登录 Linux-Xshell6Xshell6:在 Linux 服务器上,使⽤ ipconfig 命令查看 IP 地址。

远程上传下载⽂件-Xftp6Xftp:在 Linux 服务器上,使⽤ ipconfig 命令查看 IP 地址。

第6章 Linux 实操篇-Vi 和 Vim 编辑器Vi 和 Vim 常⽤的三种模式正常模式/⼀般模式:⽤ Vim 打开⼀个⽂件就直接进⼊正常模式(默认模式)。

在这个模式中,可以上下左右移动光标、删除整⾏、复制、粘贴等等。

插⼊模式/编辑模式:在正常模式下,键⼊ i,I,o,O,a,A,r,R 任何⼀个字母之后才会进⼊插⼊模式。

命令⾏模式/末⾏模式:在插⼊模式下,键⼊ Esc 进⼊正常模式,再输⼊ : 进⼊命令⾏模式。

在此模式下,可以查询、替换、保存、退出、显⽰⾏号等等。

Vi 和 Vim 的快捷键拷贝当前⾏:yy,拷贝当前⾏向下的5⾏:5yy,粘贴:p。

删除当前⾏:dd,删除当前⾏向下的6⾏:5dd。

在⽂件中查找某个单词:命令⾏模式下输⼊ /关键词,回车查找,再键⼊ n 查找下⼀个。

设置⽂件的⾏号:set nu;取消⽂件的⾏号:set nonu。

⼀般模式下,使⽤快捷键 G 到该⽂件的最末⾏,使⽤ gg 到⽂件的最⾸⾏。

⼀般模式下,使⽤快捷键 u 撤销上次执⾏的操作。

⼀般模式下,将光标移动到指定⾏,键⼊⾏号 G,如20G。

、第7章 Linux 实操篇-开机、重启和⽤户登录注销开机、重启命令不管是重启系统还是关闭系统,⾸先要运⾏ sync 命令,把内存中的数据写到磁盘中。

shutdown -h now:⽴即进⾏关机shutdown -h 1:1分钟后⾃动关机(和 shutdown 命令效果⼀样)shutdown -r now:现在重新启动计算机halt:关机(上⾯的 -h 就是指 halt)reboot:现在重新启动计算机sync:把内存的数据同步到磁盘⽤户登录和注销登录时尽量少⽤ root 账号登录。

Hibernate韩顺平讲课笔记

Hibernate韩顺平讲课笔记

1. hibernate 是个框架framework是orm框架,orm(object relation mapping)对象关系映射框架。

hibenate处于我们项目的持久层位置(所以又称为持久层框架);2. hibernate实际上是对jdbc进行轻量级的封装。

hibernate 定义:是对jdbc进行轻量级的orm框架封装,充当项目的持久层。

3. hibernate的学习的内容:A: hibernate apiB:hibernate.cfg.xml(这个是hibernate的核心配置文件)、C:对象关系映射文件4. 使用hibernate的好处5. hibernate的基础还是JAVA的反射机制。

注意:在把hibernate的jar包粘贴到lib文件下后,要引入到项目中去,引入成功后,在Referenced Librares中能看到引入的这些jar包。

6 hibernate的开发方式有三种:注意:什么是pojo (plan old/ordinary java object 简单的java 对象)注意:hibernate基本原理图使用先建数据库的方式开发hibernante,下面是开发流程1 创建一个项目 javaProject2 创建一个简单项目框架示意图3.在Myeclipse中引入hibernate开发包。

4.创建employe表5. 创建一个domain对象和对象关系映射文件注意:对象关系映射文件作用是用于指定domain对象和表的映射关系,该文件的取名是哟规定:domain对象.hbm.xml。

一般我们放在和domain对象同一个文件夹(包)下。

A:创建domain对象B:创建对象关系映射文件。

domain对象.hbm.xml6.手动配置我们的hibernate.cfg.xml配置文件,该文件用于配置连接数据库的类型、diver、用户名、密码、url、该文件的名称。

我们一般不修改。

韩顺平jsp学习笔记

韩顺平jsp学习笔记

韩顺平jsp学习笔记jspu j2ee核心13种技术:程序员必须掌握的技术:java,servlet,jsp。

13种技术规范.u j2ee程序员修炼成精法门u jsp 版本的用户管理系统:将servlet版本改为jsp版本,只使用jsp技术完成(modle1模式开发)并且在后面可通过jsp版的用户管理系统的改写,非常自然过渡到mv设计模式,更进一步到mvc设计模式开发工具:myeclipseu jsp概述:jsp是servlet技术的补充,访问jsp的过程:如果是第一次访问,jsp文件被服务器翻译成一个对应的java文件(servlet),然后,再被编译成.class文件并加载到内存中。

如果是以后访问jsp,那就直接调用内存中的jsp实例,所以,第一次访问jsp慢,后面访问jsp的速度就会变快了。

(hello.jsp来说明运行原理:tomcat下的work下有将jsp转换为servlet的代码)1. 为什么出现:程序员在开发过程中,发现servlet做界面非常不好,jsp对servlet的补充(对界面的补充,jsp界面好做)2. jsp=html+java片段+jsp标签(语法)+javascript(css):综合3. jsp功能的强大是因为可以与javabean结合使用(即:jsp作前台(界面),javabean作后台(逻辑层))。

4. Jsp是什么:1.jsp运行在服务器,2.jsp(java server page)3。

Jsp基础是servlet(相当于对servlet的包装)4.jsp 是综合技术:一个公式:jsp=html+java代码+jsp标签+javascript(css) 比较综合5.jsp无需配置,直接使用,如果你修改了jsp文件,不需要重新reloadweb应用6.jsp如何访问:http://ip:8088/web应用名.jsp路径u jsp的概述:元素1. 指令元素2. 脚本元素3. 动作元素u jsp与servlet的关系:1. jsp与servlet是对应关系2. jsp是以servlet为基础的u 编写一个计算器的实例:1. 表单提交处理的jsp页面为:&lt;form action=”chuli.jsp”&gt;2. 接受用户传来的数据的函数为request函数,方法为getParameter(“name”),返回类型为String3. 对于jsp页面报错的行数为tomcat中work里的对应的java代码中的错误行数4. jsp可以通过javascript代码,对数据合法性进行验证,防止用户空提交5. 可以通过Math.round(num) != num判断一个变量是否是一个数,当经过math.round处理后不相等,则num不是一个数u 在同一jsp页面提交和接受数据1.jsp中表达式标签:&lt;%= %&gt;u 迅速上手myeclipse工具-----》完成一个小案例:建立一个web工程(站点),创建一个jsp文件myHello.jsp,文件输出hello,配置tomcat,jdk,并发布工程(将站点放在tomcat 上),在浏览器中访问myHello.jspu Model1模式1. javaee开发有几个重要模式:Model1模式,Model2模式,mvc模式2. model1模式基础是jsp文件,由一些相互独立的jsp 文件,和其他的一些java class组成(不是必须的),jsp从httprequest中获得所需要数据,处理业务逻辑,然后通过response返回前段浏览器3. model1模式可分为model1(纯jsp)和model1(jsp+java class)4. model1缺点:表现层和业务逻辑层混合在一起(乱);开发中不利于多人开发协同;不利于后期维护,不好查看。

传智 韩顺平 html+css+javascrtpt 课程笔记2(吐血整理)

传智 韩顺平 html+css+javascrtpt 课程笔记2(吐血整理)

javascript 2===============================================================================1.js面向/基于对象编程-----类(原型对象)与对象(实例)(1)js面向/基于对象特征介绍Javascript是一种基于对象(object-based)的动态脚本语言,你遇到的所有东西都是对象。

js的面向对象技术广泛应用于AJAX等优秀框架。

☞特别说明:基于对象也好,面向对象也好,实际上都是以对象的概念来编写程序。

从本质上并无区别,所以这两个概念在课程中是一样的。

因为javascript中没有class(类),所以有人把类也称为原型对象。

其实这两个概念在编程中发挥的作用都看成一个意思。

(2)为什么需要原型对象(类)?例子:张老太养了两只猫猫:一只猫叫小白,今年3岁,白色;还有一只叫小花,今年5岁,花色。

(3)类(原型对象)————如何自定义类(原型对象)和对象创建类的方式有5中方法:工厂方法——使用new Object创建对象并添加相关属性使用构造函数来定义类(原型对象):上面的Cat类就是用此种方法基本语法:function 类名/原型对象名(){}创建对象:var 对象名=new 类名/原型对象名();使用prototype构造函数及原型混合方式动态原型方式2.如何判断一个对象实例是不是Cat类型?✧if(a instanceof Cat){window.alert(“a是Cat的实例”)}✧if(a.constructor== Cat){window.alert(“a是Cat的实例”)}3.带var和不带var的区别var abc=89;function test(){abc=900;//在函数里,如果不带var,则表示使用全局的abc变量89。

//如果带var,则表示在函数中,定义一个新的私有的abc变量。

韩顺平轻松搞定网页设计htmlcssjs之javascript现场授课笔记完整版

韩顺平轻松搞定网页设计htmlcssjs之javascript现场授课笔记完整版

2011顺平轻松搞定网页设计(html+css+js)之javascript现场授课笔记(完整版)视频18整和19的前半部分不用看Javascript的基本介绍•JS是用于WEB开发的脚本语言:•脚本语言是什么:•脚本语言不能独立使用,它和HTML/JSP/PHP/配合使用•脚本语言也有自己的变量,函数,控制语句(顺序,分支,循环)•脚本语言实际上是解释性语言(即在执行时直接对源码进行执行)•Java程序.java→.class→jvm , js→浏览器(js引擎来解释执行)•Js在客户端(浏览器)执行•因为js是由浏览器来执行的,因此这里有个问题,不同类型的浏览器可能对js的支持不一样。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""/TR/html4/loose.dtd"><html><head><script language="javascript">function test(){window.alert("hello world!");}</script><title> New Document </title></head><body><input type="button" onclick="test()" value="点击一下吧"/></body></html>案例1要求:打开网页后,显示hello 1<html><head><!----js代码一般是放在head标签间,但实际上也可以放在别的位置--><script language="javascript">window.alert警告("hello!");</script><title> New Document </title></head><body><input type="button" onclick="test()" value="点击一下吧"/></body></html>问题:•js的位置可以随意放•js必须使用 <script language="javascript"> 代码</script>•在一个html文件中(JSP/PHP/)可以出现多对(script)片段,浏览器会按照先后顺序一次执行2:Hello world程序改进•如何定义变量:•如何运算:<html><head><title> New Document </title></head><body><!----js代码是放在head标签间,但实际上也可以放在别的位置--><script language="javascript">//js中变量的定义(js中变量用var表示,无论什么类型)var num1=1;var num2=60;var result=num1+num2;window.alert("结果是"+result); //alert函数window.alert表示弹出一个对话框</script></body></html>•Js的变量类型是怎样决定的1)Js是弱数据类型语言,即:在定义变量时候,统一使用var表示,甚至可以去点var这个关键字2)Js中的变量的数据类型是由js引擎决定的Var name=”shunping”; //name是字符串Var kk=2 //kk是数字Name=234; //这事name自动变成数(可以变化)•Js的命名规(函数/变量):1)使用大小写字母,数字,$可以命名2)不能以数字打头3)不能使用js保留字和关键字(即java里的关键字)4)区分大小写5)单行注释://6)多行注释:/*…….*/顺平JS第三讲•Js的数据类型:•基本数据类型•数值类型(number)•字符串类型(string)•布尔类型通过typeof可以看到变量的具体数据类型举例:<html><head><title> New Document </title><script language="javascript">var vi="abc";var v2=890;window.alert("v1是"+typeof v1);window.alert("v2是"+typeof v2);vi=456; //体现js是动态语言:即数据类型可以任意变化window.alert("v1是"+typeof v1);//体现js是动态语言</script></head><body></body></html>•复合数据类型•数组•对象•特殊数据类型•Null(空)即:var=null空值•Undefined即:如下代码<script language="javascript">window.alert(tt ); //直接报错:未定义var tt; //未给值</script>Nan:不是一个数 infinity:无穷大 isNaN:对“不是一个数的识别”(不是一个数true/是数fault)•Js定义变量,初始化,赋值•定义变量:即var=a•初始化:即在定义变量时就给值•赋值:即:比如你先定义一个变量 var=tt ,然后再给值:tt=780;例子:编写一个程序,判断两个数是否能够整除<script language="javascript">var a=90;var b=8;if(a%b==0){window.alert("能整除");}else{window.alert("不能整除");}</script>•++,运算符a++ = a=a+1a-- = b=b-1++a 表示先把自己加1再赋值--a 表示先把自己减1再赋值例子:Var a=56;Var b=++a; //b=++a等同于[a=a+1;b=a] b=a++等同于[b=a; a=a+1;] Window.alert(b);Window.alert(a);•--运算符•Var a=56;•Var b=--a; //b=--a等同于[a=a-1;b=a] b=a--等同于[b=a; a=a-1;] •Window.alert(b);•Window.alert(a);错误案例:更正:重要输出:myfuns.js代码:调用myfuns.js案例一:Js文件:调用:案例2:Js文件:调用:abc(5);输出:3 3 4Js文件:调用:数组在存中的存在形式:存数据调用案例:输出:900存数据分析:输出:35 90 900 存数据调用分析:输出: hello world abc 顺平输出: h e l l o w o r l d a b c 顺平输出: hello world输出:0=451=902=0gg=9000二维数组的遍历:输出:shunping 123 4.5a b c优化排序:输出:输出:找到下标为4数组转置:输出:该javascript笔记是传智播客顺平老师2011年的培训随堂笔记完整版,写的深入浅出,突出重点,案例丰富,通俗易懂,适合要求快速入门并不遗漏细节的同学参考学习。

韩顺平老师oracle教程听课笔记_整理

韩顺平老师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 从入门到精通 课件 笔记 第七十讲到第七十三讲

韩顺平 循序渐进学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=?简而言之:还是第一个方法好。

韩顺平java从入门到精通视频教程(全讲)学习笔记整理(齐全)

韩顺平java从入门到精通视频教程(全讲)学习笔记整理(齐全)

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| 4511992 创建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 development kit中文java开发工具包2、jdk是sun公司开发的3、jdk包括jre(java runtime envirnment)java运行环境、一堆java工具和java基础的类库(类共3600左右,常用类在150个左右)4、可以在下载**开发安装jdk,用户执行需要安装jre配置JDK添加环境变量即可windows下配置jdk在计算机属性--高级设置--环境变量--添加PATH将JDK所在路径指定即可。

韩顺平循序渐进学java从入门到精通(全知识点笔记整理)

韩顺平循序渐进学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.封装:把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。

韩顺平循序渐进学java从入门到精通课件笔记第三十五讲到第三十七

韩顺平循序渐进学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块来执行除法运算。

韩顺平servlet笔记(必看完整版)

韩顺平servlet笔记(必看完整版)

◆背景知识介绍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 , , asp, cgi )◆动态网页技术的比较(了解)◆bs 和cs的比较(1)BS:browser server 浏览器服务器(2)cs client server 客户服务为什么需要的web服务器/web究竟是干什么的?模拟一个web服务器MyWebServer.javaimport java.io.*;import .*;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 文件中修改<Connector connectionTimeout="20000" port="8088"(去修给config->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 文件中添加配置的代码:<welcome-file-list><welcome-file>hello1.html</welcome-file></welcome-file-list>③通过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中添加:<Context path="/myweb2" docBase="d:\web2"/>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;upackWAR: 如果设为ture ,则自动解压,否则不自动解压.①:打war包cd:d/web2 然后jar –cvf web2.war *②:浏览打好的war包Deploy发布后会在webapps中自动生存改文件◆配置域名我们看和一个如何配置自己的主机名:我们在实际访问网站的过程中,不可能使用http://localhost:8080/web应用/资源名的方式去访问网站,实际上使用类似或者的方式去访问网站,这个又是怎么实现的呢?看看ie浏览器访问一个web站点的流程.实现的步骤如下:(1) 在C:\WINDOWS\system32\drivers\etc 下的host文件添加127.0.0.1 (2) 在tomcat 的server.xml文件添加主机名<Host name="" appBase="d:\web3”><Context path="/" docBase="d:\web3" /></Host>(3) 在d:\web3 加入了一个/WEB-INF/web.xml 把hello2.html设为首页面如果连端口都不希望带,则可以吧tomcat的启动端口设为80即可.(4) 重启生效◆tomcat体系的再说明图:如何配置默认主机:在tomcat/conf/server.xml 文件<Engine name="Catalina" defaultHost="主机名">◆为什么需要servlet技术?比如需求:我们希望用户可以贴,用户还可以回复 ....这样一些和用户可以交互的功能,用普通的java技术就完成不了, sun 就开发了servlet技术供程序员使用.◆servlet的介绍①servlet 其实就是java程序(java类)②该java 程序(java 类)要遵循servlet开发规范③serlvet是运行在服务端④serlvet 功能强大,几乎可以完成网站的所有功能⑤是学习jsp基础◆tomcat 和servlet 在网络中的位置servlet的生命周期是怎样的/servlet究竟是怎样工作的UML 时序图帮助大家理解参看execel面试题: 请简述servlet的生命周期(工作流程)答:标准版本:①WEB服务器首先会检查是否已经装载并创建了该servlet实例对象。

学习韩顺平Linux系统笔记(经典)

学习韩顺平Linux系统笔记(经典)

韩顺平LINUX系统笔记第0天开山篇1、linux是一个开源免费的操作系统。

2、学习linux的流程:(1)linux平台上的开发和linux基本操作(2)加强C语言功底:《C专家编程》或者Java语言(3)学习unix环境高级编程(4)Linux应用系统开发/linux嵌入式开发3、书籍推荐:鸟哥的linux私房菜、linux入门到精通、linux内核完全剖析4、学习方法推荐:(1)高效而愉快的学习(2)先建立一个整体框架,然后细节学习(3)用到什么再学什么(4)计算机是做了、练了才会(5)适当的跳过(6)学习linux系统是在琢磨别人怎么做,而不是我认为怎么做第一天1、linux的特点:(1)linux系统时免费开源的(2)linux支持多线程,多用户(3)安全性优良(4)内存和文件管理性能优越2、Linux用户:root(相当于windows的administrator),建议使用普通用户登录,通过su–root切换为身份为管理员3、startx:启动图形用户界面,ctrl+alt+break:切换到控制台环境下4、shutdown now:立即关机shutdown–r now和reboot:立即重启计算机5、注销:logout6、熟悉vi编辑器:vi相当于windows的记事本7、在linux下进行简单的java开发:(1)vi hello.java//创建一个hello.java的文件(2)按"i"进入insert状态,进行文档编辑//编辑一个java文档(3)按"Esc"键退出编辑状态,转换为命令行模式(4)按shift输入冒号,在输入"wq"保存退出,若不保存退出则输入:q!(5)编译java文件:javac hello.java(6)运行java文件:java hello8、ls:列举当前文件夹,参数-l:显示当前目录的详细信息9、ccp程序的编译:编辑过程同上面的java程序,下面只记录编译和运行方式:(1)编译:gcc hello.cpp(2)运行:./a.out//默认编译出的文件为a.out(3)编译时更名:gcc–o hello.out hello.c,编译后的名字变为:hello.out10、set nu:在文件中每行行首加入行号set nonu:取消行号输入数字:直接输入数字,按"Esc"键,将光标移至该行行首/字符串:查找特定字,按"n"继续查找?字符串:查找特定字,按"n"继续查找11、linux的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录"/",然后在此目录下再创建其他的目录,详细结构图解:12、linux显示当前路径:pwd13、用户管理:(1)添加用户:只有root用户或者拥有root权限的用户才能创建useradd用户名passwd用户名(2)删除用户:只有root用户或者拥有root权限的用户才能删掉userdel用户名(保留用户相关的文件)userdel–r用户名(删除用户及其相关的文件)14、Linux运行级别:init[0,1,2,3,4,5,6]注释:(1)0:关机(2)1:单用户(3)2:没有网络服务的多用户状态(4)3:有网络服务的多用户状态(5)4:系统未使用保留给用户(6)5:图形界面(7)6:系统重启常用级别为3和5,修改运行级别:vi/etc/inittab,修改id:5:inittabdefault中的数字,即可修改运行等级。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习各个配置.
习各个配置.
税务,证券, 石油, 财务,政务系 ,编程粒度变大( 汇编 指令,c 语句 组件)
icationConTexte.xml
Context ac=new lApplicationContext("com/hsp/ioc/beans.xml");
反射
beans.xml/applicationcontext.xml
配置bean ,
ApplicationContext ac=new ClassPathXmlApplicationContext
applicationContext上下文容器 创建 student
bean工厂.
bean工厂.
我们理解 BeanPostProcessor ,有点类似我们的web filter
Employee.java
EmployeeServiceInt er
实现
@Transactional EmployeeService.j va[业务操作
hibernate
事情管理器
sessionfactory
struts-config.xml <action path="/login" parameter="fla type="com.hsp.web.action.LoginAction
☞ 学习框架,最重要的就是学习各个配置.
☞ 学习框架,最重要的就是学习各个配置.
bean bean bean
大的项目(税务,证券, 统,oa,erp,。。),编程粒度变大 java对象,spring,组件
applicationConTexte.xml 自己bean <bean>
<REF /> </bean>
自动装配的原理
// TODO Auto-generated method stub
ApplicationContext ac=new ClassPathXmlApplicationContext( "com/hsp/autowire/beans.xml");
//获取 Master master=(Master) ac.getBean("master"); System.out.println(master.getNa me()+" 养 "+master.getDog().getName());
spring框架原理图(sping框架什么被加载,spring中配置的bean,怎样 被创建,bean与bean之间的关系怎样被维护)
<bean id="user class="com.ser
spring框架原理图(sping框架什么被加载,spring中配置的bean,怎样 被创建,bean与bean之间的关系怎样被维护)
器对象) ApplicationContext ac=new
ClassPathXmlApplicationContext("applicationCo ntext.xml");
UserService us=(UserService) ac.getBean("userService");
us.sayHello();
<param-name>contextConfigLocation</param-name> <paramvalue>classpath:applicationContext.xml</param-value> </context-param> <!-- 对Spring容器进行实例化 --> <listener>
ie
实例化bean1 bean2 bean3
配置 MyBeanPostProcess or
MyBeanPostProcessor i BeanPostProcessor{
before(){} after(){} }
aop初探..
beans.xml 配置 MyBeanPostProcessor
魔法师
A
实现
BasisService.jav 基础抽象类
hibernate持久层
数据库
rvice.java
ok.jsp V
web层,struts
业务层
sping框架.它可以管理 web层,业务层.dao层 持久层,该sping可以配置各个层 的组件(bean),并且维护各个 bean之间的关系.
配置各种bean <bean id>< <property value="hello"></propery> </bean>
yBeanPostProcessor MyBeanPostProcessor
魔法师
需求: 1.记录每个对象,被实例化得实 际 2. 过滤每个调用对象ip 3. 给所有对象添加属性,或者函 数.=>aop(面向切面编程.针对所 有对象编程.)
对上面案例总结: spring实际上是一个容器框架,可以配置各种 bean与bean的关系,当我们需要使用某个bean的时候,
ioc是什么? 答 :ioc(inverse of controll ) 控制反转: (bean)的关系的权利从程序中转移到spring的容器 护.
DI是什么? 答: di(dependency injection) 依赖注入: 实际上 准确表示spring核心技术
目标对象
spring的层次图
ActionFrom.java
login.jsp V struts充当 web, 接管jsp / action / 表单 主要体现出mvc 的数据输入、数据的处理,数 据的显示分离
Users.java[domain对 象/javabean/pojo]
这里强调一下,在一个项目中 不一定全部有,可以根据实际 情况选择.
bybService=Class.forName("com.service.BybService" bybSerice.setName("小明"); userService.setByeService(bybService); applictonContext=new HashMap(); applictonContext.put("userService",userService) applictionContext.put("byeService",bybService)
项目 初步理解
UserService
DepartmentService
引入通知 //传统方法
环绕通知
ac.getBean("??") .say()..
OrderServicer begingTransacton() ....
aop原理+案例(aop 先不说,当我们讲完案 概念)
后置通知 完成资源关闭
<listenerclass>org.springframework.web.context.ContextLoaderLi stener</listener-class>
501号 雇员薪资管理系统的框图
表单 属性
login.jsp 提交: <form>xxx</form>
失败
LoginAction.j ava
内存(applictonC id userService(ox1 byeService(ox23
1.当ClassPathXmlApplicationContext("applicationContext.xm spring容器对象被创建,同时 applicaionContext.xml中配置 bean就会被创建(内存[Hashmap/H erService us=(UserService) ac.getBean("userService");
浏览器: http://xxxxx/login.do
action
ie
ie
ie浏览器
web服务器
公共评论板的框架
login.jsp
Login.java
Type.java domain对象
TypeServiceIn BasicServiceInt ter.java 继承 .java 基础接口
实现
TypeService .java
<bean id>< <property ref=""></propery> </bean>
sDao/Hiber
dao层
关系模型和对象模型之间的阻抗.
web 层 actห้องสมุดไป่ตู้on[解决action单例
问题] 业务层 service/domain/dao 持久层: 数据 源,localSessionFactory
交叉功能(切面)
织入(过程)
类(可以完成写日志的功能 [术语通知,spring 了五种通知.] 前置通知before函数 ...写日志代码
代理对象(spring提供了 ProxyFactoryBean).该对象只需配置 而不要写.使用到动态代理技术
代理接口,完成代理任务. 连接点->切入点 sayHello(){
spring本身提供的特殊 bean 1.实现了 BeanPostProcessor的后 置处理器 2.PropertyPlaceholderC onfigurer
自己写出bean Dog, Master
张三写好的bean
xx.properties. xx=xxx
相关文档
最新文档