web开发基础.docx
- 文档编号:26844543
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:20
- 大小:123.12KB
web开发基础.docx
《web开发基础.docx》由会员分享,可在线阅读,更多相关《web开发基础.docx(20页珍藏版)》请在冰豆网上搜索。
web开发基础
Web开发基础知识
J2SE:
类,接口
Swing,AWT
IO
Thread
Collection
Net
有了计算机网络技术,使共享变成了可能。
Net:
Socket
IP
Hello
网络里面流动的是不是就仅仅是“Hello”的二进制代码?
附加的信息:
位置
Hello架构:
Client/Server(客户端/服务器)
需要下载客户端软件,使用麻烦
安装:
对硬件是有要求的;一产生磁盘文件;二要写注册表
解决的思路:
改革和革命
B/S(Browser/Server)就是针对C/S架构革命的结果
●软件:
●硬件:
桌面应用程序---网络应用程序(C/S---B/S)
使用浏览器间接运行B/S架构的网络应用程序。
面向的人群:
普通人群
用户看到的是什么?
图文并茂的信息
如何来实现用户所看到听到的内容?
(文字,图片,声音,视频)
画出来?
图片的效果没有问题,涵盖的内容不全;尺寸太大;
用代码描述出来,然后用一个程序把这些代码转化并还原
HTML浏览器
HTML代码的方式描述文字,图片,声音,视频,Flash
标签+标签的属性的方式来描述
浏览器:
IEFF
用户:
有浏览器,网址
提供者:
写HTML
之间:
规则:
协议protocal
HTTP:
严格、详细规定了B/S架构网络应用程序双方之间信息来往的细节
我们作为提供用户看到的HTML结果的设计人员
HTML:
描述性的语言;全部都是陈述句
截止目前存在的问题
●HTML的内容是固定的
●无法提供功能
在服务器端提供计算的功能,HTML无能为力
用户看到的页面大部分都无法提前编写。
对用户浏览器而言,文件输入流还是网络输入流没有区别
变提前编写HTML为由程序产生HTML代码
World”);
网络输出流.println(“HelloWorld”);
现场直播:
网络输出流.println(“”);
rintln(“”);
服务器端的对内管理,对外提供访问的软件:
服务器
服务器:
设别客户端的请求;和网站内部提供的页面,功能结合,关联
●HTTP+HTML+浏览器
问题:
浏览器的内容(HTML)从哪里来?
网络上
●对于程序的提供方:
Html文件,程序,图片,视频
如何将这些内容和浏览者的访问关联起来?
HTTP仅仅是能够实现的前提,具体的关联关系还需要系统设计者自己来提供
上述的资源是静态的内容
通过程序,对外应付客户端的请求,对内管理内部的资源,同时,将内外关联或者结合
这个特殊的管理程序就是服务器。
服务器软件:
一直运行
管理网站的资源
网站以文件夹为单位由服务器来管理
对于不同的内容,有特定的识别和区分的方式
留言板:
提供用户注册和用户登录
用户登录以后显示所有的留言;可以再发布留言,可以删除自己的留言,可以修改自己的留言
数据库设计:
用户表:
id、username,password
留言表:
id、title,contents,pubtime,userId
--创建数据库
createdatabasenotes
onprimary
(
name='notes',
filename='d:
\',
size=3,
filegrowth=10%
)
logon
(
name='notes_log',
filename='d:
\',
size=1,
filegrowth=10%
)
go
--创建数据库表
usenotes
go
createtableusers
(
idintnotnullidentity(1,1)primarykey,
usernamevarchar(20)notnullunique,
passwordvarchar(20)notnull
)
go
createtablenote
(
idintnotnullidentity(1,1)primarykey,
titlevarchar(50)notnull,
contentsvarchar(1000),
pubtimedatetimenotnull,
userIdintnotnull
)
go
--添加主外键关系
altertablenote
addconstraintFK_note_users_userId
foreignkey(userId)referencesusers(id)
go
纯Servlet来实现用户看到的页面,问题:
如果用户看到的页面里面大部分内容都是固定的,使用Servlet会过于麻烦。
为了使HTML里面的内容动态产生,用程序来输出HTML代码,但是输出的HTML代码里面究竟有多少是动态的呢?
把HTML嵌入到Java的输出代码里面实现动态化
新的思路:
先按照HTML的方式去写,需要动态的内容的时候,在HTML里面做一个特殊的标记,在标记里面用Java代码来实现动态的内容,结束的时候也是标记,然后再按HTML的方式来设计。
----JSP
从用户的角度来,可以提前创建
但是,如果或多或少有变化的内容,无法提前创建,现场直播
Servlet
JSP
无论在JSP还是Servlet里面,重复的Java代码封装成普通的Java类,JavaBean
setAttribute(键,值);
ObjectO=getAttribute(键);
四种对象可以执行
当前页面重定向的页面超级链接打开的页面转发的页面
pageContext√XXX
request√XX√
session√
application√
在Servlet里面(“name”,”zhangsan”);
(“”);
(“”).forward(request,response);
HTML+CSS+JavaScript
使用程序来产生上述的内容
Servlet:
Java的输出语句从网络输出流上输出(把HTML嵌在Java代码内部)
用户看到的HTML+CSS并不是每一句都是变化;
JSP:
把需要变化的HTML的内容使用Java来产生,把具体产生的代码段以特殊的格式嵌入到HTML里面
页面:
Servlet,JSP,HTML
处理用户的操作:
Servlet,JSP
其它的辅助的操作:
Servlet,JSP,第三方的辅助类
Web开发里面常用的设计模式:
DAOMVC
DesignPattern:
开发过程中很多特定场景下经验的积累
SingleTonPattern:
解决了类的对象只能使用一个
懒汉式:
恶汉式:
多线程:
加锁(DoubleCheck)
问题:
数据库操作的问题
优化:
●程序运行中的需要的信息写到源代码的外面(属性文件或者XML)
●大的系统频繁操作数据库,会出现大量的重复的操作;拼凑SQL,通过数据库公共类来执行操作。
代码出现大量的重复。
DAO:
DataAccessObject降低数据库操作的繁琐的程序
数据库公共类:
如何使用公共类?
拼凑SQL,针对性的调用增删改或者查询方法
Stringsql=“select*fromuserswhereusername=’”+username+“’andpassword=’”+password+“’”;
调用数据库公共类的时候,需要语法完全正确的标准的SQL
标准的DAO实现:
●数据库公共类
●实体Bean:
作为数据传递的载体,一是简单,二是符合具体的逻辑
●面向接口:
设计操作接口(一组)
●封装的执行具体的数据库操作类,通过特定的方法执行具体的操作(多组)
以前,SQL---数据库公共类
现在:
变量---封装的操作类DAO---公共类
●工厂类
总结:
●公共类
(1)
●实体Bean(N)
●接口(N)
●接口的实现类(m*N)
●工厂类
(1)
规范:
代码多;使用规范,简单
MVC设计模式:
Model-View-Controller
Model:
模型
View:
视图
Controller:
控制
Model-I
JSP+JavaBean:
无法应付复杂的逻辑和大型的应用
使用已有的技术,扬长避短
Model-II
用户看到的页面:
View---JSP
处理逻辑,需要从用户处接收数据,进行处理Controller,Servlet
辅助Servlet进行数据库操作,普通Java类-Model(数据传递的载体:
实体Bean,功能的辅助:
业务Bean)
JSP:
视图,显示
在JSP里面:
HTMLCSSJavaScript
指令<%@%>脚本<%%>表达式<%=%>标准动作<>
关系:
并列的关系,没有嵌套的关系
noteId=<%=()%>">删除
九九乘法表
使用JSP来编写,Java代码嵌套在HTML里面,编写复杂,修改和处理麻烦
问题:
Java编写,位置太随意,混在一起
目标:
依然需要动态的功能
JSP标准动作:
useBeanid=”user”class=”user=newUserBean(); 用标签的格式来代替Java代码 EL: 页面里面的打印语句 JSTL: 传统的逻辑代码使用标签的形式来代替 EL: ExpressionLanguage表达式语言 就是JSP里面的打印语句 截止目前,可以在JSP里面实现打印的方式: ●JSP表达式<%=表达式%>Java代码,语法不统一 ●JSP标准动作: getPropertyname=”user”property=”username”> getProperty>只能操作标准的JavaBean 语法: ${要打印的内容} ${***.****} ${***[“***”]} 功能: 在JSP页面上打印(显示)4种属性范围的内容和表单提交的参数等 pageScope requestScope sessionScope applicationScope param 四种属性范围,表单提交的参数 没有前缀 ●问题: 为什么需要EL表达式 在MVC设计模式中,JSP只是视图,任务就是显示响应,而不是在JSP中做任何有关程序控制和业务逻辑的事情,所以在JSP页面中应该尽可能少的,或者完全不出现Java代码。 因此引入EL表达式。 简单地说,EL表达式是的输出语句。 ●问题: 使用 getProperty>同样可以实现,为什么要用这种方式呢? 答案: JSP标准动作也可以实现上述效果,但是,JSP标准动作存在如下局限性: ⏹一般是操作JavaBean的属性 ⏹JavaBean的属性只能为基本数据类型 ⏹不能进行逻辑操作 语法: 访问Bean的属性: 1.第一种方法: ${} 2.第二种方法: ${beanName[“beanProperty”]} EL隐式对象: ●pageScope(); ●requestScope(); ●sessionScope ●applicationScope ●param(“username”); ●paramValues 相当于调用(Stringname); ●header 相当于调用(Stringname); ●headerValues 相当于调用(Stringname); ●cookie 如同调用();后从数组中匹配的第一个Cookie的值 ●initParam EL运算符: ●算术运算符 +-*/或者div%或者mod 说明: 对于除法,如果有null值,则返回(long)0,大数类型则都转为BigDecimal然后执行大数除法,普通数字则先转为double再执行除法 ●关系运算符 ==! =<>>=<= eqneltgtgele ●逻辑运算符 &&||! andornot ●Empty运算符 ${emptya}相当于<%=(a==null)%> ●条件运算符 ${A? B: C}三元运算符 ●圆括号 ●优先级 1.[]. 2.() 3.not! empty 4.*/%divmod 5.+- 6.<>>=<=ltgtlege 7.==! =eqne 8.&&and 9.||or 10.? : 总结: DAO: bean,公共类,接口,接口的实现类,工厂类 MVC: Web扬长避短 设计模式 EL: JSP里面的打印语句 (); JSTL: 回顾: EL: 在JSP里面,代替传统的打印(输出)语句 传统: (); JSP表达式<%=%>Java代码+HTML JSP标准动作 getProperty> getProperty>输出的内容受限 EL可以输出四种属性范围以及表单提交的数据 在HTML页面里面除了输出动态的内容以外,会有逻辑代码(判断,循环) JSTL: JavaServerPageStandardTagLibrary ●这些标签是JSP的标签;不是HTML的标签 ●这些标签背后Java代码(是用标签的格式和语法来代替传统的Java代码) HTML标签仅仅对应的特定的现实 ●语法要求严格,和代码一样 表现形式: JSP→Servlet HTML→(“HTML代码”); JSPScriplet==》拷贝到Servlet的service方法里面 JSTL==》Java代码 使用: ●导入标签关联文件 ●使用 每一个标签背后是一个Java类 类和标签的结合点: 方法 具体的功能各部相同,处理标签的流程 接口来统一标签背后的类。 设置的功能: Setremove 示例: setvar="username"value="zhangsan"scope="request"> set> 输出的功能: 分支语句: 示例: if分支示例: iftest="${empty}"> 请登录 if> iftest="${notempty}"> 欢迎你 if> switch分支示例: choose> whentest="${=='zhangsan'}"> 张三 when> whentest="${=='lisi'}"> 里斯 when> whentest="${=='wangwu'}"> 王五 when> otherwise> 呵呵 otherwise> choose> 循环语句: Tld: (tagLibraryDescription) JSP里面用的JSTL标签和标签所对应的类关联起来,包括里面的细节 自定义标签步骤: ●编写标签功能实现类(实现特定的接口) ●编写标签描述符文件(tld文件,参考JSTL的tld文件) ●在中进行配置(不配置也可以,但不推荐这么做) ●测试 EL+JSTL: 取代JSP页面里面的Java代码 用标签的语法实现Java代码 自定义标签 Ajax AsynchronizedJavaScriptAndXml: 异步JavaScript和XML 用户的需求和感受是我们实现的动力和源泉。 功能: Java代码 美观: HTML+CSS+JS 慢: Web系统运行过程中,切换的基本单位是: 页面 Ajax: 实现页面的局部切换(异步刷新) 具体: 即时提示 注册检测用户名重复性 GoogleMap 示例: varxmlHttp;//一定要是全局对象,因为在两个方法里面都要用 functioncheck() { //alert("检测用户名是否被占用了"); //和服务器打交道,而且不能使用传统的请求响应的方式 //需要使用特殊的JS对象XMLHttpRequest xmlHttp=newXMLHttpRequest(); //alert(xmlHttp); //准备在服务器端进行检测的数据 varusername=//alert("需要检测的用户名: "+username); //提前先准备好检测结果的处理 =callback; //给发送数据做准备 ("get","CheckUsernameServlet? username="+username,true); (null); alert("数据发出去了"); } functioncallback() { alert("数据真的回来了"); vardata=; alert(data); } 针对不同浏览器产生特殊对象的示例: if { //如果这个对象存在,针对FireFox,Mozillar,Safari,IE7,IE8 xmlhttp=newXMLHttpRequest(); //针对某些特定版本的mozilla浏览器的BUG进行修正,一般可以不写 if { (“text/xml”); } } elseif { //针对IE5,,IE6 //2个可以用于创建XMLHttpRequest对象的控件名称,保存在一个js数组中 //排在前面的版本较新 varactivexName=[“”,””]; for(vari=0;i<;i++) { try { xmlhttp=newActiveXObject(activexName[i]); break; } catch(e) { } } //确认XMLHttpRequest对象创建成功 if(! xmlhttp) { alert(“创建失败”); return; } else { alert(xmlhttp); } Post方式注意: ("POST","AJAXServer",true); //POST方式需要自己设置http的请求头 ("Content-Type","application/x-www-form-urlencoded"); //POST方式发送数据 ("name="+userName);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- web 开发 基础
![提示](https://static.bdocx.com/images/bang_tan.gif)