zoukankan      html  css  js  c++  java
  • struts2配置

    一、action有几种开发方式?

      (1)继承ActionSupport。如果用struts处理数据校验,必须继承此类。一般采用这种方式。

      (2)实现Action接口。

      (3)不继承任何类,不实现任何接口。

    二、通配符(优化action配置)

    <action name="user_*" class="#" method="{1}">
        <result name="{1}">/{1}.jsp</result>
    </action>

      当字符串为user_login,则调用login.jsp。当字符串为user_register,则调用register.jsp。

    注意:加入命名空间后,访问路径需要加上命名空间。

    三、struts中的路径匹配原则

    <action name="user_*" namespace="/user" class="#" method="{1}">
        <result name="{1}">/{1}.jsp</result>
    </action>

    路径:http://localhost:8080/mystruts/user/a/b/user_login

      Tomcat解析路径:

        (1)localhost  访问哪一台机器

        (2)8080    访问这台机器的哪个端口,也就是根据此端口找到Tomcat

        (3)mystruts  项目名

        (4)看是否有这个名称空间  /user/a/b  否

        (5)看是否有这个名称空间  /user/a   否 

        (6)看是否有这个名称空间  /user      是,如果否的话,就去匹配默认的/,还没找到就会报错。

        (7)然后去/user下找user_login。

    所以,当路径不对的时候,(在名称空间后加路径,是可以找到资源的),可以正确访问。  

    四、struts常量

     (1)修改访问的默认后缀名(默认的.action)

      struts.xml文件中。此代码既可以没有后缀访问,也可以.action访问。

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

    (2)只能action访问

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

    (3)既可以.action访问,也能.do,也能省略。

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

    五、struts中数据处理几种方式

    (1)

    //方式1
            HttpServletRequest request =        ServletActionContext.getRequest();//ctrl+2+l
            HttpSession session = request.getSession();
            ServletContext application = ServletActionContext.getServletContext();
            //操作
            request.setAttribute("request_data","request");
            session.setAttribute("session_data", "session");
            application.setAttribute("application_data","application");    

    (2)后面两个比较常用(2)(3)。

         ActionContext context = ActionContext.getContext();
            Map<String, Object> request = context.getContextMap();
            Map<String, Object> session = context.getSession();
            Map<String, Object> application = context.getApplication();
            
            request.put("request_data","request");
            session.put("session_data", "session");
            application.put("application_data","application");

    (3)实现requestAware/sessionAware/ApplicationAware。优化的项目的时候用。

    public class DataAction extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{
        private Map<String, Object> request;
        private Map<String, Object> session;
        private Map<String, Object> application;
        @Override
        public String execute() throws Exception {
        
            //操作
            request.put("request_data","request_data_Aware");
            session.put("session_data", "session_data_Aware");
            application.put("application_data","application_data_Aware");
            //方式2
    
            return SUCCESS;
        }
    
        @Override
        public void setApplication(Map<String, Object> application) {
            this.application = application;
        }
    
        @Override
        public void setSession(Map<String, Object> session) {
            this.session = session;
        }
    
        @Override
        public void setRequest(Map<String, Object> request) {
            this.request = request;
        }
    }

    在jsp界面获取:

    ${request_data}
    ${session_data}
    ${application_data}

    遇到的错误:
    There is no Action mapped for namespace [/] and action name [Login] associated with context path [/eprint]

    做如下检查:

    
    

    1、确保struts.xml文件名大小写正确:struts.xml

    
    

    2、确保struts.xml文件在src目录下(很重要!后面就着重说这个)

  • 相关阅读:
    You need to use a Theme.AppCompat theme
    Objective-C中nil与release的区别与用法
    objective-c中自己创建的对象为什么不能调用release
    NSString类的相关用法
    [Bug-IOS]
    中国有什么旅游社交网站吗?
    om.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException
    【剑指Offer学习】【面试题22:栈的压入、弹出序列】
    2-08. 用扑克牌计算24点(25) (ZJU_PAT 数学 枚举)
    在北京工作了两年,如今跳槽到了广州,社保公积金该怎样办理?
  • 原文地址:https://www.cnblogs.com/h-g-f-s123/p/6350062.html
Copyright © 2011-2022 走看看