zoukankan      html  css  js  c++  java
  • Struts中数据处理

    对数据操作的所有方法:(把数据保存到域中)
    方式1、直接获取ServletAPI(耦合)
    核心类:ServletActionContext 提供静态方法(解耦)

    HttpServletRequest request=ServletActionContext.getRequest();
    HttpSession session= request.getSession();
    ServletContext  application=ServletActionContext.getServletContext();
    request.setAttribute("request_data", "request_data1");
    session.setAttribute("session_data", "session_data1");
    application.setAttribute("application_data", "application_data1");

    方式2、通过ActionContext获取不同(代表request、session、application、)的Map

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


    方式3:实现接口的方法:(RequestAware、SessionAware、)
    (解耦)

    package cn.lyjs.action;
    
    import java.util.Map;
    
    import org.apache.struts2.interceptor.ApplicationAware;
    import org.apache.struts2.interceptor.RequestAware;
    import org.apache.struts2.interceptor.SessionAware;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    public class DataAction1 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{
        private Map<String,Object> request;
        private Map<String,Object> session;
        private Map<String,Object> application;
        @Override
        public void setApplication(Map<String, Object> application) {
            // TODO Auto-generated method stub
            this.application=application;
        }
        
        @Override
        public void setRequest(Map<String, Object> request) {
            // TODO Auto-generated method stub
            this.request=request;
        }
    
        @Override
        public void setSession(Map<String, Object> session) {
            // TODO Auto-generated method stub
            this.session=session;
        }
        
        @Override
        public String execute() throws Exception {
            // 数据
                     request.put("request_data", "request_data1_actionAware");
                    session.put("session_data", "session_data1_actionAware");
                    application.put("application_data", "application_data1_actionAware");
    //                
                    return SUCCESS;
        }
    }

    类型转换:
    Struts中JSP提交的数据,Struts会自动转换为action中属性类型
    对于基本数据类型以及日期类型会自动转换
    日期类型只支持yyyy-MM-dd
    如何使格式,需要自定义类型转换器:
    局部转换器
    全局转换器

    转换器开发步骤
    1、写转换器类
    2、配置转换器类(告诉struts应用自己的转换器类)
    在同包的action目录下,新建一个Properties文件
    命名规则
    actionClassName-conversion.properties
    3、user.birth=转换器类全路径(cn.lyjs.action.MyConverter)

    全局类型转换器类
    需要写一个转换器,给所有的action用
    配置全局类型转换器类
    src/xwork-conversion.properties
    内容
    Java.util.Date=转换器类()

    package cn.lyjs.action;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Map;
    
    import org.apache.struts2.util.StrutsTypeConverter;
    
    public class MyConverter extends StrutsTypeConverter{
    
        /**
         * 把String转换为指定类型【String to Date】
         * @param context 当前上下文环境
         * @param values JSP提交表单的字符串值
         * @param toClass 要转换的目标类型
         */
        @Override
        public Object convertFromString(Map context, String[] values, Class toClass) {
            SimpleDateFormat sf=new SimpleDateFormat("yyyyMMdd");
            try {
                return sf.parse(values[0]);
            } catch (ParseException e) {
                throw new RuntimeException(e);
            }
        }
    
        @Override
        public String convertToString(Map arg0, Object arg1) {
            return null;
        }
    
    }
  • 相关阅读:
    ajax--->简单加法小练习
    Django----->Ajax
    Django----->inclusion_tag的使用
    分页插件
    权限--中间件
    Django----->一周后的重温
    Django---->视图(View)
    【转载】chmod命令详解
    【转载】linux ls -l命令详解
    js自定制周期函数
  • 原文地址:https://www.cnblogs.com/lyjs/p/5090909.html
Copyright © 2011-2022 走看看