欢迎光临
一个废柴的博客

Struts2教程及简单示例Demo

一、什么是Struts?

Struts是基于MVC的轻量级框架。

下面对这句话作出解释

————基于MVC:实现了MVC

————轻量级:相对于重量级框架(EJB)而言,Struts是轻量级的,量级与侵入性成正比。

————框架:代码的主体结构,能够为我们提供最基础的代码,可以减少我们的代码量。

二、为什么要使用Struts?

从Jsp的发展过程来看,jsp经历了model1、model2两个阶段的发展,而且每个阶段都有一些不足,model1中jsp充当控制器和业务视图展示的作用,导致jsp中的代码很复杂,难以维护;model2有了一定的改进,jsp单独负责业务展示功能,servlet充当控制器的左右,虽然层次明显了,但是控制层的实现需要写大量的代码,实现较复杂,维护起来也有一定的难度。

从struts的优点来看,strtus是基于MVC实现的轻量级框架,因为实现了MVC,所以它具有MVC的一些优点,比如层次分明、高可重用性,struts在健壮性、易用性、扩展性、侵入性等方面都有良好表现,更重要的是它提供了一个非常好的控制器和一套好用的标签库,也就是说它在控制层和视图层表现都很出色;其次,它是一个开源项目,而且可以和其他的技术框架能够很好的融合。

三、Struts2和struts1的区别和联系?

Struts2和struts1的区别很大,不能简单理解为struts1的升级版,struts2是以xwork为核心,可以理解为webwork的升级版。

四、Struts2工作流程

struts2的工作流程如下:

  • 客户端浏览器发出HTTP请求;
  • 根据web.xml配置,该请求被FilterDispatcher接收;
  • 根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton;
  • Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证;
  • Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面;
    返回HTTP响应到客户端浏览器。

五、如何使用Struts2?

1.使用struts2的步骤:

①创建一个Web Project工程;
②导入Struts2的核心包[struts2-jar];
③配置前端控制器:struts2提供了默认的前端控制器,简单配置即可使用,struts2使用filter充当前端控制器,控制器组件为org.apache.struts2.dispatcher. ng.filter.StrutsPrepareAndExecuteFilter
④配置前端控制器所依赖的配置文件struts.xml

2.示例Demo

创建工程和导包不再赘述,上述步骤中的配置前端控制器是在web.xml文件中配置的,具体的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <!--配置前端 控制器,从而通过struts2来处理所有请求  -->
 <filter>
    <filter-name>Struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>  

<filter-mapping>
    <filter-name>Struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

前端控制器所依赖的配置文件配置struts.xml如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>

    <!-- 
        1、name指定包名,包与包之间的名称不能重复;
        2、namespace包命名空间,用于拼我们访问包的
            路径的,即URL。
            不要忘记/线
        3、extends指定包的继承关系的,这样我们可以
            方便的使用Struts2提供的默认配置。
     -->
    <package name="demo" 
        namespace="/hello" 
        extends="struts-default">
        <!-- 
            1、action是我们自己要写的业务组件,
                用于封装业务逻辑代码。
            2、name是指定action的名称的,
                该名称会用于我们访问action。
                同一包下可以有多个action,
                action名不能重复。
            3、class指定该action对应的业务组件,
                即我们自己定义的业务代码类。
            4、method指定要访问的方法名。
                这个method可以省略,若省略
                则默认调用execute方法。
            5、要访问当前的Action,其URL如下:
            http://localhost:8080/struts2demo/hello/hello.action
            http://ip:port/project_name/package_namespace/action_name.action
            注意:action名称的后缀.action可以省略的
         -->
        <action name="hello" 
            class="demo.HelloAction" 
            method="sayHello">
            <!-- 
                1、用result指定action处理完请求之后,
                    要去向的页面。
                2、name指定result的名称,
                    用于访问该result,
                    同一个action下可以有多个result,
                    他们之间不能重名。
             -->
            <result name="success">
                /WEB-INF/jsp/helloStruts.jsp
            </result>
            <result name="error">
                /WEB-INF/jsp/error.jsp
            </result>
        </action>
    </package>

</struts>

3.示例Demo完整代码打包

Struts2示例demo完整代码下载地址:[点击进行下载]

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址