第二章 Web应用程序初步_第1页
第二章 Web应用程序初步_第2页
第二章 Web应用程序初步_第3页
第二章 Web应用程序初步_第4页
第二章 Web应用程序初步_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章Web应用程序–初步2目标理解JSP理解JSP页面的各种构成元素了解JSP页面的执行过程了解JSP的优点运用MyEclipse6.5开发JSP3JSP概念2-1Java服务器页面(JavaServerPage,JSP)以扩展名.jsp保存有效地控制动态内容生成在JavaServerPage里面使用Java编程语言和类库HTML用于表示页面,而Java代码用于访问动态内容JSP页面Java服务器4JSP概念2-2<%@pagecontentType="text/html;charset=GBK"%><html><head><title>JSP演示1</title></head><bodybgcolor="#ffffff"><%java.util.Datenow=newjava.util.Date();out.println("当前时间是:"+now);%><h1>你好,这就是一个JSP页面,简单不?</h1></body></html>演示示例15JSP页面元素3-1JSP页面的元素静态内容指令表达式ScriptletJSP页面<%Java代码%><%=Java表达式%>HTML静态文本以“<%@”开始,以“%>”结束。比如:<%@includefile="

Filename"%>声明动作<%!函数或方法%>以“<jsp:动作名”开始,以“</jsp:动作名>”结束比如:<jsp:includepage="Filename"/>注释<!--这是注释,但客户端可以查看到--><%--这也是注释,但客户端不能查看到--%>6JSP页面元素3-2<%@pagecontentType="text/html;charset=GBK"language="java"import="java.util.Calendar"%><%!StringgetHello(Stringname){return"Hi,"+name+"!";}%><%Calendarnow=Calendar.getInstance();%>JSP声明JSPScriptletJSP指令7JSP页面元素3-3<html><head><title>JSP页面构成</title></head><!--这是注释,但客户端可以察看到--><%--这也是注释,但客户端不能察看到--%><body><h1align="center">JSP页面构成</h1><%=getHello("朋友")%><%if(now.get(Calendar.AM_PM)==Calendar.AM){%>早上好!<%}else{%>下午好!<%}%><br><br><jsp:includeflush="false"page="welcome.jsp"><jsp:paramname="str"value="参数"/></jsp:include></body></html>静态内容JSP表达式JSP注释演示示例2JSP动作8JSP执行过程2-1客户端JSP页面3执行2转译编译1Servlet请求响应JSP执行过程9JSP执行过程2-2转换和编译编译ServletJSP!确定JSP中的错误从JSP元素中提取数据为JSP生成一个Servlet转译10JSP的优点3-1将内容与表示分离请求响应JSP页面静态内容动态内容客户端服务器JSP程序员页面设计人员11JSP的优点3-2强调可重用组件

JSP页面1静态内容动态内容JSP页面2静态内容动态内容JSP页面3静态内容动态内容JavaBean多个JSP页面使用相同的JavaBean12JSP的优点3-3简化页面开发-Web设计人员和Web程序员使用Web开发工具开发JSP页面JSP页面静态内容动态内容Web开发工具MacromediaDreamweaverMyEclipse

页面设计人员JSP程序员13总结JSP页面使用HTML显示静态内容,并使用Java代码生成动态内容JSP页面的元素为静态内容、JSP指令、JSP表达式、JSPScriptlet和注释可以使用标准开发工具创建JSP页面JSP使用可重用的跨平台组件(如JavaBean)JSP允许创建自定义标签,使JSP开发更容易JSP执行过程的各个阶段为转译、编译和执行14StrutsMVCStruts是目前非常流行的基于MVC的JavaWeb框架MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务常见的MVC组件Struts:Apache的,最流行的MVC组件Struts2:Apache用Struts和WebWork的组合出来的新产品,目前上升势头强劲WebWork:这个可是老牌的MVC组件,后来组合成了Struts2,不过自身仍在发展SpringMVC:SpringFramework自己整合自己Spring的优势推出的MVC组件,用户也不少JSF:这个是一个规范,Sun的和Apache的都有各自的实现。用户量很大,被众多IDE支持。Tapestry:最彻底的MVC开发框架,丰富的组件资源,重用性很高。.netmvc:在.net上的mvc组件,经过了preview1~5,RC1,RC2,目前已经是正式版了,微软给出的定义是可以用于生产的架构。

MVC的优点低耦合性视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则可维护性

分离视图层和业务逻辑层也使得WEB应用更易于维护和修改有利于软件工程化管理

由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。15Struts基本概念

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2是Struts的下一代产品,是在struts1和WebWork的技术基础上进行了合并的全新的Struts2框架。其全新的Struts2的体系机构与Struts1的体系结构差别巨大。Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts2可以理解为WebWork的更新产品。虽然从Struts1到Struts2有着太大的变化,但是相对于WebWork,Struts2的变化很小。

16Struts原理Struts是MVC的一种实现,它将Servlet和JSP标记(属于J2EE规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。171客户端初始化一个指向Servlet容器(例如Tomcat)的请求

2这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMeshPlugin)

3接着StrutsPrepareAndExecuteFilter被调用,StrutsPrepareAndExecuteFilter询问ActionMapper来决定这个请是否需要调用某个Action

4如果ActionMapper决定需要调用某个Action,StrutsPrepareAndExecuteFilter把请求的处理交给ActionProxy

5ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类

6ActionProxy创建一个ActionInvocation的实例。

7ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

8一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2框架中继承的标签。在这个过程中需要涉及到ActionMapper18Struts原理Struts是MVC的一种实现,它将Servlet和JSP标记(属于J2EE规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。1920Struts2和MVC

1.控制器(StrutsPrepareAndExecuteFilter):

用户请求首先到达前端控制器StrutsPrepareAndExecuteFilter。StrutsPrepareAndExecuteFilter负责根据用户提交的URL和struts.xml中的配置,来选择合适的动作(Action),让这个Action来处理用户的请求。StrutsPrepareAndExecuteFilter其实是一个过滤器(Filter,servlet规范中的一种web组件),它是Struts2核心包里已经做好的类,不需要我们去开发,只是要在项目的web.xml中配置一下即可。StrutsPrepareAndExecuteFilter体现了J2EE核心设计模式中的前端控制器模式。

2.模型(动作Action):

在用户请求经过StrutsPrepareAndExecuteFilter之后,被分发到了合适的动作Action对象。Action负责把用户请求中的参数组装成合适的数据模型,并调用相应的业务逻辑进行真正的功能处理,获取下一个视图展示所需要的数据。Struts2的Action,相比于别的web框架的动作处理,它实现了与ServletAPI的解耦,使得Action里面不需要再直接去引用和使用HttpServletRequest与HttpServletResponse等接口。因而使得Action的单元测试更加简单,而且强大的类型转换也使得我们少做了很多重复的工作。3.视图(Result):

视图结果用来把动作中获取到的数据展现给用户。在Struts2中有多种优秀的结果展示方式,常规的jsp,模板freemarker、velocity,还有各种其它专业的展示方式,如图表jfreechart、报表JasperReports、将XML转化为HTML的XSLT等等。而且各种视图结果在同一个工程里面可以混合出现。2122MyEclipse8.5+tomcat+Struts2MyEclipse快速开发Struts2应用231.1运行MyEclipse8.5241.2.建立WebProject:store125261.3.在MyEclipse配置Tomcat

(窗口菜单的首选项)2728292.1配置struts2开发环境下载struts-组件,解压下载的组件,在lib目录下找到其中的以下组件:commons-fileupload-1.3.1.jar文件上传组件commons-io-2.2.jarcommons-lang-2.4.jarcommons-lang3-3.1.jarcommons-logging-1.1.3.jarASF出品的日志包freemarker-2.3.19.jarjavassist-3.11.0.GA.jarognl-3.0.6.jarObjectGraphNavigationLanguage, Struts2框架通过其读写对象的属性。struts2-core-.jar

Struts2框架的核心类库xwork-core-.jarXWork类库,Struts2在其上构建

30

Struts-core-2.x.x.jar:

xwork-2.x.x.jar:

ognl-2.6.x.jar:

freemarker-2.3.x.jar:Struts2的UI标签的模版使用Freemarker编写。

commons-logging-1.1.x.jar:ASF出品的日志包。

commons-fileupload-1.2.1.jar:文件上传组件。把这些jar包复制到web工程下的WEB-INF/lib目录中313233342.2配置web.xml文件3536在web.xml中配置struts2核心过滤器StrutsPrepareAndExecuteFilter37在MyEclipse启动Tomcat38394041发布工程42点击按钮选择Server4344http://localhost:8080/store1/index.jsp:8080/store1/index.jsphttp://10.118.1762:8080/store1/index.jsphttp:///store1/index.jsp452.3struts.xml文件

46复制模板struts.xml文件到src目录下,struts.xml发布后在WEB-INF/classes下,模板如下2.4创建login.jsp47创建success.jsp48

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论