struts采用JavaServlet/JSP技术,实现了基于Java EEWeb应用的MVC设计模式的应用框架

今天我用Ecipse搭建Struts框架,并且使用Struts框架编写一个最简单的例子,相信读者能够很容易的明白。

Struts是当今Java比较流行的三大框架之一,三大框架是Struts,spring,hibernate。Struts框架也包括Struts1和Struts2,由于两个版本相差比较大,Struts1已经被淘汰,现在企业基本上全部都用Struts2,所以我当然也是用Struts2。

 

好,下面我详细的说明搭建过程

 

 

首先启动Eclipse J2EE版本(官方最近发布的版本),创建一个web项目Struts2
技术分享

 

 

引入我们下载的Struts2的目录下的Jar包,

具体目录如下

 

 

将这些Jar包导入到项目的lib目录下
技术分享

 

 

然后打开上层目录的web.xml配置文件
技术分享

 

 

将filter和filter-mapping两个标签对的内容copy到Struts2项目的web.xml
技术分享

 

 

然后,想下图(据图根路径看你Struts的位置)指定路径的struts.xml考到项目的src目录下
技术分享

 

 

 

如图
技术分享

 

 

 

打开strut.xml,将<struts>标签对中的全部内容删除或者注释,建议注释

然后从注释的部分copy一下内容到struts中

内容

<constant name="struts.devMode" value="false" /> 
 <package name="default" namespace="/" extends="struts-default">
        <default-action-ref name="index" />
        <action name="index">
            <result type="redirectAction">
                <param name="actionName">HelloWorld</param>
                <param name="namespace">/example</param>
            </result>
        </action>
    </package>

 

 

然后将第一句<constant name="struts.devMode" value="false" /> 
改为<constant name="struts.devMode" value="true" />

这句话主要是说,当我们项目的action的改变时,可以立刻响应改变,不需要重启服务器

 

结果为
技术分享

 

到此Strut2的配置已经完成,可以写例子了

 

 

 

 

 

我这里就写一个最简单的例子在网页上 打印 hello Struts2!

首先在项目的webContent目录下创建一个JSP文件index.jsp

并更改代码如下
技术分享

 

 

 

然后将项目中的struts.xml的代码更改为
技术分享

这段代码我等下再给大家介绍

 

 

ok,启动服务器,打开浏览器,输入网址http://localhost/Struts2/hello

结果为
技术分享

 

 

实验成功!!!

 

 

 

说明:

大家看到了,现在我们访问的地址是http://localhost/Struts2/hello,并不是直接访问http://localhost/Struts2/index.jsp

我把流程画一下
技术分享

 

当客户端访问时,服务器通过过滤器filter,然后根据action得到客户端访问的jsp页面,然后将jsp页面反馈给客户端。

无形当中把jsp和客户端分开,这样做有什么好处呢?直接访问jsp不更加简单吗,干么弄得这么复杂?

 

 

这根设计模式是一样的,复杂的东西背后带来的好处就是可拓展

大家不妨想想,如果是直接访问jsp,如果我们需要更改jsp中的内容(这是经常需要更改的部分),我个人认为除了暂时停止服务以外,然后更改代码,否则没有什么办法!但是这是很要命的!

 

但是我们如果引入的action这个中间层,因为客户端并没有和jsp有什么直接联系,所以只要action改变,即可立刻更换jsp,或者action不变,直接更换jsp文件,即可,不需要付出任何代价。

 

这就是struts的核心思想,与MVC思想非常类似。

 

好,我的发表到此结束。相信读者能够很轻易的体会这个思想。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。