Struts2部分小问题

来源:互联网 发布:php erp系统开源代码 编辑:程序博客网 时间:2024/04/29 22:01

 

 

一、跟踪用户状态

 

Struts2提供了一个ActionContext类,该类提供了一个getSession的方法,该方法返回值类型为Map。

 

ActionContext.getContext().getSession().put(“user”, getUsername());

 

设置一个Session属性及其值,在返回页面可以调用到。

 

 

 

二、保证处于登陆状态

 

       在第一部分中将用户登陆信息加入到Session中以后,以后的在每一个业务逻辑处理之前需要先验证Session的属性的存在

 

       String user = ActionContext.getContext().getSession().get(“user”);

 

       If(user = null)  return this.LOGIN;

 

 

 

三、显示结果

 

在Struts2的Action类中,通过Setter方法将相关属性值及处理结果存于一个变量中,而所有的变量都保存在一个ValueStack对象中。可以通过OGNL语句方便地访问ValueStack中所有的信息。ValueStack类似于 Map结构。但功能更强大。

 

//获取封装信息中的ValueStack对象

 

ValueStack vs = (ValueStack)request.getAttribute("struts.valueStack"); 

 

         //调用ValueStack 中的fineValue方法获取Action中的 books信息

 

               // books为一个字符串数组 

 

         String[] books = (String[])vs.findValue("books");

 

//调用循环语句显示所有信息

 

 

 

四、采用struts标签来显示结果

 

       if : 该标签支持标签体,如果IF标签里判断的表达式返回真,则输出标签体内容

 

       else : 该标签不能独立使用,它需要与IF标签结合使用,如果IF标签内判断的表达式返回假,则输出该标签的标签体。

 

       iterator : 主要用于迭代输出某个集合属性的各个集合元素

 

property : 该标签用于输出指定属性值

 

<!—迭代输出ValueStack中的 books对象,其中status是迭代的记号 --> 

 

         <s:iterator value="books" status="index"> 

 

         <!—判断记号是否为奇数 --> 

 

         <s:if test="#index.odd == true"> 

 

             <tr style="background-color:#cccccc">

 

</s:if> 

 

                  <!—判断记号是否为偶数 --> 

 

        <s:else> 

 

            <tr> 

 

        </s:else> 

 

            <td>书名:</td> 

 

            <td><s:property/></td> 取出对应记号下的值显示

 

         </tr> 

 

        </s:iterator>

 

使用iterator迭代输出ValueStack中的books数组,并为每个数组元素定义一个记号:index。通过判断记号的奇偶输出不同风格的表格。、

 

五、Struts2 UI组件

 

       form : 对应一个表单元素 

 

checkbox :对应一个复选框元素

 

password :对应一个密码输入框

 

radio :对应一个单选框元素

 

reset :对应一个重设按钮

 

select :对应一个下拉列表框

 

submit :对应一个提交按钮

 

textarea :对应一个多行文本域

 

textfield :对应一个单行文本框

 

 

 

六、使用Struts2校验框架

 

       通常是通过继承了ActionSupport类再重写其validate()方法来进行校验,但是Struts2还提供了大量的校验框架。对于String类型的数据使用一个requiredstring校验器,它是一个必填校验器,就是其校验的内容不能为空。

 

       其定义文件为:

 

       <?xml version="1.0" encoding="GBK"?> 

 

    <!-- DTD --> 

 

    <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 

 

         1.0.2//EN" 

 

         "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> 

 

<!--  --> 

 

    <validators> 

 

         <!—校验第一表单域username --> 

 

         <field name="username"> 

 

            <!—该表单必须填写 --> 

 

            <field-validator type="requiredstring"> 

 

                <!—如果校验失败,显示user.required对应的信息 --> 

 

                <message key="user.required"/>

 

            </field-validator> 

 

        </field> 

 

         <!—校验第二个表单域password --> 

 

        <field name="password"> 

 

            <field-validator type="requiredstring"> 

 

                <!—如果失败,显示pass.required --> 

 

                <message key="pass.required"/> 

 

            </field-validator> 

 

        </field> 

 

</validators>

 

该文件命名规则:

 

ActionName-validation.xml: 其中ActionName就是需要校验的 Action类名,与Action类的class文件位于同一目录下。

原创粉丝点击