3、struts2 默认配置、数据处理的集中方式、请求数据封装、日期转换器

struts2 默认配置

1、全局视图跳转配置、配置的各项默认值

在config.xml中如此配置

    <!-- 配置全局跳转视图 -->
        <global-results>
            <result name="success">/index.jsp</result>
        </global-results>
 <!-- 配置各项默认值 -->
         <!--
             name  只配置了访问路径名称
             class 默认执行的action在struts-default有配置
                    <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />
             method  默认为execute
             默认的方法execute返回值为success,对应的页面去全局视图找。

          -->
         <action name="test"></action>

        <!-- 什么情况不配置class? 即处理的aciton -->
        <!-- 答案: 当只是需要跳转到WEB-INF下资源的时候。 -->
         <action name="test2">
            <result name="success" type="redirect">/WEB-INF/index.jsp</result>
         </action>

2、structs2 数据处理的集中方式

1)直接拿到ServletApi

2)通过ActionContext类

3)实现接口的方法

public class DataAction_bak extends ActionSupport{

    @Override
    public String execute() throws Exception {

        // 1. 请求数据封装; 2. 调用Service处理业务逻辑,拿到结果数据

        // 3. 数据保存到域中

        /*
         *
        // Struts中对数据操作,方式1: 直接拿到ServletApi, 执行操作
        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");
        */

        // 【推荐:解耦的方式实现对数据的操作】
        // Struts中对数据操作,方式2: 通过ActionContext类
        ActionContext ac = ActionContext.getContext();
        // 得到Struts对HttpServletRequest对象进行了封装,封装为一个map
        // 拿到表示request对象的map
        Map<String,Object> request =  ac.getContextMap();
        // 拿到表示session对象的map
        Map<String, Object> session = ac.getSession();
        // 拿到表示servletContext对象的map
        Map<String, Object> application = ac.getApplication();

        // 数据
        request.put("request_data", "request_data1_actionContext");
        session.put("session_data", "session_data1_actionContext");
        application.put("application_data", "application_data1_actionContext");

        return SUCCESS;
    }
/**
 * 数据处理, 方式3: 实现接口的方法
 *
 */
public class DataAction extends ActionSupport implements RequestAware, SessionAware, ApplicationAware{

    private Map<String, Object> request;
    private Map<String, Object> session;
    private Map<String, Object> application;

    // struts运行时候,会把代表request的map对象注入
    @Override
    public void setRequest(Map<String, Object> request) {
        this.request = request;
    }

    // 注入session
    @Override
    public void setSession(Map<String, Object> session) {
        this.session = session;
    }

    // 注入application
    @Override
    public void setApplication(Map<String, Object> application) {
        this.application = application;
    }

    @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;
    }

}

3、请求数据封装

regist.jsp

<body>
    <form action="${pageContext.request.contextPath }/user_register.action" method="post">
        用户名:<input type="text" name="user.name"><br/>
        密码:<input type="text" name="user.pwd"><br/>
        年龄:<input type="text" name="user.age"><br/>
        生日:<input type="text" name="user.birth"><br/>

        <input type="submit" value="注册">
    </form>
  </body>

User

public class User {

    // 封装请求数据
    private String name;  // 必须给set / get可以不用给
    private String pwd;
    private int age;
    private Date birth;
    public void setName(String name) {
        this.name = name;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void setBirth(Date birth) {
        this.birth = birth;
    }
    public String getName() {
        return name;
    }
    public String getPwd() {
        return pwd;
    }
    public int getAge() {
        return age;
    }
    public Date getBirth() {
        return birth;
    }

}

UserAction

/**
 * Struts核心业务: 请求数据自动封装以及类型转换
 *
 */
public class UserAction {

     // 对象类型,一定给get方法
    private User user;
    public void setUser(User user) {
        this.user = user;
    }
    public User getUser() {
        return user;
    }

    // 处理注册请求
    public String register() {
        System.out.println(user.getName());
        System.out.println(user.getPwd());
        System.out.println(user.getAge());
        System.out.println(user.getBirth());
        return "success";
    }
}

4、structs2 日期转换器

日期 默认情况下 只支持 yyyy-mm–dd

转换器类

/**
 * 自定义类型转换器类
 *
 *
 */
public class MyConverter extends StrutsTypeConverter {

    // 新需求: 要求项目中要支持的格式,如: yyyy-MM-dd/yyyyMMdd/yyyy年MM月dd日..

    // 先定义项目中支持的转换的格式
    DateFormat[] df = { new SimpleDateFormat("yyyy-MM-dd"),
            new SimpleDateFormat("yyyyMMdd"),
            new SimpleDateFormat("yyyy年MM月dd日") };

    /**
     * 把String转换为指定的类型 【String To Date】
     *
     * @param context
     *            当前上下文环境
     * @param values
     *            jsp表单提交的字符串的值
     * @param toClass
     *            要转换为的目标类型
     */
    @Override
    public Object convertFromString(Map context, String[] values, Class toClass) {

        // 判断: 内容不能为空
        if (values == null || values.length == 0) {
            return null;
        }
        // 判断类型必须为Date
        if (Date.class != toClass) {
            return null;
        }

        // 迭代:转换失败继续下一个格式的转换; 转换成功就直接返回
        for (int i=0; i<df.length; i++) {
            try {
                return df[i].parse(values[0]);
            } catch (ParseException e) {
                continue;
            }
        }
        return null;
    }

    @Override
    public String convertToString(Map context, Object o) {
        return null;
    }

}

局部

全局

时间: 2024-11-09 05:06:18

3、struts2 默认配置、数据处理的集中方式、请求数据封装、日期转换器的相关文章

Struts2基本配置详解

Struts2配置文件加载顺序 struts2 配置文件由核心控制器加载 StrutsPrepareAndExecuteFilter (预处理,执行过滤) init_DefaultProperties(); // [1] ---------- org/apache/struts2/default.properties init_TraditionalXmlConfigurations(); // [2] --- struts-default.xml,struts-plugin.xml,strut

JAVAWEB开发之Struts2详解(一)——Struts2框架介绍与快速入门、流程分析与工具配置以及Struts2的配置以及Action和Result的详细使用

Struts2框架介绍 三大框架:是企业主流JavaEE开发的一套架构.Struts2 + Spring + Hibernate 什么是框架?为什么要学习框架? 框架是实现部分功能的代码(半成品),使用框架简化企业级软件开发. Struts2与MVC? Struts是一款优秀的MVC框架 MVC:是一种思想,是一种模式,将软件分为Model模型.View视图.Controller控制器 JAVAEE软件三层架构:web层(表现层).业务逻辑层.数据持久层(Sun提供javaEE开发规范) Jav

Struts2的配置以及详解

1,truts2的作用: 3 1-1 MVC框架: 3 1-2 导入struts.xml配置文件的快捷提示: 3 2,struts2的配置 4 2-1 配置简介 4 2-2配置Struts2的三个步骤 4 1 导入Struts2的jar包 4 2 添加核心配置文件Struts2.xml 4 3 配置过滤器web.xml 5 3,完整的执行步骤: 5 4,创建Action类 6 4-1 Action类的要求: 6 4-2 创建Action类的方法 6 5 从Action向页面传值 6 5-1通过U

struts2的配置

xml绑定本地约束的方法: window-->preferences(-->MyEclipse-->Files and Editors)-->XML-->XML Catalog-->user specified Entires-->Add 中: 在出现的窗口中的Key Type 中选择URI,在location中选"File system",然后再spring解压目录的dist/resources目录中选择spring-beans-2.5.xs

Struts2 XML配置详解

struts官网下载地址:http://struts.apache.org/ 1.    深入Struts2的配置文件 本部分主要介绍struts.xml的常用配置. 1.1.    包配置: Struts2框架中核心组件就是Action.拦截器等,Struts2框架使用包来管理Action和拦截器等.每个包就是多个Action.多个拦截器.多个拦截器引用的集合. 在struts.xml文件中package元素用于定义包配置,每个package元素定义了一个包配置.它的常用属性有: l name

Struts2之配置

Struts2的默认配置文件是struts.xml放在/web-inf/classes目录下,struts配置文件的最大作用就是配置Action与请求之间的对应关系,并配置逻辑视图名和物理视图名之间的对应关系.除此之外,还可以在配置文件中配置常量,导入其他配置文件等. 1.常量配置 struts2的常量相当于对Struts2框架整体起作用的属性   这些常量(属性)可以再struts.xml配置文件中进行配置 ,也可以在管理常量的文件struts.properties中进行配置,作用是一样的.

easyUI之datagrid 及struts2如何配置

datagrid可以说是easyUI最重要的一个控件.下面我们来看看它有哪些功能,以及如何来实现. $('#firmresult').datagrid({ singleSelect:true,//设置只能选择单选 pagination:true,//显示分页 // fit:true,//自动土适应父容器的大小 fitColumns:true,//列宽的自动适应 rownumbers: true,//显示第几行 pageList:[5,10,15],//每页显示记录条数 pageNumber:1,

struts2+ckeditor配置图片上传

又是一个漫漫长夜. 公司的编辑器坏了,用的是百度编辑器,上传图片的网址被框架给拦截了,我们本地怎么测试都没问题,放到服务器就这样了.和老李找了半天,疯了,没原因的. 笔者以前用过jsp+ckeditor,觉得里面上传功能挺好用,于是想出这个法子,把网站的编辑器换掉. 用的是最新的版本的,4点几的.很有wordpress的感觉,不知道是不是一家的.先预览一下: 代码: package action; import java.io.File; import java.io.FileInputStre

Struts2 Convention Plugin ( struts2 零配置 )

Struts2 Convention Plugin ( struts2 零配置 ) convention-plugin 可以用来实现 struts2 的零配置.零配置的意思并不是说没有配置,而是通过约定大于配置的方式,大量通过约定来调度页面的跳转而使得配置大大减少.考虑到某种因素,这里采用 myeclipse 作为示例 IDE,环境 : JDK 1.6 myeclipse 8.6.1 struts 2.1.8 web.xml <filter>       <filter-name>