• Struts2_学习笔记(二)--------Namespace、Action、Path、


    Struts2学习笔记(二)--------Namespace、Action、Path、ActionMethodDMI、ActionWildcard

    一、Namespace(参考Struts20200Namespace)

    • namespace决定了action的访问路径,默认为"",可以接收所有路径的action
    • namespace可以写为/,或者/xxx,或者/xxx/yyy,对应的action访问路径为/index.action, /xxx/index.action,或者/xxx/yyy/index.action.
    • namespace最好也用模块来进行命名

    二、Action(参考Struts20300Action)

    • 具体视图的返回可以由用户自己定义的Action来决定
    • 具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容
    • 具体Action的实现可以是一个普通的java类,里面有public String execute()方法即可
    • 或者实现Action接口
    • 不过最常用的是从ActionSupport继承,好处在于可以直接使用Struts2封装好的方法

    三、Path(参考Struts20400Path)

    • struts2中的路径问题是根据action的路径而不是jsp路径来确定,所以尽量不要使用相对路径。虽然可以用redirect方式解决,但redirect方式并非必要。
    • 解决办法非常简单,统一使用绝对路径。(在jsp中用request.getContextRoot方式来拿到webapp的路径)
    • 或者使用myeclipse经常用的,指定basePath
    • 即:String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"
    • 并在<head>中加<basehref="<%=basePath%>"/>

    四、ActionMethodDMI(参考Struts20600ActionMethod)

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
    
    <struts>
        <constant name="struts.devMode" value="true" />
        <package name="user" extends="struts-default" namespace="/user">
            <action name="userAdd" class="com.bjsxt.struts2.user.action.UserAction" method="add">
                <result>/user_add_success.jsp</result>
            </action>
            
            <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
                <result>/user_add_success.jsp</result>
            </action>
        </package>
    </struts>
    
    

    使用第二种的方法进行动态调用 即:

    <a href="<%=context%>/user/user!add">

    五、ActionWildcard通配符(参考Struts20600ActionWildcard)

    • 代表第一个’’,使用通配符可以使配置量降到最低,如果约定的好,配置将会特别简单。
    • struts.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd">
    
    <struts>
        <constant name="struts.devMode" value="true" />
        <package name="actions" extends="struts-default" namespace="/actions">
            <action name="Student*" class="com.bjsxt.struts2.action.StudentAction" method="{1}">
                <result>/Student{1}_success.jsp</result>
            </action>
            
            <action name="*_*" class="com.bjsxt.struts2.action.{1}Action" method="{2}">
                <result>/{1}_{2}_success.jsp</result>
                <!-- {0}_success.jsp -->
            </action>
        </package>
    </struts>
    
    

    如果一个请求能匹配多个action,优先进行精确匹配。如果对于多个有通配符的action,优先匹配最上面的action

    六、复制项目是注意事项

    复制项目时,要修改propertiesMyEclipsewebWeb Context-root

  • 相关阅读:
    Python3 WebDriver操作cookie的方法
    Windows创建定时任务执行Python脚本
    Python3 自定义请求头消息headers
    为什么SQL用UPDATE语句更新时更新行数会多3行有触发器有触发器有触发器有触发器有触发器有触发器
    【C#】C#获取文件夹下的所有文件
    jQuery.ajax()调用asp.net后台方法(非常重要)
    Asp.Net+JQuery.Ajax之$.post
    c# post 接收传来的文件
    C#使用GET、POST请求获取结果,这里以一个简单的用户登陆为例。
    javascript中let和var的区别
  • 原文地址:https://www.cnblogs.com/xulimessage/p/5001076.html
Copyright © 2020-2023  润新知