欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    struts2入门实例教程详解.docx

    • 资源ID:3225865       资源大小:171.88KB        全文页数:53页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    struts2入门实例教程详解.docx

    1、struts2入门实例教程详解Struts2教程教程1:在本教程中使用的工具和程序库的版本如下:在本系列教程中Web工程的上下文路径都是struts2,如果在Web根目录有一个index.jsp文件,则访问路径如下:http:/localhost:8080/struts2/index.jsp由于MyEclipse6目前并不支持Struts2,所以我们需要到struts.apache.org去下载Struts2安装包。要想正常使用Struts2,至少需要如下五个包(可能会因为Struts2的版本不同,包名略有差异,但包名的前半部是一样的)。struts2-core-2.0.11.1.jarxwo

    2、rk-2.0.4.jarcommons-logging-1.0.4.jarfreemarker-2.3.8.jarognl-2.6.11.jarStruts2虽然在大版本号上是第二个版本,但基本上在配置和使用上已经完全颠覆了Struts1.x的方式(当然,Struts2仍然是基于MVC模式的,也是动作驱动的,可能这是唯一没变的东西)。Struts2实际上是在Webwork基础上构建起来的MVC框架。我们从Struts2的源代码中可以看到,有很多都是直接使用的xwork(Webwork的核心技术)的包。既然从技术上来说Struts2是全新的框架,那么就让我们来学习一下这个新的框架的使用方法。如果

    3、大家使用过Struts1.x,应该对建立基于Struts1.x的Web程序的基本步骤非常清楚。让我们先来回顾一下建立基于Struts1.x的Web程序的基本步骤。1. 安装Struts。由于Struts的入口点是ActionServlet,所以得在web.xml中配置一下这个Servlet。2. 编写Action类(一般从org.apache.struts.action.Action类继承)。3. 编写ActionForm类(一般从org.apache.struts.action.ActionForm类继承),这一步不是必须的,如果要接收客户端提交的数据,需要执行这一步。4. 在struts-

    4、config.xml文件中配置Action和ActionForm。5. 如果要采集用户录入的数据,一般需要编写若干JSP页面,并通过这些JSP页面中的form将数据提交给Action。下面我们就按着编写struts1.x程序的这五步和struts2.x程序的编写过程一一对应,看看它们谁更“酷”。下面我们来编写一个基于Struts2的Web程序。这个程序的功能是让用户录入两个整数,并提交给一个Struts Action,并计算这两个数的代数和,如果代码和为非负数,则跳转到positive.jsp页面,否则跳转到negative.jsp页面。【第1步】 安装Struts2这一步对于Struts1.

    5、x和Struts2都是必须的,只是安装的方法不同。Struts1的入口点是一个Servlet,而Struts2的入口点是一个过滤器(Filter)。因此,Struts2要按过滤器的方式配置。下面是在web.xml中配置Struts2的代码:filterfilter-namestruts2/filter-namefilter-classorg.apache.struts2.dispatcher.FilterDispatcher/filter-class/filterfilter-mappingfilter-namestruts2/filter-nameurl-pattern/*/url-patt

    6、ern/filter-mapping【第2步】 编写Action类这一步和Struts1.x也必须进行。只是Struts1.x中的动作类必须从Action类中继承,而Struts2.x的动作类需要从com.opensymphony.xwork2.ActionSupport类继承。下面是计算两个整数代码和的Action类,代码如下:package action;import com.opensymphony.xwork2.ActionSupport;public class FirstAction extends ActionSupportprivate int operand1;private

    7、 int operand2;public String execute()throwsExceptionif(getSum()=0)/如果代码数和是非负整数,跳到positive.jsp页面returnpositive;else/如果代码数和是负整数,跳到negative.jsp页面returnnegative;public int getOperand1()peturn operand1;public void setOperand1(intoperand1)System.out.println(operand1);this.operand1=operand1;public int getO

    8、perand2()return operand2;public void setOperand2(intoperand2)System.out.println(operand2);this.operand2=operand2;public int getSum()return operand1+operand2;/计算两个整数的代码数和从上面的代码可以看出,动作类的一个特征就是要覆盖execute方法,只是Struts2的execute方法没有参数了,而Struts1.x的execute方法有四个参数。而且execute方法的返回值也不同的。Struts2只返回一个String,用于表述执行结

    9、果(就是一个标志)。上面代码的其他部分将在下面讲解。【第3步】 编写ActionForm类在本例中当然需要使用ActionForm了。在Struts1.x中,必须要单独建立一个ActionForm类(或是定义一个动作Form),而在Struts2中ActionForm和Action已经二合一了。从第二步的代码可以看出,后面的部分就是应该写在ActionForm类中的内容。所以在第2步,本例的ActionForm类已经编写完成(就是Action类的后半部分)。【第4步】 配置Action类这一步struts1.x和struts2.x都是必须的,只是在struts1.x中的配置文件一般叫strut

    10、s-config.xml(当然也可以是其他的文件名),而且一般放到WEB-INF目录中。而在struts2.x中的配置文件一般为struts.xml,放到WEB-INFclasses目录中。下面是在struts.xml中配置动作类的代码:?xmlversion=1.0encoding=UTF-8?!DOCTYPEstrutsPUBLIC-/ApacheSoftwareFoundation/DTDStrutsConfiguration2.0/ENhttp:/struts.apache.org/dtds/struts-2.0.dtdstrutspackage name=struts2namespa

    11、ce=/mystrutsextends=struts-defaultaction name=sumclass=action.FirstActionresult name=positive/positive.jsp/resultresult name=negative/negative.jsp/result/action/package/struts在struts标签中可以有多个package,第一个package可以指定一个Servlet访问路径(不包括动作名),如“/mystruts”。extends属性继承一个默认的配置文件“struts-default”,一般都继承于它,大家可以先不去管

    12、它。action标签中的name属性表示动作名,class表示动作类名。result标签的name实际上就是execute方法返回的字符串,如果返回的是“positive”,就跳转到positive.jsp页面,如果是“negative”,就跳转到negative.jsp页面。在struts中可以有多个package,在package中可以有多个action。我们可以用如下的URL来访问这个动作:http:/localhost:8080/struts2/mystruts/sum.action注:Struts1.x的动作一般都以。do结尾,而Struts2是以。action结尾。【第5步】 编写

    13、用户录入接口(JSP页面)1. 主界面(sum.jsp)在Web根目录建立一个sum.jsp,代码如下:% page language=java import=java.util.* pageEncoding=GBK% taglib prefix=s uri=/struts-tags%htmlheadtitle输入操作数/title/headbody求代数和br/s:form action=mystruts/sum.actions:textfield name=operand1 label=操作数1/s:textfield name=operand2label=操作数2/s:submit va

    14、lue=代数和/s:form/body/html在sum.jsp中使用了Struts2带的tag.在Struts2中已经将Struts1.x的好几个标签库都统一了,在Struts2中只有一个标签库/struts-tags.这里面包含了所有的Struts2标签。但使用Struts2的标签大家要注意一下。在s:form中最好都使用Struts2标签,尽量不要用HTML或普通文本,大家可以将sum.jsp的代码改为如下的形式,看看会出现什么效果:. . 求代数和br/s:form action=mystruts/sum.action 操作数1:s:textfield name=operand1 /b

    15、r/操作数2:s:textfield name=operand1 /br/s:submit value=代数和 /s:form. .提示一下,在s:form中Struts2使用table定位。2. positive.jsp% page language=java import=java.util.* pageEncoding=GBK% taglib prefix=suri=/struts-tags%htmlheadtitle显示代数和/title/headbody代数和为非负整数h1s:property value=sum/h1/body/html3. negative.jsp%page la

    16、nguage=java import=java.util.* pageEncoding=GBK%taglib prefix=suri=/struts-tags%htmlheadtitle显示代数和/title/headbody代数和为负整数h1s:property value=sum/h1/body/html这两个jsp页面的实现代码基本一样,只使用了一个s:property标签来显示Action类中的sum属性值。s:property标签是从request对象中获得了一个对象中得到的sum属性,如我们可以使用如下的代码来代替s:property value=“sum”/:%com.opens

    17、ymphony.xwork2.util.OgnlValueStack ovs =(com.opensymphony.xwork2.util.OgnlValueStack)request.getAttribute(struts.valueStack);out.println(ovs.findString(sum);%启动Tomcat后,在IE中输入如下的URL来测试这个例子:http:/localhost:8080/struts2/sum.jsp-教程2:处理一个form多个submit在很多Web应用中,为了完成不同的工作,一个HTML form标签中可能有两个或多个submit按钮,如下面的

    18、代码所示:!-if !supportLineBreakNewLine-html action=method=postinput type=submit value=保存/input type=submit value=打印/html由于在form中的多个提交按钮都向一个action提交,使用Struts2 Action的execute方法就无法判断用户点击了哪一个提交按钮。如果大家使用过Struts1.x就会知道在Struts1.2.9之前的版本需要使用一个LookupDispatchAction动作来处理含有多个submit的form.但使用LookupDispatchAction动作需要访

    19、问属性文件,还需要映射,比较麻烦。从Struts1.2.9开始,加入了一个EventDispatchAction动作。这个类可以通过java反射来调用通过request参数指定的动作(实际上只是判断某个请求参数是不存在,如果存在,就调用在action类中和这个参数同名的方法)。使用EventDispatchAction必须将submit的name属性指定不同的值以区分每个submit.而在Struts2中将更容易实现这个功能。当然,我们也可以模拟EventDispatchAction的方法通过request获得和处理参数信息。但这样比较麻烦。在Struts2中提供了另外一种方法,使得无需要配置

    20、可以在同一个action类中执行不同的方法(默认执行的是execute方法)。使用这种方式也需要通过请求参来来指定要执行的动作。请求参数名的格式为action!method.action注:由于Struts2只需要参数名,因此,参数值是什么都可以。下面我就给出一个实例程序来演示如何处理有多个submit的form:【第1步】实现主页面(more_submit.jsp)%page language=java import=java.util.* pageEncoding=GBK%taglib prefix=s uri=/struts-tags%htmlhead titleMyJSPhello.j

    21、spstartingpage/title/head body s:form action=submit.action s:textfield name=msg label=输入内容/ s:submit name=save value=保存 align=left method=save/ s:submit name=printvalue=打印 align=left method=print/ /s:form /body/html在more_submit.jsp中有两个submit:保存和打印。其中分别通过method属性指定了要调用的方法:save和print.因此,在Action类中必须要有s

    22、ave和print方法。【第2步】实现Action类(MoreSubmitAction)package action;import javax.servlet.http.*;import com.opensymphony.xwork2.ActionSupport;import org.apache.struts2.interceptor.*;public class MoreSubmitAction extends ActionSupport implements ServletRequestAwareprivate String msg;private javax.servlet.http.

    23、HttpServletRequestrequest;/获得HttpServletRequest对象public void setServletRequest(HttpServletRequestrequest)this.request=request;/处理savesubmit按钮的动作public Stringsave() throws Exceptionrequest.setAttribute(result,成功保存+msg+);returnsave;/处理printsubmit按钮的动作public String print() throws Exceptionrequest.setAt

    24、tribute(result,成功打印+msg+);returnprint;public String getMsg()return msg;public void setMsg(Stringmsg)this.msg=msg;上面的代码需要注意如下两点:save和print方法必须存在,否则会抛出java.lang.NoSuchMethodException异常。Struts2 Action动作中的方法和Struts1.x Action的execute不同,只使用Struts2 Action动作的execute方法无法访问request对象,因此,Struts2 Action类需要实现一个St

    25、ruts2自带的拦截器来获得request对象,拦截器如下:org.apache.struts2.interceptor. ServletRequestAware【第3步】配置Struts2 Actionstruts.xml的代码如下:?xmlversion=1.0encoding=UTF-8?!DOCTYPEstrutsPUBLIC-/ApacheSoftwareFoundation/DTDStrutsConfiguration2.0/ENhttp:/struts.apache.org/dtds/struts-2.0.dtdstrutspackage name=demoextends=str

    26、uts-defaultaction name=submitclass=action.MoreSubmitActionresult name=save/result.jsp/resultresult name=print/result.jsp/result/action/package/struts【第4步】编写结果页(result.jsp)%page pageEncoding=GBK%htmlhead title提交结果/title/headbody h1$result/h1/body/html在result.jsp中将在save和print方法中写到request属性中的执行结果信息取出来,

    27、并输出到客户端。-教程3:struts.xml常用配置解析使用include标签重用配置文件在Struts2中提供了一个默认的struts.xml文件,但如果package、action、interceptors等配置比较多时,都放到一个struts.xml文件不太容易维护。因此,就需要将struts.xml文件分成多个配置文件,然后在struts.xml文件中使用include标签引用这些配置文件。这样做的优点如下:结构更清晰,更容易维护配置信息。配置文件可以复用。如果在多个Web程序中都使用类似或相同的配置文件,那么可以使用include标签来引用这些配置文件,这样可以减少工作量。假设有一

    28、个配置文件,文件名为newstruts.xml,代码如下:?xmlversion=1.0encoding=UTF-8?!DOCTYPEstrutsPUBLIC-/ApacheSoftwareFoundation/DTDStrutsConfiguration2.0/ENhttp:/struts.apache.org/dtds/struts-2.0.dtdstrutspackage name=demo extends=struts-defaultaction name=submitclass=action.MoreSubmitActionresult name=save/result.jsp/resultresult name=print/result.jsp/result/action/package/struts则struts.xml引用newstruts.xml文件的代码如下:?xmlversion=1.0encoding=UTF-8?!DOCTYPEstrutsPUBLIC-/ApacheSoftwareFoundation/DTDStrutsConfigurat


    注意事项

    本文(struts2入门实例教程详解.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开