struts2工作原理及创建步骤

Strust2 :

    创建步骤: 1.导包

    struts2-core-2.1.8.1.jar :Struts 2框架的核心类库

    xwork-core-2.1.6.jar :XWork类库,Struts 2在其上构建

    ognl-2.7.3.jar :对象图导航语言(Object Graph Navigation Language), struts2框架通过其读写对象的属性

    freemarker-2.3.15.jar :Struts 2的UI标签的模板使用FreeMarker编写

    commons-logging-1.1.x.jar :ASF出品的日志包,Struts 2框架使用这个日志包来支持Log4J和JDK 1.4+的日志记录。

    commons-fileupload-1.2.1.jar 文件上传组件,2.1.6版本后需要加入此文件

    commons-io-1.3.2.jar,上传文件依赖的jar包

   

  2.配置web.xml文件.

    即: <!-- 配置过滤器 -->

    <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>

 

1.     配置struts.xm文件放在src目录下:通过struts.xm文件通知struts框架的进行业务处理.

同web.xml文件通知web服务器.

即: <!-- 声明唯一的包名,主要用户装配aciton -->

    <struts>       

<package name="default"/> <!—包名-->

        <action name=" HelloWorldAction" class="cn.web.itcast. HelloWorldAction " method="helloMethod" /> <!—加载时所需的类的名称及类所在的路径-->

</struts>

2.     部署web服务器,通知浏览器访问.

部署web应用时, StrutsPrepareAndExecuteFilter类就已经被实例化,相关的文件也加载形成javaBean对象

Struts-default.xml(框架),struts.xml,每次部署web应用时,都会加载最新的xml到内存中的javaBean对象中,javaBean主要封装的是配置strust.xml文件中的属性如(<action>标签中的name,method,class属性).

访问方式: /Package中的namespace属性值/actionname属性  

 

 5,如果项目中,你要使用框架默认的Action,

    struts2的默认action是ActionSupport类,如果要用它,必须继承struts2的"struts-default"

即:需要继承struts-default.此时调用的是struts-default包中默认的excecut()方法,通过success.jsp页面回显示信息. 此时需要配置<result>,并指明属性name=”execute()的返回字符串”,访问路径

需要在struts.xml文件中配置如下信息:

<package name = “default” extends="struts-default">

         <action name=” HelloWorldAction(类名)”/>

            <result name="success(方法名)" type="dispatcher(跳转页面方式)">

               /WEB-INF/success.jsp(访问路径)

           </result>

    </package>

此时可以直接访问: http://127.0.0.1:8080/day32/HelloWorldAction

 

6.转发:struts.xml文件中配置如下代码:

<struts><!-- 声明唯一的包名,主要用户装配aciton  namespace为包名的命名空间-->

    <package name="default" namespace="/" extends="struts-default">

        <default-action-ref name="HelloWorldAction"/><!—错误utl处理路径-->

<action name=" HelloWorldAction" >

           <result name="success(转发的文件名)" type="dispatcher(跳转页面的方式)">

               /WEB-INF/success.jsp(转发的页面)

           </result>

       </action>

    </package>

</struts>

 

7.配置错误URL路径的处理方式:

    <default-action-ref name="HelloWorldAction"/>,类似于缺省Servlet

默认的url路径主要是在当访问的路径不存在是,通过默认的路劲找到默认的类,然后通过<result name=”success” type=”dispater”>标签中指定的路径名和路径访问seccess.jsp显示信息.

1).如果不配置method属性,默认是execute()方法,前提是在程序员自己定义的Action类中有excetue()方法如果没有该方法则会出错(404),是因为在访问时默认的类找不到方法. 如果定义的类中没有该方法execute()方法,则在<action>标签中一定要写属性method=”方法名” .

2) <result>标签中type属性可以不写,默认是转发dispater

3) <result>标签中不配置name属性,默认是success

 

8访问Action可以有扩展名,扩展名默认是.action(小写),也可以使用无扩展名的访问路径.

可以通过自己手动在struts.xml中配置标签的扩展名:如下

<constant name="struts.action.extension" value="action,qq,xx,,"/>

 可以在src/目录下,写一个名字struts.properties的必属性文件,去[覆盖]系统default.properties文件中的属性参数 , 属性文件配置: struts.action.extension=”action,aa,bb,,”

    strust.properties文件和default.properties文件内容突冲时,strtus.properties起决定作用

9项目中,可以使用strust.propertiesstruts.xml文件,配置扩展名等相关属性参数,struts.properties文件起决定作用

    程序员自定的文件,会覆盖框架的默认配置文件(default.properties) 

10. strust2框架中,可以通过总的struts.xml文件,加载各个模块的分xml文件,总的struts.xml文件有且必须放在src目录下,其它xml文件,放置任意类路径下,即src目录下。  

<struts>
    <include file="cn/web/struts/type/type-struts.xml"/>
 <include file="cn/web/struts/validate/user-validate.xml"/>
</struts> 

 11.struts2中的action采用非单例模式(原型模式),每次请求,都会产生一个实例。

 

 struts2数据格式验证

  1)类继承ActionSupport类,重写validate()方法或添加validateLoginMethod()方法

  2)struts.xml文件的某个<action/>标签中,配置input属性值,表示出错后,转在的页面

  3)在页面中通过如下二种方法将,错误消息按指定的格式输出

    >><s:fielderrors/>

>><s:form/><s:textfield/><s:password/>

Action:特有的标签校验表单提交的数据

    <s:form action="/RegisterAction" method="post">

        <s:textfield label="用户名" name="username"/>   

        <s:password label="密码" name="password"/>

        <s:submit value="注册"/>

 </s:form>

  4)validate()方法,是检证UserAction中所有的业务方法,即与execute()同样签名的方法,例如registerMethod()

  5)validateLoginMethod()方法,可以争对UserAction中的loginMethod()业务方法验证,其它方法不验证

  6)validate()validateLoginMethod()方法同时存在时,先执行validateLoginMethod()方法,再执行validate()方法,如果验证成功,到达值得的LoginMethod()方法的中的return “success” 返回文件名,过滤器根据该文件名查找显示信息的文件路径(:/WEB-INF/success.jsp),最终以标签<s: property value=”username”>获取显示信息,

  7)只有当validateLoginMethod()方法和validate()方法验证都成功了,才能执行UserAction的业务方法loginMethod()到达指定的页面显示结果,否则都会转发到struts.xml中的<result>标签的input属性所指明的页面

  :

<result name="input" type="dispatcher">

        /WEB-INF/success.jsp

</result>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

starsky20

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值