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

  • 相关阅读:
    Appium问题解决方案(2)- AttributeError:module 'appium.webdriver' has no attribute 'Remote'
    Azure Messaging-ServiceBus Messaging消息队列技术系列8-服务总线配额
    Azure Messaging-ServiceBus Messaging消息队列技术系列7-消息事务
    Azure Messaging-ServiceBus Messaging消息队列技术系列6-消息回执
    Azure Messaging-ServiceBus Messaging消息队列技术系列5-重复消息:at-least-once at-most-once
    Azure Messaging-ServiceBus Messaging消息队列技术系列4-复杂对象消息是否需要支持序列化和消息持久化
    Azure Messaging-ServiceBus Messaging消息队列技术系列3-消息顺序保证
    [博客迁移]探索Windows Azure 监控和自动伸缩系列3
    [博客迁移]探索Windows Azure 监控和自动伸缩系列2
    [博客迁移]探索Windows Azure 监控和自动伸缩系列1
  • 原文地址:https://www.cnblogs.com/h-g-f-s123/p/6350062.html
Copyright © 2011-2022 走看看