Struts, Namespace用法

    添加时间:2013-8-1 点击量:

    比来在用SSH框架做一个项目,在应用Struts 的namespace时碰到不少题目,如今就对struts namespace 做一个简单的介绍吧.(本文从项目布局展开论述)


    (第1次写博客, 写的不好,请见谅,望大师多提名贵定见~)


     1.  新建一个项目工作叫做eczone,  WebRoot的文件目次布局如下


        



    • 此中index.jsp是用来做迎接界面的(见web.xml的<welcome-file>设备)

    • /WEB-INF/web.xml (这个大师都懂,具体设备请baidu / google)

    • /WEB-INF/pages/failure.jsp (登录失败的跳转页面)

    • /WEB-INF/pages/success.jsp (登录成功的跳转页面)


    2.  在web.xml中,迎接页面的设备如下:



     <display-name>Eczone</display-name>
    
    <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    若是,index.jsp在/WebRoot/pages/下面,  上方的设备则须要批改为: /pages/index.jsp



    3.  接见体式格式:  http://localhost:8080/eczone/    


        此中eczone为项目名称,也就是公布到tomcat的webapp下面的项目名。 (到如今似乎还没进来主题,别急让我们持续往下看-----》》)


    4.   URL的构成布局如下:(以下为最简单的用户登录后的url)


        


    (关于.action,什么时辰须要指定,什么时辰不须要,将在后面申明)


    5.   先看Struts.xml的设备



     1 <struts>
    
    2 <constant name=struts.devMode value=true></constant>
    3 <!--Spring plus 经由过程overriding struts objectFactory 来加强框架核心对象的创建 -->
    4 <constant name=struts.objectFactory
    5 value=org.apache.struts2.spring.StrutsSpringObjectFactory />
    6 <package name=mypkg2 extends=struts-default>
    7 <action name=userLogin class=com.dragon.eczone.action.user.UserAction method=login>
    8 <result name=success>/pages/success2.jsp</result>
    9 <result name=failure>/pages/failure.jsp</result>
    10 </action>
    11 </package>
    12 <package name=mypkg1 namespace=/ extends=struts-default>
    13 <action name=userLogin class=com.dragon.eczone.action.user.UserAction method=login>
    14 <result name=success>/pages/success1.jsp</result>
    15 <result name=failure>/pages/failure.jsp</result>
    16 </action>
    17 </package>
    18 <package name=user namespace=/user extends=struts-default>
    19 <action name=userLogin class=com.dragon.eczone.action.user.UserAction method=login>
    20 <result name=success>/pages/success.jsp</result>
    21 <result name=failure>/pages/failure.jsp</result>
    22 </action>
    23 </package>
    24 </struts>


     申明: 1.  success1.jsp, success2.jsp可以参加到/pages/ 目次下进行测试,到底恳求了那个action. (在success.jsp, success1.jsp, success2.jsp上浮现不合内容来差别)


              2.  Struts在处理惩罚恳求时,若是恳求指定了namespace , struts 会按照指定的namespace去查找action;


                                              若是恳求没有指定namespace, Struts则从默认namespace的根目次去查找acton


              3.  在 Struts.xml中namespace=/ 为默认的根目次, 若是不指定namespace的值则也等同于namespace=/.


    6. 在看index.jsp的 代码



    <s:form name=loginForm action=userLogin  method=POST  namespace=/user>
    
    <s:textfield name=userName label=Login name />
    <s:password name=passWord label=Password />
    <s:submit value=Login align=center />
    </s:form>


      申明:1. namespace 若是不指定, 默认为 namespace=/ 更目次


              2.  action为Struts.xml中定义的action的名称.


              3. 有的处所会指定action为以下值:


                  》    /user/userLogin 这种体式格式,页面可以跳转成功, 然则把握台会抛异常或警告 :


        No configuration found for the specified action: /user/userLogin in namespace: /user. Form action defaulting to action attributes literal value.


                 》   /user/userLogin.action  这种体式格式页面能跳转成功,呈现如下警告:                      



    No configuration found for the specified action: /user/userLogin.action in namespace: /user. Form action defaulting to action attributes literal value.


         4.  最后来说.action的工作 , <s:form>应用的是Struts标签,会主动添加.action,  若是是ajax等本身拼装URL的时辰,必须加上.action.





      




















    我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》
    分享到: