- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Struts学习手记
1. Struts 学习手记 1
Struts 学习手记
Struts 是一个技术框架,由Craig R. McClanahan编写,并且在2000 年的时候捐献给了ASF,目前,有很多组织和个人参与Struts 框架的开发,使得Struts保持高速成长,Struts作为一个J2EE 框架,很容易和你的web 应用结合起来,使其成为web 应用MVC 模式中VC 部分事实上的标准。
1 CGI
2 servlet
3 JSP
?
web技术历史:
简介:
所有对应用程序的请求,都会被WEB SERVER 定向到ActionServlet进行统一控制、分配处理,ActionServlet可以看作是Struts框架的核心,枢纽。用户的所有请求提交给Controller,由Controller进行统一分配,并且采用推的方式将不同的UI显示给用户。这样做得好处是
1、可以统一控制用户的行为,例如在Controller 中添加统一日志记录等功能是非常方便的。
2、 职责分离,有利于各部分的维护。用户不直接访问分散的UI,这样可以通过配置文件或则流程定义的方式,在不同的环节、时间将不同的页面推向给用户。
职责:接收客户请求; 映射请求到指定的业务操作 ; 获取业务操作的结果并以有效的方式提供给客户 ;根据业务操作的结果和当前的状态把不同的UI推向给客户
J2EE 的前端控制器(Front Controller)设计模式中利用一个前端控制器来接受所有客户请求,为应用提供一个中心控制点,在该控制点上,可以很方便地添加一些全局性的,如加密、国际化、日志等通用操作。Controller 的实现机制正是建立在前端控制器的设计模式基础上。
Controller(控制器)机制
?
?
ActionServlet 类?当ActionServlet 的实例接收到一个请求,不管是通过get方法或post方法,ActionServlet的process( )方法被调用并用以处理客户请求。process( )方法实现显示如下:
protected void process(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException {
RequestUtils.selectApplication( request, getServletContext( ) );
//?根据用户访问的上下文路径来选择处理的应用
getApplicationConfig( request ).getProcessor( ).process( request, response );
//?获取一个处理器,并将客户请求提交给处理器处理
}
Struts初始化处理流程
?,不管哪种方式加载,和其它Servlet一样,ActionServlet的init( )方法将被调用
当ActionServlet接收到客户请求后将客户请求转交给合适的处理器org.apache.struts.action.RequestProcessor或其子类的一个实例(根据Struts配置文件中的配置)process()方法::
1、? 调用processMultipart( )方法。
3、 调用processLocale( ) 方法处理一些国际化的事务4、 调用方法来决定processContent( )请求的content type编码(encoding)方式
5、 根据noCache属性的设置调用processNoCache( ) 方法
7、 调用processMapping( )方法,根据客户请求信息中的path 信息来决定是否返回ActionMapping对象实例。如果不能够找到path 的映射,则客户将会得到一个error 响应。?
8、 通过调用processRoles( )方法检查是否为Action配置了安全角色。9、 调用processActionForm( )方法检查是否存在为ActionMapping配置的ActionForm
10、 调用processPopulate( )方法
12、 根据action 映射是否配置了forward属性或include属性来决定下一步操作。调用RequestDispatcher对象的forward( )方法或include( )方法13、 调用processActionCreate( )方法创建或获取一个Action对象实例处理请求
14、 调用processActionPerform( )方法
扩展RequestProcessor如果不想利用Struts 提供的处理器,则可以扩展它
1、创建一个新的
文档评论(0)