是用Java技术来解决相关Web互联网应用领域的技术总和,并遵循统一的JavaEE规范技术标准,在Java中,动态Web资源开发技术统称为JavaWeb
分布式应用(distr ibuted appl ication )
1.由不同的运行于分离的运行环境下的组件构成的应用程序通常是在不同的平台.上通过网络互联起来
2.建立在网络之上的软件系统
典型的分布式应用:
双端式(客户机一服务器CI ient/Server ):
早期的软件系统多以此作为首选设计标准。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统客户。端安装专门的软件
常见的有:
-数据库服务器
-网络游戏客户端/服务器端
-QQ客户端/QQ服务器端
三端式(客户机一中间件一服务器CI ient/Mi dd I eware/Server )即B/S模式:
主要应用于广域网
软件业务逻辑大部分在服务器端实现,不必开发客户端,应用广泛,易于管理维护
用户界面完全通过浏览器实现,-部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现
多端式(客户机一多组件一多服务器Client/Multiple Mi dd leware/Multiple server )
Web访问处理过程:
Web服务器(Web Server):Web服务器接收客户请求,然后向客户返回一些结果
Web客户端(Web Client):Web客户端允许用户请求服务器上的某个资源,并且向用户显示请求的结果
Web浏览器(Web Browser)
Web核心:三个标准
URL:统一资源标识符(URL) ,这是一个世界通用的负责给万维网_上例如网页这样的资源定位的系统。
HTTP:超文本传送协议(HTTP) ,它负责规定浏览器和服务器怎样互相交流。
HTML:超文本标记语言(HTML) ,作用是告诉浏览器向用户显示什么样的内容。
JavaEE
是在JavaSE基础之上建立起来的一种企业级分布式应用开发的开发结构,提供了一套设计、开发、汇编和部署企业应用程序的规范,提供了13种核心技术:
JDBC JNDI EJB RMI JSP Servlet XML
JMS JAVA IDL JTS JTA JAVA MAIL JAF
1.Java web应用开发的相关技术
表示层:JSP页面(前端页面)
控制层:Servlet (业务逻辑的分发)
业务逻辑层:JavaBean或者EJB (处理具体的业务请求)
持久层:JDBC (保持业务处理的数据)
JSP
JSP页面由HTML代码和嵌入其中的Java代码所组成,服务器在页面被客户端所请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器
提供方便的生成动态页面的技术,需要翻译为Java源文件后编译执行,本质是Servlet。
Servlet
Java Web的基础技术,提供接受、处理Http请求、做出Http响应,以及其它Web相关的功能。
Servlet是一种小型的Java程序,它扩展了Web服务器的功能,作为一种服务器端的应用,当被请求时开始执行,Servlet提供的功能大多与JSP类似,不过实现的方式不同,JSP通常是大多数HTML代码嵌入少量的Java代码,而servlets全部由Java写成并且生成HTML
2.Tomcat服务器安装和配置
Tomcat服务器安装目录介绍
backup:备份Tomcat服务器的配置文件
bin:存放启动和关闭Tomcat
conf:存放Tomcat服务器的各种全局配置文件
lib:存放Tomcat服务器以及所有web应用都可以访问的jar文件
logs:存放Tomcat执行时的日志文件
temp:存放Tomcat运行时所产生的临时文件
webapps:Web应用的发布目录,默认情况下把web应用文件放于此目录
默认的发布目录,于webapps同时存在时,默认选择wtpwebapps
wtpwebapps:Eclipse
work:Tomcat将JSP生成的Servlet源文件和字节码文件放到这个临时工作目录下
自动生成web.xml文件,该文件是一个Web项目的配置文件
3.Java Resource
src:存放Java源代码的目录
Libraries:存放的是Tomcat及JRE中的jar包
build:自动编译.java文件的目录
WebContent:Web根目录,存放的是需要部署到服务器的文件
MEAT-INF:是存放工程自身相关的一些信息,元文件信息,通常由开发工具和环境自动生成
MANIFEST.MF:配置清单文件
WEB-INF(安全目录):这个目录下的文件,是不能被客户端直接访问的
classes:存放Java字节码文件的目录
lib:用于存放该工程用到的库
web.xml:web工程的配置文件,完成用户请求的逻辑名称到政治的servlet类的映射
客户端能访问的资源(html或者jpg)必须跟WEB-INF在同一级目录,即放在Web根目录下的资源,从客户端是可以通过URL地址直接访问的
5.查看和放置所有架包:
项目目录右键→build path→configure build path→Libraries
6.Servlet
Servlet是基于Java语言的Web服务器端编程技术,按照JavaEE规范定义,Servlet是运行在Servlet容器中的Java类,他能处理Web客户的HTTP请求,并且产生HTTP响应。
Servlet对请求的处理和响应过程分为以下几个步骤:
1.接收HTTP请求
2.取得请求信息,包括请求头和请求参数数据
3.调用其他Java类方法,完成具体的业务功能
4.实现到其他Web组件的跳转(包括重定向或请求转发)
5.生成HTTP响应(包括HTML或非HTML响应)
Servlet运行在服务器端,由Servlet容器所管理,Servlet容器也叫Servlet引擎,是Web服务器或应用服务器的一部分,用于在发送的请求和响应之上提供网络服务、解码基于MIME的请求,格式化基于MIME的响应。
Servlet的创建过程
1.创建Java Web项目
2.创建Servlet
3.实现doPost()或doGet()方法
4.声明配置Servlet
5.部署运行Servlet
Servlet是使用Servlet API(应用程序设计接口)及相关类和方法的Java程序
Servlet API包含两个软件包:
javax.servlet包
+定义了所有Servlet类都必须实现或继承的通用接口和类
javax.servlet.http包
+定义了采用的HTTP协议通信的HttpServlet类
所有的Servlet都必须直接或间接的实现javax.servlet.Servlet接口
Servlet接口的基本目标是提供与Servlet生命周期相关的方法,如:init()、service()和destroy()等。
Servlet初始化
Servlet实例化后,Servlet容器会将调用Servlet的init方法来对Servlet实例进行初始化,初始化成功,Servlet在Web容器中会处于服务可用状态,如果初始化失败,Servlet容器会销毁该实例
当Servlet运行出现异常时,Servlet容器会使该实例变为服务不可用状态。
请求处理
服务器接收到客户端请求,会为该请求创建请求对象和响应对象,并调用service()方法,service()方法在调用其他方法来处理请求
在Servlet生命周期中,service()方法可能被多次调用,当多个客户端同时访问某个Servlet的service()方法时,服务器会为每个请求创建一个线程,这个月可以并行处理多个请求,减少请求处理的等待时间,提高服务器的响应速度,但同时也要注意对同一对象的并发访问问题。
服务终止
当Servlet容器需要终止Servlet(如Web服务器被关闭或需要出让资源),它会先调用Servlet的destroy()方法使其释放正在使用的资源
再调用destroy()方法之前,必须让当前正在执行Service()方法的任何线程完成执行,或者超过了服务器定义的时间限制
再destroy()方法完成后,Servlet容器必须释放Servlet实例以便被垃圾回收。
处理超链接请求数据:
+超链接形式的数据请求语法格式:
链接文本
+例如
下一 页
+链接地址中的"queryServlet” 为请求地址;
+“pageNo" 表示请求参数;
+“3”为pageNo请求参数的值;
+“8”为多个参数间的关联符;
+ “queryString” 表示表示另-一个请求参数; “neuedu ” 为queryStr ing请求参数的值
+发送请求的URL地址可 以是绝对地址,如:
http://localhost:8080/ServletDemo1/QueryServlet.
也可以是相对地址,如: QueryServlet、 . . /QueryServlet等形式。
在开发中大多数使用相对地址,以便于项目的移植。
+当用户通过超链接发送的请求到达Servlet容器时,包含数据的请求将被容器转换为HttpServI etRequest对象。对请求数据的处理工作便由
HttpServ I etRequest对象完成。
HttpServletRequest对象常用的数据处理方法有:
public Str ing getPar ameter (Str ing name) .返回 由name指定的用户请求参数的值
public Str ing[] getParameterValues (Str ing name) . 返回由name指定的一组用
publ ic Enumerat ion getParameterNames 0返回所有 客户请求的参数名。
+容器在将请求转换为HttpServletRequest对象之后,还会根据请求的类型调用不同的请求方法。对用超链接的GET请求则会调用doGet0方法;对于Form表单的POST请求则会调用doPost ()方法
+示例代码:
ch02- -ServI etDemo1/query. html,QueryServlet
处理Form表单请求数据:
+ Form表 单在enctype属性缺省或取值为appl icat ion/x- wwwr form ur lencoded情况下,无论是Get请求类型还是Post请求类型,均通过HttpServletRequest对象来获取请求数据。
+超链接一般用于获取/查询资源信息,属于GET请求类型,请求的数据会附在URL之后,以?分刮URL和传输数据,参数之间以&相连。由于其安全性(如:请求数据会以明文显示在地址栏上)以及请求地址的长度限制,-般仅用于传送一些简单的数据;
用户注册:
V:view信息的展示
对应项目中的Webcontent
C:controller请求的分发
对应servlet
M:model处理具体的业务逻辑
面对接口编程,interface
1.方便功能模块的划分
2.方便定位程序中的问题
3.可以进行分成处理,程序更调理
获取注册页面提交信息
在web应用中最常用的请求方法时GET和POST
请求参数:
指客户端通过请求向服务器端发送的数据,如登录、注册等
请求参数的格式:
fiel dName1=fieldValue1& fie I dName2= fieldVa lue2&…
参数在请求信息中的位置:
GET方法:数据被包含在HTTP请求行的URI中POST方法:数据被包含在HTTP请求的主体中
读取HTTP请求的参数
参数名:标识输入的数据
参数值:用户输入的数据
单例模式:
一是某个类只能有一个实例
二是它必须自行创建这个实例
三是它必须自行向整个系统提供这个实例
步骤5:在浏览器上输出结果
HTTP响应信息
一个响应由四部分组成:状态行,响应投标,空行,响应数据
状态行:状态行由三个标记组成:HTTP版本,响应代码和响应秒速
响应投标:像请求头标一样,它们能指出服务器的功能,标识出响应数据的细节
空行:最后一个响应投标之后是一个空行,发送回车符和退行,表明服务器以下不再有头标
响应数据:HTML文档和图像等,也就是HTML本身
响应对象的作用:
设置响应字符集
向客户端输出信息
输出DHTML和数据
输出二进制文件
输出Cookie
输出XML(Ajax)
Web资源跳转 - 请求重定向
功能完善
1.对中文的处理
2.服务器端验证
3.相同用户名不能重复注册
4.对并发注册的处理
1.1请求对象
void setCharacterEncoding(String encoding)
1.2响应对象
void setCharacterEncoding(String code)
void setContentType(String type)
2.2客户端验证
是为了验证数据的长度,类型等是否符合输入要求,一般用JavaScript实现
2.2服务器端验证
客户端验证没有服务器端验证可靠,可以通过很多方式绕过客户端验证,比如模拟请求等,所以服务器端验证更可靠安全