JSP-Web框架技术详解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库
数据源storeDB(MySql)
JSP作为视图,同时也有部分控制器的作用。 JavaBean组件作为模型和控制器组件。 HTTP请求到达JSP时,首先设置JavaBeans组件的属性;然后调用其组件的方法 JavaBean组件通过连接数据库来执行业务逻辑; 最后, JavaBean组件把执行的结果返回给JSP显示。
控制器:Java Servlet
模型:JavaBean
对进入控制器的每个入口点来说,Bean的作用是存储从视图获取的信息, 23 ),实现业务逻辑。 同时被称为“动作类”(Action Class
Controller:定义用户界面对用户输入的响应方式(控制器,控制
模型和视图之间的交互过程。)
决定向用户返回怎样的视图、检查通过界面输入的信息以及选择处理输 入信息的模型。
21
22
5. Struts框架
Struts Framework是一种基于Java的技术框架,充分利用面向 对象设计、代码重用以及“write once,run anywhere”的优点。 提供创建Web应用程序的框架,其中对应用程序的显示、表示 和数据的后端代码进行了抽象。 视图:JSP
在不同的用户之间共享数据
通过ServletContext对象(聊天servletContext_chat)
通过Application对象(testApplication)
通过文件系统或者数据库
14
3. JSP技术使用的两种模式
模式一 model 1 :JSP+JavaBean
JSP页面独自响应请求并把处理结果返回客户。 所有的数据由Bean来处理,JSP实现页面的表现。 实现了页面的表现和页面的商业逻辑相分离的两层结构。 引起的问题:当大量使用此模式时,导致在页面中嵌入了大量的 Java 控制代码……如果业务逻辑复杂,将会更加严重。 适合小型项目。
Web框架应用
Servlet JSP技术的两种使用模式 MVC及Struts JavaServer Face
1
Servlet(服务器端小程序)
1. Servlet
使用Java Servlet应用程序设计接口编写的Java程序。 由服务器端调用和执行。(Java编写的CGI) 源于请求/响应模式,可以接收来自客户端浏览器的Http请求,并 产生一个响应,然后将这个响应发送到客户端。 是独立于平台和协议的服务器端的Java应用程序,可以生成动态 的HTML页面,位于Web服务器内部,由Web服务器进行加载(该服 务器必须包含支持Servlet的JVM) 实质就是运行在服务器上的类。
适合发送大量的数据。
例: doPostTestServlet.java
doPut
允许客户端把真正的文件存放在服务器上,而不仅仅传送数据
doDelete
允许客户端删除服务器端文件或者Web页面。
doHead
由容器调用以使此Servlet能够处理Trace请求。
主要用于调试,不可以覆盖。
JavaBean作为M(Model,模型)使用。
实现各个具体的应用逻辑和功能。
JSP即为V(View,视图)。
18
19
数据库 DB.class JDBC
数据源storeDB(MySql)
IssueCard.class ReverseCard.class
View
客户
HTTP请求
Servlet
每一视图采用了定制标签库(由Struts Framework)提供的JSP的页面。 全部表单元素都是用定制标签编码,每一个表单都通过映射JSP到 Servlet的请求这一方式指向控制器的特定入口点。
负责视图与模型之间的交互。控制器的每个入口点都由名为strutsconfig.xml的配臵文件设臵,把来自视图的请求映射为特定的Java类以 进行相应的操作,还指定下一视图的位臵。
在浏览器中直接执行编译好的HelloWorldServlet.class
7
编辑web.xml
添加关于要执行的Servlet的标签:
<servlet> <servlet-name>FirstServlet</servlet-name> <servlet-class>servlet.FirstServlet</servlet-class> </servlet>
当JSP网页第一次运行时,速度很慢,这是因为服务器要将这些JSP
程序转换为Servlet,而一旦转换完毕,编译后常驻在内存中,访问 JSP网页的速度就很快了。
功能强大
可以完成传统CGI很难实现的任务,如直接和服务器交互,在各个程
4 序之间共享数据(数据库连接池的应用)
Servlet与Applet
17ຫໍສະໝຸດ Baidu
3. JSP技术使用的两种模式
模式二 model 2 :JSP+JavaBean+Servlet
遵循MVC模式。 使用一个或者多个Servlet作为C(Control,控制器)。
请求由前沿的Servlet接收并处理后,重新定向到JSP。
每个Servlet通常只实现很少一部分功能,多个Servlet结合起来完成复 杂的任务。 对输入数据的检查和转换。 通过JavaBean访问数据库。 初始化JSP中要用到的JavaBean或对象。 根据处理中不同分支和执行的结果(如成功或失败),决定转向哪个JSP等
3
Servlet处理方式
可移植性
Servlet使用Java编写,Java具有跨平台性,Servlet的可移植性也
很强,可以在不同的操作系统和应用服务器下移植运行。
灵活
Servlet接口非常精练,易于掌握,同时,又具有良好的扩展性。
效率高
传统CGI,每个请求都要启动一个新的进程;Servlet中,每个请求 由一个轻量级的线程处理。
设置
Control
forward
View
showTypeList.jsp showSubList.jsp showSingle.jsp
index.jsp issue.jsp reversion.jsp
Single.class SubSingle.class
JavaBean对象
读取
客户端请求首先发送到Servlet; Servlet通过JDBC连接数据库,执行数据库操作; 完成后用JavaBean来封装执行的结果,将结果发送到请求对象中; 最后把视图派发到显示的JSP页面。
用于获取服务器信息,并将其作为响应返回客户端。 当由浏览器,或者通过HTML、JSP直接访问Servlet的URL时, 一般使用GET方式调用。
例:doGetTestServlet.java
会存在安全性上的问题。
11
doPost
用于客户端把数据传送到服务器端。 可以隐藏发送给服务器端的任何数据。
2
传统CGI处理方式
HTML网页上放臵字段(文字输入区)和“提交”(submit)按钮。 用户输入相应信息,单击“提交”,数据会随同一个URL传给服务 器,告诉它运行指定地方的一个CGI(通用网关接口)程序,对提 交的数据进行处理;
Web服务器提供:调用CGI程序,用标准数据流输入和输出, CGI程序负责做其他一切事情:
开发、部署一个简单的Servlet
编写HelloWorldServlet.java 部署好Servlet的目录结构。在classpath环境变量中添加:
D:\TOMCAT5.5\COMMON\LIB\servlet-api.jar; D:\TOMCAT5.5\COMMON\LIB\jsp-api.jar
首先,检查输入的数据,判断是否正确; 如果不正确,CGI生成相应的HTML代码,以网页形式,由服务器传回 给用户(用户需要重新输入)。 如果输入数据正确,CGI处理数据(也许要添加到数据库等)。随后 产生HTML网页,回传给用户,使用户看到处理后的结果。
Applet处理方式
使用客户端运行的小程序检查数据,然后发出数据; 由服务器端程序接收和处理数据。 存在问题:不确定客户端是否有JVM,或是JVM的什么版本?
Applet和Servlet程序中都没有main()方法,只有一些特定的方法 用于启动、执行和退出。 不同的是,Servlet不提供用户界面,运行在服务器端,而Applet 提供用户界面,运行于客户端。 Servlet和JavaBean一样,使用纯Java编写。 不同的是,JavaBean不能独立运行,只是提供接口供 JSP等访问, 而Servlet可以独立运行。
实例:简易论坛的设计
15
16
View
客户
index.jsp
HTTP请求
JSP
设置 读取
showTypeList.jsp showSubList.jsp showSingle.jsp
JDBC Single.class SubSingle.class JavaBean对象 DB.class Model / Control
8
9
10
使用HttpServlet处理客户端请求
Servlet是请求驱动的。 请求可能包含多个数据项,当Web容器接收到某个对Servlet的 请求时,封装成一个HttpServletRequest对象; 将此对象传给Servlet的对应的服务方法——doGet、doPost
doGet
客户端
以实例的形式保存在服务器内
destroy方法
结束destroy在服务器的运行
6
Servlet的开发过程
基于HTTP协议的Servlet必须引入javax.servlet和 javax.servlet.http包。 HttpServletRequest对象包含了客户端请求的信息,可能通过该 参数取得客户端的一些信息以及HTTP请求类型; HttpServletReponse对象用于完成Servlet与客户端的交互,通过 HttpServletRequest.getOutputStream()方法取得向客户端输出 的输出流,向客户端发送HTML页面。 编写doGet( )方法(对于POST请求,调用doPost()方法)
13
2. JSP 开发常用技巧
在不同的页面之间共享数据
把数据保存在Session中(useSession) 通过cookie(setcookie)
通过隐含的表单把数据提交到下一页面
通过ServletContext对象 通过Application对象
通过文件系统或者数据库
20
4. MVC模式
MVC——Model/View/Controller Model:应用对象(模型,真正完成任务的代码) View:应用对象在屏幕上的表示(视图,应该具有一定的功能性并
遵守可用性的约束,但不应该处理数据。
界面的每一部分都只能包含采集数据的足够逻辑,并把它传递给设计模 式中的其他组成部分以进行处理。
doOptions
处理客户端的Options调用,通过这个调用客户端可以获得此Servlet支持的 方法。
12
获得Servlet初始化参数
Servlet可以配臵一些初始化参数 ServletConfig接口,获取这些参数
例: JDBCServlet.java
jpeg_form.html
添加Servlet的映射标签:
<servlet-mapping> <servlet-name>FirstServlet</servlet-name> <url-pattern>/First</url-pattern> </servlet-mapping>
在浏览器中执行
http://localhost:8080/myServlet/First
Servlet的生命周期
装载Servlet:动态执行。 创建一个Servlet实例。 调用Servlet的init( )方法。 服务:如果容器接收到对此Servlet的请求,那么它调用
service( )方法。
销毁:实例被销毁,调用destory( 5 )方法。
Servlet .class文件 init方法 doGet方法 doPost方法 service方法