zoukankan      html  css  js  c++  java
  • Struts2笔记2—基础知识1

    1、struts.xml中的package有个属性namespace,如下:

    <package name="default" namespace="/" extends="struts-default">
            <action name="hello">
                <result>
                   /Hello.jsp
                </result>
            </action>
        </package>
        
         <package name="front" namespace="/front" extends="struts-default">
            <action name="index">
                <result>
                   /Index.jsp
                </result>
            </action>
        </package>

    上述两个aciotn的url分别为:

    http://localhost:8080/StrutsDemo/hello

    http://localhost:8080/StrutsDemo/front/index

    由此可以看出,namespace是项目名称以及action之间的一段,用于对action进行分模块的。

    注意:若namespace="",即等于空,则url这一段可以随意定义,只要出现action名称即会被响应。

    2、关于Action,在Struts.xml中可以用class来定义响应的类:

    <package name="front" extends="struts-default" namespace="/">
            <action name="index" class="com.zsp.action.IndexAction">
                <result name="success">/Index.jsp</result>
               <result name="error">/Error.jsp</result>
            </action>
        </package>

    其中IndexAction有3种实现方法:

    <1>直接定义Java类,不需要继承接口和类,编写execute方法即可(不推荐)

    public class IndexAction {
        public String execute() {
            return "success";
        }
    }

    <2>继承Action接口,重写execute()方法(不推荐)

    import com.opensymphony.xwork2.Action;
    
    public class IndexAction implements Action {
        @Override
        public String execute() {
            return "success";
        }
    }

    <3>继承ActionSupport类,重写execute()方法:

    import com.opensymphony.xwork2.ActionSupport;
    
    public class IndexAction extends ActionSupport {
        @Override
        public String execute() {
            return SUCCESS;
        }
    }

    ActionSupport继承Action接口,Action中定义了一些常量作为返回值:

    public static final String SUCCESS = "success";
    public static final String NONE = "none";
    public static final String ERROR = "error";
    public static final String INPUT = "input";
    public static final String LOGIN = "login";

    Struts会根据不同的返回值指向不同的jsp页面,也可以自定义返回值。

    3、路径问题,在开发中应该使用绝对路径,避免使用相对路径,可以在JSP页面如下定义:

    <%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
    %>
    
    <head>
    <base href="<%=basePath%>">
    </head>

    这样页面内的url就会自动在拼接到basePath之后。

    4、Struts的动态调用(DMI)

    在Struts.xml中,可以定义该Action执行的是哪个方法,而不一定非得是execute(),如下:

    <action name="userAdd" class="com.zsp.action.UserAction" method="add">
                <result>/user_add_success.jsp</result>
            </action>

    但如果类似的比较多,那么xml中就要定义很多的Action,所以这不是比较好的方法,可以在url中如此输入:

    http://localhost:8080/StrutsDemo/user!add

    使用感叹号,意味着该Action要执行add()方法,此时Struts.xml配置如下:

    <action name="user" class="com.zsp.action.UserAction">
                <result>/user_add_success.jsp</result>
            </action>
  • 相关阅读:
    MVC中生成PDF并在web中显示
    Excel中如何避免删除未筛选得数据
    double数据类型四舍五入的bug
    Oracle 计算两个日期间时间排除非工作日及非工作时间精确至分钟
    数据库日志文件收缩
    Repeater 数据绑定 分页
    文件迁移 得到文件夹下所有文件名称
    共享业务稳定性测试&技术创新组
    产品测试组和业务测试组
    初级Bug率,随时受不了
  • 原文地址:https://www.cnblogs.com/zsp0817/p/3523339.html
Copyright © 2011-2022 走看看