JAVA基础(三)
2015-08-15 21:08
232 查看
动态网页开发基础
动态网页:指在服务器端运行的程序或者网页,随不同用户,不同时间,返回不同的网页内容。特点:> 交互性:即网页会根据用户的要求和选择而动态改变和现实内容。
> 自动更新:无需手动操作自动生成新的页面,大大节省工作量。
> 随机性:不同时间、不同的用户访问同一网址产生不同的页面效果。
问:动态网页是静态网页的替代品吗?
答:动态网页和静态网页各有特点,网站采用动态网页还是静态网页主要取决于网站的功能需求和网站内容。
如果网站功能简单,内容更新量不打,采用静态网页,反之,一般采用动态网页技术来实现。
静态网页是网站建设的基础,静态网页和动态网页之间并不矛盾,为使网站能适应搜索引擎检索的需要,即使采用动态网站技术,也可以将网页内容转化为静态网页发布。
同一个网站,动静结合也是很常见的事情。
B/S(Browser/Server 浏览器/服务器)架构
问:B/S架构是C/S架构的替代品吗?
答:B/S架构是随着Internet技术的兴起,对C/S架构的一种改进,而非C/S的替代品。
B/S架构相比C/S架构有如下优势:
》维护和升级方式简单
》用户访问范围更大
同时,B/S架构相对于C/S架构也存在一定的劣势:B/S没有C/S友好,难以做出像Office这样界面丰富的软件。
B/S架构工作原理:
1.浏览器接受用户的输入
2.浏览器向服务器端发送请求,等待服务器端响应。
3.数据处理:服务器端通常使用服务器端脚本:JSP来访问数据库,查找数据,并获得查询结果。
4.发送响应:服务器端向浏览器发送响应消息(一般是动态生成的HTML页面)并由浏览器解释HTML文件,呈现结果界面。
使用URL实现动态页面的访问
URL:Uniform Resource Locator 统一资源定位符,是标准的互联网网上资源(图片 JavaScript脚本文件)的地址,用于完整的描述Internet上网页和其他资源地址的一种标识方法,简单的说就是我们常说的“网址”
URL组成:
> HTTP 协议:超文本传输协议,支持简单的请求和响应会话。对于Web协议,必须使用HTTP协议。
> 服务器域名或IP:localhost 或127.0.0.1
> 端口号:默认端口号:8080
> 路径:WebRoot文件夹。
》 第一部分:协议指定使用的传输协议
》 第二部分:主机IP
》 第三部分:路径
Tomcat:一个免费的开源的Web容器,Apache基金会的Jakarta项目中的一个核心项目,使用Tomcat作为JSP容器,由Sun公司的JSWDK 基础上发展起来的一个JSP标准实现。
Tomcat的获取:安装之前必须正确安装Java运行环境
Tomcat的安装:(1)添加系统变量,名称:TOMCAT_HOME(2)设置值为Tomcat的安装目录。
Tomcat的启动和停止:
1)通过服务器现实启动或停止Tomcat服务
2)通过Tomcat菜单中的Monitor Tomcat工具启动或停止Tomcat服务
3)Http://localhost:8080
Tomcat目录结构:
/bin:存放各种平台下用于启动或停止Tomcat的脚本文件
/conf:存放Tomcat服务器的各种配置文件,其中最重要的是server.xml
/lib:存放Tomcat服务器所需的各种.jar文件
/logs:存放Tomcat的日志文件。
/temp:存放Tomcat运行时的临时文件
/webapps:Web应用的发布目录
/work:Tomcat把由JSP生成的Servlet放于此目录下。
Tomcat的端口号配置:
1)找到子目录conf文件目录
2)打开server.xml
3)找到<Connector>节点,然后可以修改端口号了
4)保存配置。
Web应用的目录结构:
/ :Web应用的根目录,该目录下的所有文件对客户端都可以访问,包括JSP、HTML
/WEB-INF:存放应用程序所使用的各种资源,该目录及其子目录对客户端都是不可以访问的,包括web.xml(部署表述符)
/WEB-INF/classes:存放所有应用的Class文件
/WEB-INF/lib:存放Web应用使用的JAR文件
经验:在Tomcat运行过程中,Tomcat类加载器会首先加载classes目录下的class文件,然后再加载lib目录下的类,注意:如果两个目录下存在同名的类,class目录下的类具有优先权。
部署简单的Web应用步骤:
1)编写Web应用的代码
2)在Tomcat目录下创建应用文件目录
3)将完成的index.html文件复制到news目录下
4)启动Tomcat,打开:http://localhost:8080/news即可访问
02——Hello JSP
2.1JSP定义:(Java Server Pages) :动态网页技术标准。优点:具有跨平台性、易维护性、易管理。
JSP执行过程:
> 翻译阶段:翻译成JAVA源代码
> 编译阶段:字节码
> 执行阶段:
JSP页面组成:
静态内容、指令(Page指令)、表达式<%= 表达式 %>、小脚本<% 小脚本 %>、声明、标准动作注释。
Page指令:就是通过设置内部多个属性来定义JSP文件中的全局特性。常用属性:import ,contextType,language
注释:
HTML中的注释:<!-- --> JSP中注释:<%-- --%> <% //单行注释: %>
<% /**多行注释 */ %>
2.3 Web的调试和排错
常见错误:
> 没有启动Tomcat服务,或者没有在预期的端口中启动Tomcat服务。
> 没有部署Web应用,就试图运行Web程序。
> 运行时,URL出错
> 存放文件的目录无法对外引用。
2.4 JSP内置对象
常用的内置对象:Out 、Session 、Request、Response 、application、
Out :对应的方法print(),在JSp开发过程中使用最为频繁。
Request对象常用的几个方法。
String getParameter(Stirng name):根据页面表单组件名称获取页面提交数据。
String[] getParameter(String name):获取(一个页面表单组件对应多个值时的)用户请求数据。
Void setCharacterEncoding(String charset):设置编码格式。
request.getRequestDispatcher(String path):返回RequestDispatcher对象,调用该对象的Forward方法用于转发请求。
03——JSP数据交互
3.1 Response 对象Response对象用于响应客户请求并向客户端输出信息。
几个常用方法: 在客户端添加Cookie:addCookie(Cookie cookie)
设置HTTP响应的contentype类型:setContentType
设置响应所采用的字符编码类型:setCharacterEncoding(String charset)
将请求重新定位到一个不同的URL上:sendRedirect(String path)
3.2转发和重定向
定义:request.getRequestDispatcher(String path):转发
重定向:Response.sendRedirect()。
转发和重定向的区别:
同:都是实现页面的跳转。
异:转发是在服务器端发挥作用,通过forward 方法将提交信息在多个页面间进行传递。
转发是在服务器内部控制权的转移,客户端浏览器的地址栏不会发生转发后的地址改变。
Web服务器向浏览器发送的一个新的请求,浏览器接受后再发送一个新的HTTP请求到服务器,服务器再将次请求资源发给服务器。
重定向是在客户端发挥作用,通过请求新的地址实现跳转。
重定向是通过浏览器重新请求地址,在地址栏中可以现实转向后的地址。
Web服务器调用内部方法在容器内部完成请求处理和转发动作,将资源发送给浏览器,只能在一个Web应用中使用,可以共享Request范围内的数据。
3.3 JSP访问数据库
1.JDBC连接数据库步骤:
a) 加载JDBC驱动
Class.forName()
b) 与数据库建立连接
DriverManager getConnection()
c) 发送SQL语句,并获得放回结果。
d) 处理返回结果。
e) 访问结束。资源释放。
Close()
04——状态管理
Cookie:Web服务器保存在客户端的一系列文本信息。作用:> 对特定对象的追踪,如,访问次数,最后访问时间,路径等。
> 统计网页浏览次数
> 记录用户登陆信息,在cookie 有效期内。
> 实现各种个性化服务,针对不同用户喜好以不同风格展示不同内容。
使用Cookie步骤:
1.使用Page指令导入Cookie类
<%@page import =”javax.sevlet.http.cookie”%>
2.创建Cookie
Cookie cookie = new Cookie(key ,value)
3.写入cookie
Response.addCookie()
Cookie对象几个常用方法:
getName getValue 获得Cookie的有效时间,单位 秒:getMaxAge() setMaxAge 设置有效期。 setValue()创建Cookie后设置新的值。
4.读取Cookie
getCookie() 遍历:先 getName()然后遍历。
JSP内置对象Session:
会话:一个会话就是用户通过浏览器与服务器之间进行的一次会话。多次请求、响应。
Session机制是一种服务器端的机制。保存在客户端还是用Cookie。
Session常用的方法:
setAttribute(key ,value):以键值对的方式保存对象值。
getAttribute(key):通过Key来获取对象值。
Invalidate()设置Session对象失败。
getId:
setMaxInactiveOmterVal(int interval):设置Session的非活动时间。
getMaxInactiveInterval():获取Session的有效非活动时间,秒为单位。
Cookie和Session的区别:
> session 是在服务器端保存用户信息,Cookie是在客户端保存信息
> session 中保存的是对象,Cookie中保存的是字符串。
> session 对象随会话结束而关闭,而Cookie可以长期保存在客户端。
> cookie通常用于保存不太重要的用户信息,重要的信息都用Session保存。
Including指令:<% including file=”loginControl.jsp”%>
内置对象Application:
常用方法:
以键值对的方式保存对象值:setAttribute(Key,value)
通过Key获取对象值:getAttribute(key)
返回相对路径的真实路径:getRealPath
JSP 9大常用内置对象:
Out:用于向客户端输出数据
Request:主要用于客户端的请求处理
Response:用于响应客户端请求并向客户端输出信息
Session:用于存储用户会话的所有信息
Application:类似于系统的全局变量,用于实现用户之间的数据共享
pageContext:提供访问其他隐含对象的方法
getRequest():获得Request对象
getResponse()
getSession()
getOut()
getAttribute():保存属性
setAttribute()
Including():主页面保存的属性只能在当前页面中获取。
Page:表示当前页面。
Config:用于存放JSP编译后的初始数据。很少用
Exception:运行时异常,指定:isErrorPage=true
对象范围:=>从小到大=>
Page:本页面
Request:一次请求
Session:一次会话
Application:全局
05——JSP应用优化
5.1 JNDI:全称:Java命名与目录接口(Java Naming and Directory Interface):
API:现成的Jar包——用来获取资源。
5.2 数据连接池:
作用:提高数据库连接效率。
数据源和数据连接池:
数据源和JNDI:
Context接口和Lookup():返回与指定的名字绑定的对象。
数据源的配置:
1.Context.xml文件的配置:
<Context>
<Resource name =”jdbc/news” auth=”Container”>
<type =”javax.sql.DataSource” maxActive=”100” maxIdle=”30” maxWait=”10000” usename=”jbit” password=”bdqn” driverClassName=”oracle.jdbc.driver.OracleDriver” url=”jdbc:Oracle:thin:@127.0.0.1:1521:sjbitdb”>
</Context>
2.Web.xml文件的配置
DataSource对象的Resource元素属性
Name:指定Resource的JNDI名字
Auth:指定管理Resource的Manager 两个可选值:Container 和 Application。(Container 表示由容器来创建Resource Application表示由Web应用来创建和管理Resource)
Type:指定Resource所属的Java类名
maxActive:指定数据库连接池中处于活动状态的数据库连接的最大数目,取值:0 表示不受限制
maxIdle:指定数据库连接池处于空闲状态的数据库连接的最大数目,取值:0 表示不受限制
maxWait:指定数据库连接池中数据库连接处于空闲状态的最长时间(单位:毫秒 超过时间将会抛出异常 取值-1 表示可以无限制等待)
userName:指定连接数据库的用户名
Password:指定连接数据库的口令
driverClassName:指定连接数据库的JDBC驱动程序
Url:指定连接数据库的URL
不同的Web服务器涉资司数据源的方法不一样,根据服务器提供的帮助文档配置。
Reource-ref 元素的属性:
Description:对所引用资源的说明
Res-ref-name:指定所引用资源的JNDI名字,与<Resource>元素中的name属性对应
Res-type:指定所引用资源的类名字,与<Resource>元素中的type属性对应
Res-auth:指定管理所引用资源的Manager,与<Resource>元素中的auth属性对应
3.添加数据库驱动文件
使用JNDI获得数据源对象步骤:
(1)配置Context.xml文件
(2)配置Web.xml文件
(3)添加驱动
(4)代码编写,使用lookup()方法获得数据源对象。
常见错误:
classNotFoundException:不能加载驱动类
SQLNestException:连接路径为NULL不能创建驱动。
NameNotFoundException:名称没有绑定到当前的上下文
创建Web项目步骤:
.....
JavaBean:
定义:JavaBean是Java中开发可以跨平台的重要组件。在JSP程序中常用来封装业务逻辑、数据库操作。本事就是一个Java类,一个需要遵循编码约定的类。
从功能上可以分为:封装数据和封装业务
条件:JavaBean是一个共有类,提供共有的无参构造方法
属性私有
具有共有发访问属性Setter 和getter 方法。
06——JSP开发业务应用
分页步骤:
Select * from(select rownum as r ,nid, from t-nas) where r>=6 and <=10
1.确定每页显示的数据数量
2.计算显示的页数
pageSize:一页有几行
pageIndex:一行几列
3.编写SQL语句
a) 最内层的select语句
b) 第二层的Select语句
c) 最外层的Selecr语句
规律:
> 每页显示的第一条数据行号应该等于每页显示的数据量*(当前页码-1)
> 每页显示的最后一条数据行号等于每页显示的数据量*当前页码
4.在JSP页面中分页设置
SmartUpload组件:
特点:使用简单
能够全称控制上传内容(文件名称、大小、类型)
能够对上传文件的大小、类型进行控制
File类 作用:封装了上传文件所包含的所有信息。通过调用File类的方法,可以方便的获取到有关文件的信息。
Flie类的方法:
Public void SavaAs():保存文件
...Boolean isMissing()判断用户是否选择文件
Public String getFiled():获取表单中当前上传文件所对应的表单项的名称
...getFile():获取上传文件的文件名称,不包含路径
...getFilePathName():获取文件全名称,包含路径的完整文件名称
...getFileExt():获取文件扩展名
getContentString():获取文件内容
Public int getSize():获取文件大小 单位:字节 返回int类型
Public int getCount():获取文件上传的数目
Public File getFile(int index):取得指定位置的FIle文件对象
Public long getSize():获取上传文件的总长度
Public Collection getCollection():将所有上传文件对象以Collection的形式返回
SmartUpload:用于实现文件的上传与下载
常用方法:
Public final void initialize(PageCountext pageCountext):执行上传和下载的初始化工作,必须实现。
Public void upload():实现文件数据的上传,在initialize方法前执行。
Public int save(Stirng pathName):将全部上传文件保存到指定目录下,并返回文件保存的个数
Void setAllowFileList(String ExtList):指定禁止上传的文件扩展名,接受一个扩展名列表,以,号分隔
...setDeniedFileList:指定禁止上传的文件扩展名列表,接受一个扩展名列表,以,号分隔
...setMaxFileSize(long filesize):设置每个文件允许上次的最大长度
...setTotalMaxSize(long totalMaxSize):设定允许上传文件的总长度
控制文件上传类型:
setAllowFilesList(“gif,jpg,doc”)
不允许上传文件类型:
setDeniedFilesList(“jsp”,”html”,”exe”)
获取表单:
com.jspsmart.upload.Request对象的常用方法
getParameter(Stirng name):
getPrarmeterValues(String name):获取一个页面表单组件对应多个值时的用户请求数据,等同于JSP内置对象Request的getParameterValues()
07——使用分层实现业务逻辑
三层:表示层、业务逻辑层、数据访问层。
表示层:用于用户展示与交互
业务逻辑层:提供对业务逻辑的处理和封装
数访问层:实现对数据的保存和读取
层于层之间的关系
使用三层开发遵循的原则:
1.上层依赖其下层,依赖关系不夸层
2.下一层不能调用上一层
3.下一层不依赖上一层
4.上一层中不能出现下一层的概念
三层开发好处:
1.下层不知道上层的存在
2.每一层仅仅知道它下一层的存在,而不知道另外的下层
优点:
1.职责划分清晰
2.无损替换
3.复用代码
4.降低了系统内部的依赖程度
08——JSTL和EL
EL定义:Expression Language 表达式语言借鉴于JavaScript和Xpath,EL定义了一系列的隐含对象和操作符,是开发人员可以很方便的访问页面的上下文,以及不用作用域的对象。
1.自动转换类型
2.使用简单
语法:1.点操作符
EL表达式通常由两部分组成:对象和属性。
2.[]操作符
a) 与点操作符类似,${ compoter [“mannfacture”]}
[]操作符提供的功能:
1.当属性中包含了特殊字符 “.” “-”等时,就不能使用点操作符来访问只能用[]
2.访问数组:根据索引访问
EL隐式对象:作用域访问对象、参数访问对象、JSP隐式对象
作用域隐式对象:pageScope, requestScope sessionScope application
参数访问对象:param paramValues
JSP隐式对象:pageContext
JSTL:java Server pages Standard Tag library JSP:标准标签库
如何使用:
1.在工程中引用JSTL的两个Jar和标签库描述符文件(.TLD)
2.在需要使用JSTL的JSP页面上使用taglib 指令导入标签库描述符文件
JSTL核心标签库:
核心标签库:通用标签、条件标签、迭代标签
通用标签:1.<c:set>:用于定义变量
2.<c:out>:用来显示数据内容
3.<c:remove>:用来移除指定范围的变量
条件标签:<c:if>:
迭代标签:<c:ForEach>、<c:List>、<c:iterater>
EL 表达式和JSTL标签结合使用可以很大程度上减少JSP中嵌入的JAVA代码有利于程序的维护和扩展
11——Servlet基础
Servlet是一个符合特定规范的JAVA程序 在服务端运行,处理客户请求并做出响应
Servlet的生命周期:
1.加载
a) Servlet容器根据Servlet类的位置加载Servlet类,成功加载后有容器创建Servlet的实例
2.初始化
对于每一个Servlet实例,init()方法只能被调用一次
3.服务
a) 调用service()处理客户端请求通过servletRequest()对象获得客户端请求
4.销毁
a) 调用destory()进行资源回收
Servlet API
Servlet接口
ServletConfig接口
GenericServlet
HTTPServlet
ServletConfig:一个Servlet只能有一个ServletConfig对象
ServletContext 上下文
ServletRequest接口HttpSerlvetResponse接口
ServletResponse接口和HttpServletResponse接口
Servlet的编译和部署
1.Web.xml文件的配置
2.启动Tomcat,访问Servlet
获得Servlet初始化参数
获得上下文参数
Servlet处理GET/POST请求:
12——神奇的Ajax
RSS:将信息格式规范化的一个标准 主要应用于Blog(部落格)
Web开发技术和AjAx技术有什么区别:
1.发送请求方式不同
a) Web应用通过提交表单方式提交请求
b) Ajax通过Javascript的XMLHttpRequest对象发送请求
2.服务器响应不同
a) Web响应是一个完整的页面
b) Ajax响应的只是需要的数据,局部的
3.客户端处理的响应方式不同
a) Web发送请求后需要等到服务器响应完成后重新加载整个页面
b) Ajax不需要等待请求的响应,动态的更新页面中的局部
Ajax:异步的JavaScript 和XML 整合了JS、XML 和 CSS
异步:JS脚本发送请求后并不是一直等待服务器响应,而是发送请求后继续做别的事,无需刷新页面,同样可以显示服务器的响应数据。XML一般用于请求数据和响应数据的封装。CSS用于美化页面样式。
XMLHttpRequest
1.XMLHttpRequest常用方法
a)
2.XMLHttpRequest常用属性
3.XMLHttpRequest几种状态
HTTP常用状态:
200:服务器响应正常
400:无法找到请求的资源
403:没有访问权限
404:访问的页面不存在
500:服务器内部错误
JavaScript 对象XMLHttpRequest 是整个Ajax的核心,它提供了异步发送请求的能力
Ajax工作过程:
(1)通过XMLHttpRequest对象向服务器发送请求
(2)通过XMLHttpRequest对象解析服务器响应数据
(3)通过JavaScript脚本动态刷新更新页面
使用Ajax实现自动提示功能
相关文章推荐
- JAVA基础(二)
- 更改eclipse的编辑器样式风格
- 更改eclipse的编辑器样式风格
- JAVA基础(一)
- Eclipse下SWT/JFace的运行问题解决
- JAVA常用类库
- 用jdbc中加载配置文件是出现java.io.FileNotFoundException的解决之道
- JAVA排序方法
- JAVA数组
- 去哪网实习总结:定时发送邮件(JavaWeb)
- JAVA判断与循环语句
- Java多线程(二)同步与等待唤醒
- JAVA二进制转换
- Java功底篇系列-02-如何理解实际开发中与“排序”相关的问题
- JAVA注释
- JAVA多线程
- 去哪网实习总结:开发定时任务(JavaWeb)
- Java面向对象
- java学习
- java判断今天,昨天,前天,不能用秒间隔