zoukankan      html  css  js  c++  java
  • struts(一)

    一 strucs是实现了基于JavaEEWeb应用的MVC设计模式的应用框架;
      MVC这个词必须好好解释一下

      M:model(模型)   V: view(视图)  C: Controller(控制器)
    特点:
    功能:获取参数
    调用Model处理
    响应内容到客户端

    以下是一个关于struts2的xml文件详解
    <struts>
    <!-- 是否支持动态方法调用 -->
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <!-- 卡发模式:true表示卡发阶段 -->
    <constant name="struts.devMode" value="true" />

    <!-- 包:
    name="default" 包名
    namespace="/" 访问路径 这"/"表示现对路径
    extends="struts-default" 继承自struts-default

    -->
    <package name="default" namespace="/" extends="struts-default">
    <!-- 配置控制器,在没有配置class属性的时候,当前这个hello这个action是有struts提供的默认的
    控制器,它只有一个方法execute(),返回"success;
    -->
    <action name="index">
    <result name="success">/hello.jsp</result>
    </action>

    <action name="first" class="com.yc.web.action.FirstAction">
    <result name="hello">/hello.jsp</result>
    <result name="bye">/bye.jsp</result>
    </action>
    </package>
    </struts>


    二 对于struts的返回值(Action的创建)
    (1)自己自定义返回值
    (2)实现Action接口
    如 Action.SUCCESS;Action.NONE
    在struts.xml可以直接用success 或 none 来接收
    (3)继承ActionSupport (ActionSupport实现Action接口)
    如 Action.SUCCESS;Action.NONE
    在struts.xml可以直接用success 或 none 来接收

    三 对于struts的三种传参方式
    强调:生命周期: 构造方法-》setXXX()/getXXX()方法 -> execute()方法
    (1)以参数的形式传参
    传的部分:
    <input type=“xx" name="参数名">
    接的部分
    在Action中直接提供参数的set方法

    (2)以对象的形式进行传参
    传的部分:
    <input type=“xx" name="对象名.参数名">
    接的部分
    a.创建这个接收参数的注入类
    b.在Action中定义这个类属性,并提供get和set两个方法

    (3) 以struts提供的ModelDriven进行传参
    传的部分:
    <input type="xx" name="参数名">
    接的部分:
    class XXXAction implements ModelDriven{
    public Object getModel(){
    return 对象名;
    }
    }

    四 struts的作用域(对象的操作)
    1 使用RequestAware,SessionAware,ApplicationAware接口,来注入三个Map
    2 通过ServletActionContext取HttpServletRequest对象

    还有就是以map的形式去表示上面的两种方式

    eg:

    //获取标准的j2ee作用域对象
    private Map<String,Object> request;
    private Map<String,Object> application;
    private Map<String,Object> session;

    public StudentAction(){
    request=(Map<String,Object>)ActionContext.getContext().get("request");
    session=ActionContext.getContext().getSession();
    application=ActionContext.getContext().getApplication();
    }

    public String execute(){
    //将这个学生保存到request,session,application
    request.put("student",student);
    session.put("student", student);
    application.put("student", student);

    return Action.SUCCESS;

    }


    通过ServletRequestAware接口,来注入HttpServletRequest对象接口

    eg:
    request=ServletActionContext.getRequest();
    response=ServletActionContext.getResponse();

    session=request.getSession();
    application=session.getServletContext();

    五 通配符的表示

      eg:

      <action name="student_*" class="com.yc.web.actions.StudentAction" method="{1}"></action>

      *表示0个或多个,有点类似于正则表达式

      


    总结:struts 是多实例的,会每次都创建一次,所以类似DBhelp的属性设为全局就没问题
    而Servlet的创建是单实例的

  • 相关阅读:
    UML类图学习总结
    Java和C# RSA加解密相互通信和使用公钥加密传输
    C#des加密算法指定键的大小对于此算法无效
    WCF--找不到具有绑定 BasicHttpBinding 的终结点的与方案 https 匹配的基址。注册的基址方案是 [http]。
    IIS7 使用server farms 进行负载均衡
    iis7 未注册framework4 导致 莫名的404错误
    启用代理导致 有道云笔记未知错误、网络错误和OneDrive断线
    AspNetCore发布到Centos7
    c# 操作临时数据---XML操作
    c# 获取程序目录
  • 原文地址:https://www.cnblogs.com/yaobolove/p/4984897.html
Copyright © 2011-2022 走看看