• 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目录下(很重要!后面就着重说这个)

  • 相关阅读:
    CFS 调度器
    RCU
    linux cfs 负载均衡
    wait_event_interruptible_timeout
    算法(13)Contiguous Array
    算法(12)Pascal's Triangle II
    算法(12)Best Time to Buy and Sell Stock II
    算法(11)Find All Duplicates in an Array
    算法(10)Subarray Sum Equals K
    算法(9)Find the Duplicate Number
  • 原文地址:https://www.cnblogs.com/h-g-f-s123/p/6350062.html
Copyright © 2020-2023  润新知