Java web

一 .程序架构
1.C/S架构
是一种客户端/服务器的工作模式,由两个部分组成。
特点:使用前在本地安装客户端然后调用服务器得到相应的服务。
2.B/S架构
程序采用浏览器/服务器的工作模式,又称为请求/响应模式。
特点:很大程度上降低了对用户本地设备环境的要求。同时也极大的降低了程序维护的成本,非常方便。
工作原理:
1.客户端接受用户的输入:一个用户在IE中输入用户名和密码。
2.客户端向应用服务器端发送请求:客户端把请求消息发送到应用服务器端,等待服务器端的响应。
3.服务器端程序进行数据处理:应用服务器端通常使用服务器端技术,如JSP等,对请求进行数据处理。
4.发送响应:应用服务器端向客户端发送响应消息,并由用户的浏览器解释执行响应文件,呈现到用户界面。

URL
URL是Internet上标准的资源地址。
一个完整的URL由以下几部分组成,
http://www.kgc.cn/news/201609/newslist.jsp?page=6
协议:http是传输数据时使用的协议。
主机:www.kgc.cn可以定位到课工场的主机,如果知道主机的IP地址,这里可以替换成具体的IP地址来进行定位。
资源的位置:news/201609是我们访问的资源的位置或者资源的路径,而newslist.jsp则是我们要访问的资源的名称。
参数:?page=6是我们访问某个资源是所携带的参数。
?表示该URL中含有参数需要我们进行传递。
page=6表示参数名称为“page”,值为6。
如果需要传递多个参数,使用&符号进行连接,如page=6&size=10.
web服务器
是可以向发出请求的浏览器提供文档的程序,常用服务器主要有:
1)IIS:是源自Microsoft公司的一种信息服务器,服务对象是基于Windows系统平台开发的程序应用。
2)Tomcat:是Apache基金会旗下的一款免费,开源的web服务器软件。
技术先进,性能稳定,而且免费,占用的系统资源小,运行速度快。

什么是JSP
Java sever page 简称JSP。是一种运行在服务器端的Java页面,最初是由sun公司倡导
Jsp在开发时是采用HTML语言嵌套Java代码的方式实现的。
工作原理
JSP运行在服务器端,当用户通过浏览器请求访问JSP资源时,web服务器会使用JSP引擎对请求的JSP进行编译和执行,然后将生成的页面返回给客户端浏览器进行显示,整个工作原理如图:

JSP执行阶段:翻译阶段,编译阶段,执行阶段
JSP指令与注释
page指令
language属性用于指定JSP使用的语言,JSP中默认是Java
import属性用于引用脚本语言中使用到的类。
contenttype用于指定页面生成内容的mime类型,通常为text/html类型。
JSP注释
HTML注释
JSP注释
JSP脚本注释
JSP构建页面内容
1使用out对象输出显示
2表达式与变量
①表达式通常情况下会用Java变量来代替,也可以是带有返回值的方法。
②变量:全局变量和局部变量
定义
①声明局部变量: <%type name=value;%>
②局部变量 <%!type name=value;%>
3转义字符的输出
在特殊字符前加 ’\’ 符号即可
jsp由这些页面元素组成:
1. 静态内容
就是html,css,javascript等内容
2. 指令
以<%@开始 %> 结尾,比如<%@page import=”java.util.*”%>
3. 表达式 <%=%>
用于输出一段html
4. Scriptlet小脚本
在<%%> 之间,可以写任何java 代码
5. 声明
在<%!%> 之间可以声明字段或者方法。但是不建议这么做。
6. 动作
在jsp页面中包含另一个页面。在包含的章节有详细的讲解
7. 注释 <%– – %>
不同于 html的注释 通过jsp的注释,浏览器也看不到相应的代码,相当于在servlet中注释掉了

HTML表单与request内置对象
post和get的区别
比较 Post Get
是否在URL中显示参数 否 是
数据传递是否有长度限制 无 有
数据安全性 高 低
URL是否可以传播 否 是

2request对象
方法 说明
getParameter(string name) 返回指定名称参数的值,返回值类型为string类型,若无对应名称的参数,返回null
getParameterValue(string name) 返回一组具有相同名称的参数的值,返回类型为string类型的数组
中文乱码
设置编码方式UTF-8
资源跳转与数据传递
1使用属性存取数据
setAttribe()
public void setAttribe(string name,object o);
当需要保存数据时,使用request对象直接调用该方法即可。
例request. setAttribe(“mess”,“注册失败”);

getAttribe()
public object setAttribe(string name);
在读取时必须将数据转换成其最初的类型。
string mess=(string)request. getAttribe(“mess”);
2使用转发与重定向实现页面跳转
(1)使用重定向实现页面跳转
重定向是指当客户端浏览器提交请求到服务器的JSP处理时,JSP的处理结果是要客户端重新向服务器请求一个新的地址,这种行为就称为重定向。
会丢失数据。
(2)使用转发实现页面跳转
可以实现同一个请求的信息在多个页面中共享。
(3)转发与重定向的比较
①重定向的执行过程:
它可以重定向到任意URL,不能共享request范围内的数据。
②重定向是在客户端发挥作用,通过请求新的地址实现页面转向。
③重定向是通过浏览器重新请求地址,在地址栏中可以显示重定向后的地址。
④转发只能在同一个web应用中使用,可以共享request范围内的数据。
⑤转发是在服务器端发挥作用,通过forward()方法将提交信息在多个页面减进行传递。
⑥转发是服务器内部控制权的转移,客户端浏览器的地址栏不会显示转发后的地址。
会话
1.会话就是用户通过浏览器与服务器之间进行的一次通话,简单的说就是在一段时间内,单个客户端与web服务器的一连串相关的交互过程。
2.session对象
(1)session一词的愿意是指有始有终的一系列动作,在实际应用中通常翻译成会话。
(2)session的工作方式
(3)使用session实现数据的存储与读取

使用cookie
(1)cookie的概念
cookie由服务器端生成并发送给客户端浏览器,浏览器会将其保存成某个目录下的文本文件。
(2)cookie的工作原理
(3)cookie与session的比较
①session是在服务器端保存信息,cookie是在客户端保存用户信息
②session中保存的是对象,cookie中保存的是字符串
③session对象随会话结束而失效,cookie则可以长期保存在客户端。
④cookie通常用于保存不重要的用户信息,重要的用session。
cookie的应用
1创建cookie对象
cookie cookiename=new cookie(string key,string value);
2写入cookie
response.addcookie(cookiename);
3读取cookie
cookie[] cookies=request.getcookies();
cookie的常用方法

application内置对象与全局作用域
方法 返回值类型 说明
setAttribute(string key,object value) Void 以key-value的形式保存对象值
getAttribute(string key) Object 通过key获取对象值

不同作用域的对比
名称 说明
Page作用域 只在当前页面有效,一旦离开当前页面,则在该范围内创建的对象将无法访问
Request作用域 在同一个请求范围内可以访问该范围内创建的对象,一旦请求失败,则创建的对象也随之失效
Session作用域 在会话没有失效或者销毁前,都可以访问该范围内的对象
Application作用域 在整个web应用服务没有停止前,都可以从application中进行数据的存取

第二章 Java Web 应用实现数据库访问
任务1 在java中实现新闻信息的查询
2.1.1 JDBC的基本使用
1 JDBC技术
(1)JDBC概念
JDBC 是一种java数据库链接技术,能实现java程序对各种数据库的访问。有一组使用java语言编写的类接口组成,这些类和接口称为JDBC API,它们位于java.sql以及javax.sql包中。
(2)JDBC的作用
在项目开发中,使用JDBC可以实现应用技术与数据库之间的数据通信,有以下3点好处
1建立与数据库之间的访问连接
2将编写好的SQL语句发送到数据库执行
3对数据库返回的结果进行处理
(3)JDBC的工作原理
顶层是自己编写的java应用程序,java应用程序可以使用java.sql和javax.sql包中JDBC API 来连接和操作数据库。
2使用JDBC 访问数据库
(1)JDBC API
使用JDBC访问数据库,就必须要用到JDBC API 。JDBC API可以完成3件事情:
与数据库建立连接,发送SQL语句和处理数据库返回的结果。
JDBC API工作的4个重要环节涉及的相关类和接口
1)DriverManager类
2)Connection(连接)接口
3)Statement接口
4)ResultSet接口
(2)JDBC访问数据库的步骤
1)使用Class.forName()方法加载JDBC驱动类
2)使用DriverManager类获取数据库的连接
2.1.2 使用配置文件管理连接参数
1配置文件的创建与设置
(1)配置文件的创建
需要强调的是,配置文件的扩展名是“.propertites”
(2)配置文件的设置
在配置文件中,采用key-value(键-值对)的方式进行内容的组织
2读取配置文件
使用Properties对象的load()方法来实现配置文件的读取,这就涉及使用流来实现文件的操作

任务2 使用JDBC 编辑新闻信息
2.2.1使用PreparedStatement
1PreparedStatement对象
PreparedStatement接口继承自Statement接口,PreparedStatement对象比普通的Statement对象使用起来更加灵活、更有效率
2使用PreparedStatement实现数据的编辑
对于数据库数据的操作,归纳起来就是数据的增、删、改、查 4种操作类型
实现新闻信息增加的功能,需要执行以下几个步骤
1)编写增加新闻的SQL语句
2)创建PreparedStatement对象的实例,并为占位符赋值
3)执行SQL语句。由于PreparedStatement对象对SQL语句实现了预编译,所有在执行时,直接调用executeUpdate()方法即可
4)根据执行结果进行处理
2.2.2 优化数据库操作的编码实现
1BaseDao类
(1)BaseDao类
数据库操作代码是可以进行优化的,将需要重复编写的代码进行提取,单独放到一个类中,在实际应用开发中,通常将这个类定义为BaseDao类
(2)编写BaseDao类
编写BaseDao类,需要实现以下几个功能
获取数据库的连接
执行数据库的增、删、改、查操作
执行每次访问结束后的资源释放工作
2 使用接口优化新闻编辑
在之前完成新闻信息查询和新闻信息编辑时,将实现的方法均写在类中,现在只需要将类转化成接口,然后通过实现这个接口中的方法就能实现对新闻信息
的读取和编辑操作。
2.2.3 优化JDBC连接管理
1 数据源与连接池技术
在JDBC扩展包中定义了javax.sql.DataSource 接口,它负责建立与数据库的连接,在应用程序访问数据库时不必编写连接库的代码,可以直接从数据源
获得数据库连接
2 数据源的配置数据源的配置有固定模式
3 使用JNDI读取数据源
JNDI是一个为应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口
我们可以把JNDI简单地理解为一种将对象和名字绑定的技术,即指定一个资源名称,将该名称与某一资源或服务相关联。
4、调用数据源得到连接
在应用程序中调用数据源获取连接的代码很简单,只需要实例化获取数据源方法的所在类,然后调用获取数据源的方法就可以得到一个Connection对象
任务3 在JSP页面中展示新闻列表
2.3.1 JavaBean 与组件开发
1 JavaBean 概述
JavaBean 是用java开发的可以跨平台的可重用组件,在Web程序中常用来封装业务逻辑和进行数据库操作。在程序开发中,程序员们所要处理的无非是业务逻辑和数据,而这两种操作都要用到 JavaBean ,因此 JavaBean 很重要。
JavaBean 实际上就是一个java类,这个类可以重用。 JavaBean 从功能上可以分为以下两个类:
1)封装数据
2)封装业务
JavaBean 一般情况下应满足以下要求
1)是一个公有类,并提供无参的公有的构造方法
2)属性私有
3)具有公有的getter和setter方法
2 JavaBean 的应用
(1)使用 JavaBean 封装数据
(2)用 JavaBean 封装业务
3使用JSP脚本显示信息列表
将新闻信息数据显示在JSP中,实现方法就是在JSP中使用脚本方式调用已经写好的后台代码。
2.3.2 使用JSP动作标签操作JavaBean
1 创建JavaBean 标签的作用就是在JSP中创建一个JavaBean的实例,并指定它的名称和作用范围。
标签的语法如下:

2 设置JavaBean属性
在JSP中使用标签创建JavaBean后,就可以对JavaBean中的属性进行设置。
标签的语法:

3获取JavaBean 的属性
的作用很简单,就是获取JavaBean 的属性值,用于在页面中显示。
的标签语法:

任务4 通过JSP页面添加新闻信息
2.4.1JSP页面的包含操作
1 使用include指令实现静态包含
语法:
<%@include file=”URL”%>
File:表示需要包含的页面路径
2使用JSP标签实现动态包含
语法:

3动态包含与静态包含的区别
在jsp中有两种包含,静态包含<%@include file=”xxx.jsp”%>和动态包含,下面说一下它们之间的区别

1、<%@include file=”xxx.jsp”%>为jsp中的编译指令,其文件的包含是发生在jsp向servlet转换的时期,而是jsp中的动作指令,其文件的包含是发生在编译时期,也就是将java文件编译为class文件的时期

2、使用静态包含只会产生一个class文件,而使用动态包含会产生多个class文件

3、使用静态包含,包含页面和被包含页面的request对象为同一对象,因为静态包含只是将被包含的页面的内容复制到包含的页面中去;而动态包含包含页面和被包含页面不是同一个页面,被包含的页面的request对象可以取到的参数范围要相对大些,不仅可以取到传递到包含页面的参数,同样也能取得在包含页面向下传递的参数

2.4.1 JSP转发实现页面跳转
用于页面跳转
语法

第三章 使用第三方控件及数据分页展示
任务1 实现新闻配图
3.1.1 认识第三方控件
1、第三方控件简介
第三方控件又被称为第三方组件,第三方组件不是软件本身就具有和提供的功能,而是由一个新的组织或个人开发出来的功能软件。
优点:程序员可以避免大量编码,减少开发工作量及由于逻辑或者算法造成的程序异常,从而降低开发成本,提高效率。
缺点:由于第三方组件是第三方组织或个人提供的,在开发时提供的版本可能会出现BUG。一旦出现BUG,在解决时会很麻烦。
2、commons-fileupload组件与API
commons-fileupload组件是由Apache开发的一个应用于文件上传的组件,其优点是使用方便,简单。该组件涉及的API介绍如下:
(1)FileItem
FileItem是一个接口,在该接口中定义了用于处理表单内容的以及文件内容的方法。在应用过程中,每一个表单中的单个字段元素,都会被封装成一个FileItem类型的对象,通过调用FileItem对象的相关方法可以得到相关表单字段元素的数据。在应用程序中,可以直接用FileItem接口进行访问。
(2)FileItemFactory接口与DiskFileItemFactory类
FileItemFactory是一个接口,是用于构建FileItem实例的工厂
DiskFileItemFactory类是FileItemFactory接口的实现类,在使用过程中,可以使用DiskFileItemFactory类构造一个FileItemFactory接口类型的实现类,语法如下:
FileItemFactory factory=new DiskFileItemFactory();
(3)ServletFileUpload
ServletFileUpload类是Apache文件上传组件中用于处理文件上传的一个核心类。它的作用是以List形式返回每一个被封装成FileItem类型的表单元素集合。
ServletFileUpload类的构造语法:
public ServletFileUpload(FileItemFactory fileItemFactory)
3.1.2 使用commons-fileupload组件上传文件
使用commons-fileupload组件实现文件上传前的准备:
(1)获取组件
(2)将解压后得到的两个jar文件复制到项目中的WEB-INF/lib目录下,并导入到项目中。
(3)修改新闻添加页面
修改表单:在标签中修改并添加如下代码
Method=”post” enctype=”multipart/form-data”
设置上传文件的标签:

(4)在表单提交的处理页面将实现文件上传所需的包导入。
3、编码实现图片上传
文件上传的编码步骤:
(1)判断表单提交内容的形式
(2)创建文件上传所需的的API实例
(3)解析request请求,过去FileItem对象集合
(4)循环遍历集合中的数据
任务2 实现对新闻的富文本编辑
3.2.1 CKEditor及其配置
1、CKEditor的简介
CKEditor是由CKSource公司开发的一款具有强大功能的的在线文本编辑工具,利用该工具可以实现类似于Word的功能。CKEditor基于JavaScript技术开发而成,因此在使用时无需安装。
特点:
功能强大
兼容性好
开源
2、CKEditor的配置
对应CKEditor,可以在应用过程中进行配置,也可以采用默认的设置
3、CKEditor的目录
CKEditor主要包含由如下几个文件夹
1)lang文件夹存放多国语言文件
2)_samples文件夹存放官方提供的Demo
3)skins文件夹存放CKEditor皮肤
3.2.2 在JSP中使用CKEditor
使用CKEditor包括以下5个步骤
(1)获取CKEditor。
(2)添加CKEditor到项目中
(3)在页面中引入CKEditor,需在页面中添加如下代码

(5)修改页面中标签属性,添加class=”ckeditor”
(6)对新闻进行编辑
任务3 实现分页查询新闻信息
3.3.1分页查询及实现
1、生活中的分页
使用分页的优势
(1)数据清晰直观
(2)页面不再冗长
(3)不受数据量的限制
(4)降低数据库服务器查询压力
2、数据分页查询
数据分页查询的实现步骤如下:
(1)确定每页显示的数据数量
(2)确定需要显示的数据总数量
(3)计算显示的页数
(4)编写分页查询SQL语句
(5)实现分页查询
3、分页查询小结
请注意实现数据分页查询过程中的如下几个关键:
(1)计算总页数
如果总记录数能够被每页显示记录数整除,那么:
总页数=总记录数/每页显示记录数
(2)如果总记录数不能够被每页显示记录数整除,那么:
总页数=总记录数/每页显示记录数+1
(3)计算分页查询时的起始记录数
起始记录的下标=(当前页码-1)*每页显示的记录数
3.3.2 使用存储过程封装分页查询
1、CallableStatement接口概述
CallableStatement接口继承自PreparedStatement接口.使用CallableStatement接口可以实现对存储过程的调用。
使用CallableStatement接口调用存储过程的语法格式如下:
{call[(,,)]}
Procedure-name:存储过程名称
Arg:参数,多个参数之间以逗号分隔
2、CallableStatement接口的应用
使用CallableStatement接口调用存储过程的步骤如下
1)修改程序执行的SQL语句
2)执行存储过程
3)对参数的类型进行设置
任务4 在JSP中实现分页显示新闻信息
3.4.1 在JSP中实现分页控制
1、分页显示的实现关键点
关键:
(1)当前页的确定
(2)上一页与下一页的确定
(3)首页与末页的设置
(4)分页时的异常处理
3、分页显示的实现步骤
实现数据分页显示,需要执行以下几个步骤
(1)确定当前页。需要设置一个pageIndex变量来表示当前页的页码,如果这个变量不存在,则默认当前页为第一页,否则当前页为pageIndex变量的值。
(2)页面的页面设置。有了当前页,就可以通过当前页码来确定首页,上一页、下一页末页的页码。注意在设置分页时,需要将对应的页码作为pageIndex的值进行传递,以便刷新页面后获取到新的数据。
(3)首页与末页的异常处理。如果当前页已经是第一页或者是最后一页,那么当用户“上一页”或“下一页”操作时,页面该如何显示?很明显,当前页的页面不能小于1,而下一页的页码也大于最末页,所有还要对可能出现的异常进行处理。
3.4.2 扩展分页操作功能
使用GO按钮实现分页显示,简单的说,就是通过直接输入数字实现分页显示的功能,这需要借助JavaScript脚本来协助完成。思路为:
(1)使用文本框输入需要显示的页码
(2)在JavaScript中获取用户输入的页码。
(3)使用隐藏域保存页码

                第五章

1.初识Servlet
是一种独立于平台和协议的服务器端Java应用程序,可以通过servlet来生成动态的web页面。
作用:交互式地浏览和更新数据,并生成动态的页面内容进行展示
2.

步骤:1)服务器接收从客户端发送的请求
2)服务器将请求信息发送至servlet
3)servlet经过处理后,生成响应的内容
4)服务器将响应的内容返回给客户端
3.servlet其实是server和applet两个单词的合成,并不是所有服务器端的Java应用程序都是servlet,只有当服务器端使用servlet API时,才能算是一个servlet。
4.servlet API又称为Java servlet应用程序接口,包含很多servlet中重要的接口和类,

5.生命周期
(1)加载和实例化

(2)初始化
在servlet容器完成servlet实例化后,servlet容器将调用servlet的init()方法进行初始化。
(3)提供服务
(4)销毁
servlet的实例是由servlet的容器创建的。
6.要想使servlet就必须先创建servlet,创建方法有3种
(1)实现servlet接口
(2)继承GenericServlet类
(3)继承HttpServlet
7.servlet的部署与运行
部署servlet时,需要对web.xml文件进行配置
1)在web.xml文件中添加元素,作用时将servlet内部名映射到一个servlet类名,格式为”包名+类名”。
2)添加元素,作用是将用户访问的URL映射到servlet内部名。
9.在配置servlet与URL的映射后,当servlet容器收到一个请求时,首先确定哪个web应用程序响应该请求,然后对请求的路径和servlet映射的路径进行匹配。web.xml中常用的设置方法有以下三种形式:

关于初始化的说明
1)元素表示初始化参数部分
2)元素表示初始化参数的名称
3 ) 元素表示初始化参数的值

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值