韩顺平jsp学习笔记

韩顺平jsp学习笔记
韩顺平jsp学习笔记

韩顺平jsp学习笔记

jsp

u j2ee核心13种技术:

程序员必须掌握的技术:java,servlet,jsp。

13种技术规范.

u j2ee程序员修炼成精法门

u jsp 版本的用户管理系统:将servlet版本改为jsp版本,只使用jsp技术完成(modle1模式开发)

并且在后面可通过jsp版的用户管理系统的改写,非常自然过渡到mv设计模式,更进一步到mvc设计模式

开发工具:myeclipse

u 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文件,不需要重新reload

web应用6.jsp如何访问:http://ip:8088/web应用名.jsp路径u jsp的概述:元素

1. 指令元素

2. 脚本元素

3. 动作元素

u jsp与servlet的关系:

1. jsp与servlet是对应关系

2. jsp是以servlet为基础的

u 编写一个计算器的实例:

1. 表单提交处理的jsp页面为:<form action=”chuli.jsp”>

2. 接受用户传来的数据的函数为request函数,方法为getParameter(“name”),返回类型为String

3. 对于jsp页面报错的行数为tomcat中work里的对应的java代码中的错误行数

4. jsp可以通过javascript代码,对数据合法性进行验证,防止用户空提交

5. 可以通过Math.round(num) != num判断一个变量是否是一个数,当经过math.round处理后不相等,则num不是一个数

u 在同一jsp页面提交和接受数据

1.jsp中表达式标签:<%= %>

u 迅速上手myeclipse工具-----》完成一个小案例:建立一个web工程(站点),创建一个jsp文件myHello.jsp,文件输出hello,配置tomcat,jdk,并发布工程(将站点放在tomcat 上),在浏览器中访问myHello.jsp

u 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缺点:表现层和业务逻辑层混合在一起(乱);开发中不利于多人开发协同;不利于后期维护,不好查看。model模式优点:简单,开发速度快;适合开发小项目。轻巧自由。

u 简单的用户登录界面:迅速掌握eclipse开发工具,使用纯jsp技术的model1

学习到:如何在jsp页面间跳转,如何操作数据库,如何在jsp中显示数据/分页

1. 通过response.sendRedirect来实现多个页面信息共享,注意在loginCl页面中的

response.sendRedirect("wel.jsp?user="+u)与wel页面中的

<%=request.getParameter("user") %>一定要相同

2. 加载数据库:

a.加载sql server:

//1.加载驱动

Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver ”);

//2.创建连接

Connection

ct=DriverMananger.getConnection(“jdbc:Microsoft:sqlserver://1 27.0.0.1:1433;databaseName=spdb”,”root”,”123”);

b.加载mysql

//到数据库中区验证

//1.加载数据库驱动

Class.forName("com.mysql.jdbc.Driver");

//2.得到连接

Connection ct =

DriverManager.getConnection("jdbc:mysql://localhost:3306/spd b","root","123");

//3.创建statement

Statement sm = ct.createStatement();

//4.查询

ResultSet rs=sm.executeQuery("selectpasswd from users where username='"+u+"'");

3. 如何在myeclipse中引入jar包:

点击webroot下的web-inf中的lib,右键import,选择file system,选择jar包路径导入,成功后会在referenced libraries 中出现一个jar包的小奶瓶。

u 分页技术

1. 分页算法:

四个变量:int pageSize:每页显示几条记录(程序指定的);int pageNow希望显示第几页(用户指定的)int pageCount:一共多少页(是计算出来的一共多少页)int rowCount:一共多少记录(一共有多少条记录从表中查询得到的)

if(rowCount%pageSize==0){

pageCount=rowCount/pageSize;

}else{

pageCount=rowCount/pageSize+1;

}

2. 为防止因用户删除造成的查询页数缺失,我们不采用:select * from users where userIdbetween 7 and 9, 而是采用:select top pageSize 字段名列表from 表名where id not in ( select top pageSize *(pageNow-1) id from 表名)

如:select top 3 * from users whereuserId not in ( select top 3 userId from users) 显示第二页

但请注意这是在sql server中可以使用的top查询语句,在mysql中并不可以用

mysql不支持select top n的语法,应该用这个替换:

select * from tablename order by orderfielddesc/asc limit position,counter;

position 指示从哪里开始查询,如果是0则是从头开始,counter 表示查询的个数

取前15条:select * from tablename order by orderfielddesc/asc limit 0,15

mysql中的分页实现:

select *from tableName where 条件limit (当前页码-1)*页面容量

, 页面容量

如:select * from userswhere userId limit 3, 3

"select* from users where userId limit "

+((pageNow-1)*pageSize)+","+pageSize

3. 请注意,一定要将ResultSet rs.next(),否则rs将指向表头,而非第一行数据

4. 请注意,在同一个jsp页面中,java片段中声明的变量可以在下面的片段中使用

5. 当数据表较大时,如何解决分页速度的问题

表数据的自我复制,这个可以去看看你的项目操作表的效率如何

insert into 表名(字段1,2、、、)select

字段1,2、、、from

表名

如:insert into users(username,passwd,email,grade) select username,passwd,email,grade from users

u 用户登录系统框架改进:通过对model1纯jsp开发模式

反思,演变为model1结合javaclass开发模式:

1. 不合理的地方:loginCl与wel页面都用了数据库,有重复代码;整个框架没有清晰的层次关系;代码不优雅,可读性差,可维护差。

2. 改进:

a) 分层:界面层(jsp)与业务逻辑层(java class),即纯jsp转为model1(jsp+java class)

b) 将常用代码封装到类中,使得代码清晰

c) 为什么userbeancl中分页处理返回值为arraylist

而不是resultSet:

1.如果resultSet,那么使用时,不能关闭与该resultSet相关联的数据库连接等资源而造成资源的浪费

2.如果返回resultSet,我们只能用rs.getint(),rs.getString()来得到结果,代码可读性不好,不方便维护

3.先将rs中每条记录封装成一个userbean对象ub;再将userbean对象ub放入arraylist集合中便于管理

u 用户登录系统再改进mvc

1. login.jsp输入数据,logincl.jsp通过调用java class

处理数据,wel.jsp显示数据,虽然看起来不错,但有缺点如下:

jsp技术主要用来做界面的,但logincl.jsp用来调用javaclass,完成用户验证,不好;

wel.jsp用于显示用户信息,但还调用了java class,不利于分工开发;servlet技术处理页面跳转方便,不该放弃使用

2. mvc模型:m(model模型),v(view视图),c(control 控制器),mvc强制性地使用应用程序的输入,处理和输出分开,使用mvc

,应用程序被分成三个核心部件:模型(java class来做,或java bean,ejb)视图(jsp来做)控制器(servlet来做),各自处理自己的任务,利于分工开发。

3. mvc下的用户管理开发:

a) 增加控制器(servlet)即将logincl.jsp用servlet 代替,发挥servlet充当控制中转的优势

b) 在控制器servlet中调用model去完成用户验证,并准备要显示的用户信息数据

4. 注意:页面跳转有两种方式:

转向:response.sendRedirect(“wel.jsp”) 效率较慢公司常常不用

转发:

request.getRequestDispatcher(“wel.jsp”).forward(request,res ponse);效率高,同时request中的对象还可以在下一页面使用,公司常用这种方法

5. mvc提倡界面和业务完全分离,对wel页面进行改进。添加另一个控制器userclservlet.java验证用户,分页,删除用户

6. mvc开发模式的总结—》mvc处理过程:首先控制器接受用户的请求,并决定应该调用哪个模型来进行处理,然后调用模型来处理用户的请求,并返回数据,最后控制器用相应的视图显示模型返回的数据,并通过浏览器呈现给用户。

7. mvc的缺点:

a) 工作量增加了。由于开发者将一个应用程序分成了三个部分,所以使用mvc的同时也意味着你将要管理更多的文件,这点显而易见,这好像我们的工作量增加了,但是比起带来的好处不值得一提

b) 不适用与小项目,否则就是机关枪打蚊子

c) 调试应用程序的难度加大mvc提倡模型与视图分离,这样也给调试应用程序带来了一定困难,每个构建在使用之前都需要经过彻底的测试,一旦构建经过了测试,就可以毫无顾忌的重用它们了。

u session技术讲解(针对浏览器实例而言)

1. 什么是session:当用户打开浏览器,访问某个网站时,服务器就会在服务器的内存为浏览器实例分配一个空间,该空间会被这个浏览器独占,这个空间就是session,该

空间中的数据默认存在时间30min

2. session可以做:网上商城购物车;保存用户信息;同一用户不用页面信息共享;防止用户非法登录到某个页面、、、吧

3. 如何理解session:可将session看做一张表,表有两列,每一行是session的一个属性,每个属性有两部分,一个是属性的名字(string),一个是属性的值(object)

4. 如何使用session:

a) 得到session:servlet中HttpSession

hs=request.getSession(true);

jsp中session是一个内置对象(9大内置对象之一)可以直接使用

b) 向session中添加属性

servlet:hs.setAttribute(String name,Object val);

jsp : session.setAttribulte(Stringname,Object val);

c) 从session中得到属性

servlet:hs.getAttribute(String name);

jsp:session.getAttribute(String name);

d) 从session中删除属性

servlet:hs.removeAttribute(String name);

jsp:session.removeAttribute(String name);

5. 从session中得到某个属性的值时,返回值为object

类型,必须强转后才能使用:

String s_name =(String)session.getAttribute(String name);

6. session中的注意事项:

a) session中属性存在的默认时间为30min,可以修改:第一,可以在web.xml中修改,第二可以在程序中修改setMatInactiveInterval();

b) 上面说的时间是指用户发呆的时间,不是累计时间

c) 当某个浏览器访问网站时,服务器会给浏览器分配唯一的一个session id,并以此区分不同的浏览器(客户端)在

d) 因为session的各个属性要占用服务器的内存,因此软件公司都是在迫不得已的情况下才使用

7. jsp内置对象:out 、resquest、response、session

u 数据库中的用户名是中文名字

数据库中用户名为中文名字时会产生乱码,因为iso-8859-1,解决方法为:1).重新转码,2).使用过滤器来解决,3).通过配置server.xml文件(不太稳定):

<Connector port="8080"

maxThread="150"minSpareThreads="25" maxSpareThreads="75"enableLookups="false"

redirectPort="8443"acceptCount="100" debug = "0"

connectionTimeout="20000"disableUploadTimeout="true" URIEncoding="GB2312" />

u 美化管理系统界面,完善页面(参考.doc文档进行)

1. eclipse中提示符:alt+/

2. 主界面main界面:

3. 增加修改用户,删除用户的功能

更好的一种:

如何判断是哪种操作

4. mysql操作时,查找使用executeQuery,删除使用executeUpdate。

u 管理系统功能改进(增加对用户的查找,增加,删除和修改功能,这样我们这个用户登录系统就形成了一个用户管理系统,并且使用mvc模式开发)

u 时尚购物网

1. 需求分析——》用例图(uml,rose)——》模块功能——》实现

【模仿写网站à创新不是容易的

无—》有

2. 界面设计

a) div+css

b) table+css

c) 混合(两种)

3. 数据库设计:

a) 现初步设计,然后完善

b) 一点点加入,容易接受

c) 表的设计【界面à猜出表】做出用户表和商品表,其他表后面设计

4. 建立web工程,testShopping

5. 开始首页面(index.jsp)【界面不再手写,dw来写】

a) 写界面时要:死去活来,先将显示写死,写成静态页面

b) 在dw页面中,我们建html——》在myeclipse中建立jsp

c) 在开发界面时,我们使用table+css

d) 在table+css中常用的一个技巧,在行的某列中嵌入一个表格,可以得到精确的布局

e) css是什么:

i.

是层叠样式表:控制网页的字体、大小、边框、宽度、高度

f) 怎么把界面引入index中呢?

g) flash动画技术:先会用再会做,(flash,javascript,ps)

用的过程很简单:1.先将资源拷贝过去,2.在要显示广告的位置加入一句话:<script language=”javascript”src =”banner.jsp”></script>

6. 把静态页面向动态的页面修改,继续开发完善功能:

a) 显示货物的具体信息(jsp中如何使用js技术)

i.

在主页面,用户只要点击了书名超链接,就跳转到显示该书信息的页面

ii.

完成返回大厅按钮功能:javascript代码实现

iii.

为了做成动态就需要mvc,model和servlet开发

b) 将主界面做活:index首页面增加分页功能

i.

ctrl+shift+m(可以自动引入包)

ii.

把每个显示商品的信息table循环起来(算法,在jsp页面中java片段和html页面的标签嵌套混用)

c) 用户登录注册页面设计

d) 购物流程设计mvc(界面、控制器、模型)

i. hashmap:hashmap就像一张表;key值不能重复;key值和value值,可以是java的object类型Key值

Value值

韩顺平html笔记

HTML 一、HTML有关知识点 1.html介绍 html是一种标记语言,主要的用途是开发网页,使用html可以展现文字、图片、视频、声音,html是我们web开发(网站开发)。 2.html可以做什么 ?html可以编写静态网页 ?该静态网页可以包括文字、图像、动画、声音、表格、链接。从而构成一个个漂亮的网页 3.Html发展历史 4.Html的基本结构 5.是标记(也叫元素),标记的一般格式: <元素名[属性=“属性值”]>元素内容 如果没有内容可以用:<元素名[属性=“属性值”]/> 6.Html实体标记 7.Html常用标记

?html超链接 ●_blank 新的窗口 ●_self 本窗口 ●_parent 父窗口 ●_top整个浏览器窗口 ?html图像元素 ?html表格

--用于说明行 --用于说一小格
?无序列表
?有序列表
?框架 ?表单元素 文本框: 密码框: 单选框: 复选框:checked是指默认选中的 隐藏域: 图片按钮: ?文本域: ?下拉菜单: 案例:1 需求:打开网页后,显示hello !

New Document 问题: ?js的位置可以随意放 ?js必须使用 ?在一个html文件中(JSP/PHP/https://www.360docs.net/doc/6b9404982.html,)可以出现多对(script)片段,浏览器会按照先后顺序一次执行 案例2:Hello world程序改进 ?如何定义变量: ?如何运算: New Document ?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)区分大小写

韩顺平html+css+js之JS笔记

韩顺平html+css+js 之JS笔记 Javascript的基本介绍 ?JS是用于WEB开发的脚本语言: ?脚本语言是什么: ?脚本语言不能独立使用,它和HTML/JSP/PHP/https://www.360docs.net/doc/6b9404982.html,配合使用 ?脚本语言也有自己的变量,函数,控制语句(顺序,分支,循环) ?脚本语言实际上是解释性语言(即在执行时直接对源码进行执行) ?Java程序.java→.class→jvm , js→浏览器(js引擎来解释执行) ?Js在客户端(浏览器)执行 ?因为js是由浏览器来执行的,因此这里有个问题,不同类型的浏览器可能对js的支持不一样。 New Document 案例:1 需求:打开网页后,显示hello !

New Document 问题: ?js的位置可以随意放 ?js必须使用 ?在一个html文件中(JSP/PHP/https://www.360docs.net/doc/6b9404982.html,)可以出现多对(script)片段,浏览器会按照先后顺序一次执行 案例2:Hello world程序改进 ?如何定义变量: ?如何运算: New Document ?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第三讲

jquery学习笔记-韩顺平

1,Jquery是一个javascript框架或者叫做javascript库; 2,用Ajax我们可以给服务器发送一个请求,服务器可以给我回送一个请求; 3,出现javascript框架的根本原因就是为了提高开发者的开发效率; 4,jquery是一个轻量级的js库(压缩后只有21K),这是其他的js库所不及的,它兼容CSS3,还兼容各种浏览器; 5,JQuery是一个快速的,简洁的javascript库,使用户能更方便的处理HTML document,events,实现动画效果,并且方便的为网站提供AJAX交互; 6,JQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也说得很详细,同时还有许多成熟的插件可供选择。 7,jquery能够使用户的html页保持代码和html内容的分离,也就是说,不用再在html里面插入一堆js来调用命令了,只需定义id即可; 8,所谓的库就是提供一些现成的方法供你去调用; 9,当前流行的javascript库有: Jquery ,MooTools,Prototype,Dojo,YUI,EXTJS,DWR[主要是运行在服务器上的]; 10,$(document) //---这个表示一个jquery对象; 11,如果使用jquery,则需要引入jquery库 12,jquery对象就是对dom对象的一系列包装,它包装完成后,就可以使用jquery对象提供的方法来进行操作; 13,在使用jquery开发中,有两种对象,1,jquery对象,2,dom对象,如果是jquery对象则只能使用jquery库提供的方法,如果是dom对象,则只能使用js本身提供的方法; 14,分析jquery库文件的运行原理: