struts2和springmvc的区别_struts2 表单数据存储及校验处理

更新时间:2020-03-12    来源:php入门    手机版     字体:

【www.bbyears.com--php入门】

本教程我们介绍在提交表单时:javabean存储表单数据,在action中重写validate方法进行简单的校验,创建一个struts2表单并和javabean匹配
    
javabean存储表单数据

为了封装数据,我们将使用一个简单的Java类,它遵循基本的Java Bean规范,即为每个属性设置public get/set 方法。

Person.java

package model;

public class Person {
    private String firstName;
    private String lastName;
    private String email;
    private int age;
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person [firstName=" + firstName + ", lastName=" + lastName + ", email="
                + email + ", age=" + age + "]";
    }
}

注意上面的javabean:

年龄为int类型(action在讲表单参数填充到javabean中,会进行适当的类型转换)

复写了toString方法(会调用toString方法)

action处理表单数据

action类需要继承ActionSupport,在Register类中我们申明一个属性personBean,并且提供相应的get/set方法。同时,在Register类中复写execute方法和validate方法。

execute方法:

默认实现不执行任何操作的返回"success"。子类应重写此方法以提供业务逻辑,并由此返回Action的预定义的返回值:SUCCESS、NONE 、ERROR、INPUT、LOGIN。

我们在Struts.xml中添加action元素时,需要定义这些返回值对应的页面(注:返回哪些写哪些)。

validate方法:

在Validatable接口中定义了一个validate()方法,重写该方法,如果建议表单输入域出现错误,则将错误添加到Actionsupport类的fieldErrors域中,然后通过OGNL表达式负责输出。

Register.java

package test.action;

import model.Person;
import com.opensymphony.xwork2.ActionSupport;

public class Register extends ActionSupport {
    private static final long serialVersionUID = 1L;
    private Person personBean;
    
    public String execute() throws Exception {

        // call Service class to store personBean's state in database

        return SUCCESS;
    }
    
    public void validate() {
        if (personBean.getFirstName().length() == 0) {
            addFieldError("personBean.firstName", "firstName is required");
        }
        if (personBean.getEmail().length() == 0) {
            addFieldError("personBean.email", "firstName is required");
        }
        if(personBean.getAge()<18){
            addFieldError("personBean.age", "Age is required and must be 18 or older");
        }
    }

    public Person getPersonBean() {
        return personBean;
    }

    public void setPersonBean(Person person) {
        personBean = person;
    }
}


jsp页面的struts2表单

表单维持和错误输出

用struts标签进行表单维持和错误输出比较方便,但也因此生成了的大量HTML代码。往往我们并不需要这些格式和代码,并且对这些标签的格式控制可能会增加我们的工作量。因此我们更改struts默认的主题,输出我们想要的效果。

struts2的主题和模板

struts2默认主题为XHTML,我们可以在struts.properties文件中修改struts2的默认主题。

struts.properties

struts.ui.theme=simple

表单书写格式

因为用了simple模板,就需要自己定义fielderror的显示。

格式为:并将此标签放在表单XXX字段之后。

fielderror默认主题是ul li的格式,我们需要可以将默认文档进行更改。

register.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>



My JSP 'register.jsp' starting page



   

register


   
        firstName:
                 

        lastName:
                     

        email:
             

        age:
           

       
   




显示结果的thankyou.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>


     
    My JSP 'thankyou.jsp' starting page
 
 
   

Your registration information:

    
   


 


struts.xml配置


    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">



   
   
       
            /thankyou.jsp
            /register.jsp
       
   


本文来源:http://www.bbyears.com/jiaocheng/86574.html