javaweb——使用BeanUtils封装表单提交的数据

BeanUtils工具类,用于简化代码封装数据

1.编写一个注册页面

2.导入BeanUtils工具包

3.编写封装类

4.编写Servlet测试类,设置转换器(特殊情况)

 一、注册页面text1.html




    
    Title


注册
用户名:
密码:
性别:
出生日期:
爱好: 篮球 足球
地址
地址

二、导入BeanUtils工具类jar包

Common BeanUtils官网:http://commons.apache.org/proper/commons-beanutils/

下载自己想要的版本,在WEB-INF下创建一个lib,将jar包导进去,右键点击Add as library

javaweb——使用BeanUtils封装表单提交的数据_第1张图片

三、编写封装类:User.java

package text1.com.xinhua;


import java.util.Date;

public class User {
            private  String username;
            private  String passwold;
            private  String gender;
            private  String hobby;
            private  String address;
            private  String remark;
            private Date date;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPasswold() {
        return passwold;
    }

    public void setPasswold(String passwold) {
        this.passwold = passwold;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getHobby() {
        return hobby;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", passwold='" + passwold + '\'' +
                ", gender='" + gender + '\'' +
                ", hobby='" + hobby + '\'' +
                ", address='" + address + '\'' +
                ", remark='" + remark + '\'' +
                ", date=" + date +
                '}';
    }
}

四、编写测试类:

(BeanUtils能把字符串直接转换成基本数据类型,but,如果在一个对象里面存放的不是基本数据类型而是Date呢,就得给Date对象设置一个转换器)

package text1;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.ConversionException;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.commons.beanutils.Converter;
import org.apache.commons.beanutils.locale.converters.DateLocaleConverter;
import text1.com.xinhua.User;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

@WebServlet("/ServletDmoe")
public class ServletDmoe extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=UTF-8");
        req.setCharacterEncoding("UTF-8");
        resp.setCharacterEncoding("UTF-8");
        User user = new User();
        //设置转换器
        // 第一个参数定义匿名内部类
        ConvertUtils.register(new Converter() {
            @Override
            public Object convert(Class arg0, Object value) {
                if(value == null){
                return null;
            }
                if (!(value instanceof String)) {
                    throw new ConversionException("conversion error");
                }
                String star = (String) value;
                if (star.trim().equals("")) {
                    return null;
                }

                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                try {
                    return sdf.parse(star);
                } catch (ParseException e) {
                    throw new RuntimeException(e);
                }
            }
        }, Date.class);
       
        try {
            BeanUtils.populate(user, req.getParameterMap());
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        System.out.println(user);
    }
}

将字符串转换成日期型

 public static Date stringToDate(String date){
        Date date1 = null;
        try {
            String format = null;
            if (date.contains("-")){
                format = "yyy-MM-dd";
            }
            if (date.contains("/")){
                format = "yyy/MM/dd";
            }
            if (date.contains("年")){
                format = "yyy年MM月dd日";
            }
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
            date1 = simpleDateFormat.parse(date);
        } catch (ParseException e){
            e.printStackTrace();
        }
        return date1;
    }

开启Tomcat,前台输入信息,后台查看数据

你可能感兴趣的:(java,开发语言,tomcat,servlet,服务器)