struts2值栈与类型转换

来源:互联网 发布:数据冰雹重点场所监控 编辑:程序博客网 时间:2024/06/16 16:05

OGNL的表达方式有四种:

1.使用圆点符号

        2.调用对象的方法

        3.结合Struts2标签使用

        4.表达式求值

下面主要讲解常用的使用圆点符号和结合Struts2标签:

      1.使用圆点符号

        代码实例:

         1)jsp页面代码

<body>    <form action="login" method="post">      姓名: <input name="u.name"><br>      密码: <input name="u.pwd"><br>         <input type="submit"  value="提交">   </form>  </body>
        2)建一个实体类User

package com.qhit.bean;import java.util.Date;public class User {private String name;private String pwd;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}}
        3)创建action类LoginAction

package com.qhit.action;import com.opensymphony.xwork2.ActionContext;import com.qhit.bean.User;public class LoginAction {private User u;public String login(){String name = u.getName();String pwd = u.getPwd();if("zhangsan".equals(name) && "123".equals(pwd)){ActionContext.getContext().getSession().put("user", u);return "success";}else{return "error";}}public User getU() {return u;}public void setU(User u) {this.u = u;}}
      4)在Struts.xml中配置action类

<action name="login" class="com.qhit.action.LoginAction" method="login"><result name="success">page/success.jsp</result><result name="error">page/error.jsp</result></action>
      5)在page文件下创建success.jsp页面使用圆点符号的OGNL表达式

<body>    This is success page. <br>    姓名:${u.name } 密码:${u.pwd }<!--此处使用了ognl的表达式的圆点符号方式  -->  </body>
     6) 部署运行即可得到登录名和密码

    2.使用Struts2标签

        代码示例
        1)登录代码
 <body>    <form action="login" method="post">      姓名: <input name="u.name"><br>      密码: <input name="u.pwd"><br>      出生日期:<input name="u.birth"><br>        <input type="submit"  value="提交">   </form>  </body>

        2)实体类User
package com.qhit.bean;import java.util.Date;public class User {private String name;private String pwd;private Date birth;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;}
        public Date getBirth() {return birth;}public void setBirth(Date birth) {this.birth = birth;}
}
         3)action类
package com.qhit.action;import com.opensymphony.xwork2.ActionContext;import com.qhit.bean.User;public class LoginAction {private User u;public String login(){String name = u.getName();String pwd = u.getPwd();if("zhangsan".equals(name) && "123".equals(pwd)){ActionContext.getContext().getSession().put("user", u);}else if("birth".equals(name) && "123".equals(pwd)){
return "info";}else{
return "error";}}public User getU() {return u;}public void setU(User u) {this.u = u;}}

       4)Struts.xml配置

<action name="login" class="com.qhit.action.LoginAction" method="login"><result name="success">page/success.jsp</result><result name="error">page/error.jsp</result><result name="info">page/info.jsp</result></action>

       5)page文件下的info.jsp页面
          首先要引入Struts2标签
<%@ taglib prefix="s" uri="/struts-tags" %>
         Struts2标签
<body>     姓名:<s:property value="u.name"/><br>   密码: <s:property value="u.pwd"/><br>  出生日期:  <s:property value="u.birth"/>  </body>
      6) 部署运行即可得到姓名,密码,出生日期。

类型转换

Struts2内置的类型转换:

String和int、Integer

String和double、Double

String和Map、List

String和Date

String和boolean

String和char

Struts2自定义类型转换

在Struts2中提供了StrutsTypeConverter类来简化自定义类型转换的设计,这个类有两个抽象方法需要实现:

(1) public Object convertFromString(Map context, String[] values, Class toClass) ;

          用于String类型数据转成自定义类型的处理方法参数:

             context  --- 与Action有关的上下文信息

             values   --- 从请求中获取的参数值

             toClass --- 要转换的目标类型

public String convertToString(Map context, Object obj) ;

           用于自定义类型转换成String

      参数:

         context  --- 与Action有关的上下文信息

         obj --- 自定义类型对象


这里讲一下string和date

   1.组件级别(仅供练习使用)

        1)新建转换器类
package com.qhit.converter;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Map;import org.apache.struts2.util.StrutsTypeConverter;public class DateTypeConterver extends StrutsTypeConverter {/*  * 把指定日期格式的字符串转出日期类型   将提交的String类型的日期转换成date类型的日期   输入 * arg0 --与Action有关的上下文信息 * arg1--从请求中获取的参数值 * arg2--要转换的目标类型 * */@Overridepublic Object convertFromString(Map arg0, String[] arg1, Class arg2) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");try {Date date = sdf.parse(arg1[0]);return date;} catch (ParseException e) {System.out.println("日期转换错误");e.printStackTrace();return null;}}/*  * 把日期类型的值转出指定日期格式的字符串格式   将date类型的日期转换成string类型的日期  输出 * arg0 --与Action有关的上下文信息 * arg1--自定义类型对象 *  * */@Overridepublic String convertToString(Map arg0, Object arg1) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String date = sdf.format(arg1);return date;}}
         2)新建properties文件

          1. 注意位置
          

          2.文件里的代码

         

birth=com.qhit.converter.DateTypeConterver
    birth为User的属性,等号后面的是转换器的路径

          3,再加上上面Struts2标签代码部署运行即可,此时只能输入"yyyy-MM-dd"格式的日期


 2.全局级别(实际开发可使用)

      只需改一下properties配置文件即可

        1)位置,与struts.xml同一级别在src下

             

     2)文件名称不能变,是固定的

           文件里的代码

java.util.Date=com.qhit.converter.DateTypeConterver

         

     3)部署运行即可


以上就是我所学的Struts2值栈和类型转换。

           



0 0
原创粉丝点击