您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > JAVA项目之SSH
Copyright©2013caohaiyang.曹海洋技术笔记最JAVA项目之SSH1.简介在开发软件时,最常用设计模式MVC。MVC全名是ModelViewController,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,实现一种业务逻辑和数据显示分离的方法。这个方法业务逻辑被聚集到一个业务逻辑层(模型),用户界面被聚集到一个界面层(视图)。视图层的改动而不需要重新编写业务逻辑。相较传统的模式这样做减少了代码的维护量,一旦模型发生改变,也易于维护。控制器负责将用户的输入与模型(model)和视图(view)的联系。在j2ee开发中最典型的MVC就是JSP+servlet+javabean的模式。但我们可能加喜欢第三方提供的MVC框架,每种MVC框架的功能的侧重点不同,虽然每一种都可以单独使用。为了提高开发效率和项目的性能我们更愿意在项目中使用组合框架。其中最著名的就是struts+spring+hibernate组合了简称为ssh。但这一组合中并没有使用视图层框架,本人常用的视图层框架为FreeMarker与Velocity。关于视图层框架使用本在前文中已有介绍,在此不再赘述。本章节分别介绍最常用的框架技术,struts2,spring和hibernate,并进行框架的组合配置,struts2+spring;spring+hibernate;最终完成struts2+spring+hibernate这一经典的框架搭建。并利用spring的AOP进行事务的管理工作。文中的实例设置的版本:struts-2.3.15.1-lib,spring-framework-3.2.2,hibernate-release-4.2.2.Final,mysql-5.0.21。email:caohy@189.cn=wenku第1页Copyright©2013caohaiyang.曹海洋技术笔记最2.struts2.1简介Struts是开源软件,是java的mvc设计模式的一种实现框架。Struts有其自己的控制器(Controller),使用Struts的主要目的就是利用其控制器。这样可以通过修改Struts配置文件来代替原来的Servlet代码编写,提高了开发效率。Struts现在有两个版本,Struts1.x和Struts2.x。Struts2.x是基于WebWork上发展出来的,而非Struts1.x,两都在运行机制上有者本质的区别。简单的说Struts1.x开发者的业务逻辑Action严重依赖于ServletAPI,难于测试。本章节主要介绍Struts2.x的配置使用。WebWork当用户向web应用发送请求时,经过过滤器,由WebWork的核心控制器拦截,如果用户的请求需要的业务逻辑处理,WebWork创建控制代理,创建时以开发者定义的xwork.xml配置文件为依据,以开发者实现的控制器Action为目标进行处理。这样开发者的Action可以与ServletAPI进行分离。在开发者的Action中并未通过HttpSerletRequest对象来获得请求参数,而是直接调用该Action的城员属性,成员属性与Action拦截器负责初始化,并以用户请求参数进行赋值。Struts2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理——因为用户实现的业务控制器并没有与ServletAPI耦合,显然无法处理用户请求。Struts2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action的execute方法来处理用户请求。并根据该方法的返回值,决定视图。即使Action需要HTTPSession对象,代码中也不会出现HttpSessionAPI,对是以一个Map对象代表HTTPSession对象。email:caohy@189.cn=wenku第2页Copyright©2013caohaiyang.曹海洋技术笔记最2.1struts配置1、配置Struts2.x的包到去下载Struts2安装包struts-2.*-lib.zip。解压后有很多包,这些包支持不同的功能。开发者可以根据项目的需求加载所需的包。为了使初学都容易搭建环境,本例使用apache提供的样例进行说明。下载struts-2.3.15.1-apps.zip,解压后有web项目样例struts2-blank.war、struts2-mailreader.war、struts2-portlet.war、struts2-rest-showcase.war和struts2-showcase.war。解压struts2-blank.war:jar-xvfstruts2-blank.war。以struts2-blank.war为例进行说明。2、web.xml配置?xmlversion=1.0encoding=UTF-8?web-appid=WebApp_9version=2.4xmlns=:xsi=:schemaLocation=://java.sun.com/xml/ns/j2ee/web-app_2_4.xsddisplay-nameStrutsBlank/display-namefilterfilter-namestruts2/filter-namefilter-classorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter/filter-class/filterfilter-mappingfilter-namestruts2/filter-nameurl-pattern/*/url-pattern/filter-mappingwelcome-file-listwelcome-fileindex.html/welcome-file/welcome-file-list/web-app注:struts2.1.3之后的版本不再建议采用org.apache.struts2.dispatcher.FilterDispatcher,email:caohy@189.cn=wenku第3页Copyright©2013caohaiyang.曹海洋技术笔记最2、struts.xml配置在struts2.x中的配置文件一般为struts.xml,放到WEB-INF/classes目录中。Struts.xml:配置包含result/view类型、action映射、拦截器等的Struts2的主要配置文件。Struts.properties:配置struts2的框架属性。?xmlversion=1.0encoding=UTF-8?!DOCTYPEstrutsPUBLIC-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN=struts.enable.DynamicMethodInvocationvalue=false/constantname=struts.devModevalue=true/packagename=defaultnamespace=/extends=struts-defaultdefault-action-refname=index/global-resultsresultname=error/error.jsp/result/global-resultsglobal-exception-mappingsexception-mappingexception=java.lang.Exceptionresult=error//global-exception-mappingsactionname=indexresulttype=redirectActionparamname=actionNameHelloWorld/paramparamname=namespace/example/param/result/action/packageincludefile=example.xml/!--Addpackageshere--/strutsexample.xml?xmlversion=1.0encoding=UTF-8?!DOCTYPEstrutsPUBLIC-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN:caohy@189.cn=wenku第4页Copyright©2013caohaiyang.曹海洋技术笔记最packagename=examplenamespace=/exampleextends=defaultactionname=HelloWorldclass=example.HelloWorldresult/example/HelloWorld.jsp/result/actionactionname=Login_*method={1}class=example.Loginresultname=input/example/Login.jsp/resultresulttype=redirectActionMenu/result/actionactionname=*class=example.ExampleSupportresult/example/{1}.jsp/result/action!--Addactionshere--/package/struts在struts标签中可以有多个package,第一个package可以指定一个Servlet访问路径(不包括动作名),如“/”。extends属性继承一个默认的配置文件“struts-default”。action标签中的name属性表示动作名,class表示动作类名。result可以指定两个属性type和name。其中name指定了开发者业务逻辑的execute方法返回的字符串,type指定转向的资源类型。3、Action类 Struts2.x的动作类一般继承com.opensymphony.xwork2.ActionSupport;类,因为本类提供设置验证信息及读取资源文件的相关方法。当然也可以不继承。packageexample;/***codeSetwelcomemessage./code*/publicclassHelloWorldextendsExampleSupport{privatestaticfinall
本文标题:JAVA项目之SSH
链接地址:https://www.777doc.com/doc-754196 .html