zoukankan      html  css  js  c++  java
  • Struts2.0

    流程详解:
     

    配置详解:

     
    constant  (常用常量配置)
    使用Struts2 框架 ,先要导入Struts2 需要的jar 包 , 通过配置中央控制器 以及web.xml 来实现 
    Struts.xml
    <struts>
         <package name="login" namespace="/" extends="struts-default">
               <action name="go" class="com.woniuxy.Struts2.LoginAction">
                    <result name="succ">jsp/success.jsp</result>
                    <result name="fails">jsp/fails.jsp</result>
               </action>
         </package>
    </struts>   
    web.xml 配置
     <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    
     
    用户登录
    1  处理请求
     ----> 编写action 
            1,继承actionsupport类 -----> 推荐使用
            2 , 实现action 接口
            3,  普通的类
    2  获取用户提交的数据
          1 领域对象
          2 action 的属性
          3 实现modeldriven 接口
    3  验证 
      成功 
      失败

    如何在action 中接受用户输入

    1  在Struts2.0 中有以下几种方式可以获得用户输入的信息,     采用的都是IOC 方式。 具体如下;
       一 :   使用action 类的属性来接受用户输入,
      二 ; 使用领域对象接受用户输入
     三; 使用modeldriven 的方式接受用户输入 -----> 推荐使用

    使用action类的属性接受用户输入

     一  : 在Struts2 中 可以直接使用action的属性来接受用户输入的输入, 比如在登录中 就采用这种, 有几个注意方面
       1  在action 类或只能怪技工对应的属性及get,set方法
      2  在页面表单中将表单元素的name属性 与action中的属性名称一样
     
    二: 在action类中使用POJO 类接收用户输入参数。 (领域对象)
     
    在Struts1中  通过使用actonform 类接受用户输入的数据,为了避免业务逻辑层依赖于Struts框架, 我们需要提供一个对应的领域对象( POJO)  然后 在actionform 和领域对象之间进行数据复制,这使程序中的javabean 对象泛滥, 在Struts2 中直接支持使用领域对象来接收用户数据,
    public class LoginAction implements Action{
    private User user;
    public String execute() throws Exception {
      // 业务处理
    }
    set/get。。
    }

     Struts2 访问Servlet API 对象

    如何访问request,session, application 等
       如果要却得servlet api 中的一些对象,如request ,response或session 等 , 怎么做?
    1   非IOC 方式 , 
      要获取上述 对象 ,通过使用com.opensymphony.xwork2.ActionContext类
    2  , IOC 方式
    首先告诉IOC 容器(Container)想取得某个对象的意图,试过实现相应的接口。
     
    与Servlet API 解耦的访问方式, 
     非 IOC 访问方式
    为了避免与Servlet API 耦合在一起, 方便Action 类做单元测试,Struts2 对HTTPservletrequest,httpsession, 和servletcontext 进行了封装,构造了三个map 对象来替代这三种对象,在Action 中,直接使用HTTPservletrequest,HTTPsession,servletContext 对象的map 对象来保存和读取数据,要获取这三个对象, 可以使用com.opensymphony.xwork2.ActionContext类 
     
     
     
         //1 IOC 的解耦方式获取servlet api
                    ActionContext actionContext = ActionContext.getContext();
                    //1 获取session
                    Map<String,Object>session = actionContext.getSession();
                    // 添加数据
                    session.put("s1", "这是session");
                    //2 获取application
                    Map<String, Object>application = actionContext.getApplication();
                    //添加数据
                    application.put("a1", "这是application");
                    // 3 request
                    actionContext.put("r1", "这是request");
            //在jsp 页面 通过EL 表达式获取域的内容
                    // ${requestScop.r1}  ${sessionScop.s1} ${applicatonScop.a1}
     
     
    IOC 方式: 
    除了利用AcionContext来获取request,session,application对象这种方式外,还可以采用在action类中实现某些特定的接口的方式,让Struts2框架在运行时想Action实例注入request,session,application 对象,与之有关的三个接口和方法如下所示;
     
     
    与servlet  api耦合的访问方式
     非IOC 方式
     前面采用MAP 对象来封装Servlet API 。 如果要想在action类中直接使用HTTPservletrequest ,HTTPservletresponse,servletContext对象, 可以使用 org.apache.struts2,servletactionContext 类,该类是ActionContex的子类,在这个类中定义了两个静态方法
     
     
    IOC 方式: 
    除了利用ServletActionContext来获取   HttpServletRequest对象和ServletContext对象这种方式外,Action类还可以实现ServletRequestAware和ServletContextAware接口,由Struts2 框架向Action 实例注入HttpServletRequest和ServletContext对象。    
     
     
  • 相关阅读:
    RabbitMQ 消息可靠性
    SpringBoot2.X+SpringAMQP 整合 RabbitMQ
    《红宝书》 |Array数组介绍及用法
    《红宝书》 |单例内置对象 |Global和Math
    js封装 |随机获取指定范围内的整数
    《红宝书》 |原始包装类型
    《红宝书》 |什么是对象
    js封装 |时间对象相关方法
    兼容 |ios移动端的时间对象
    《红宝书》 |基本引用类型-正则表达式RegExp
  • 原文地址:https://www.cnblogs.com/thelovelybugfly/p/10859661.html
Copyright © 2011-2022 走看看