Struts2框架学习(三)

案例:用户注册

在mysql中添加一个struts2_day3数据库,建一个user表,建表语句如下

CREATE TABLE `user`(
    username VARCHAR(100) PRIMARY KEY,
    `password` VARCHAR(100),
    birthday DATE,
    hobby VARCHAR(255),
    marrried BIT(1)
);

导入MySQL jar包,DBCP jar包,DBUtils jar包

在src下创建dbcpconfig.properties数据库配置文件

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/struts_day3
username=root
password=1234
initialSize=10
maxActive=50
maxIdle=20
minIdle=5
maxWait=60000
connectionProperties=useUnicode=true;characterEncoding=utf8
defaultAutoCommit=true
defaultReadOnly=
defaultTransactionIsolation=READ_COMMITTED

在src目录下创建utils工具类的包,并并编写数据库工具类DBCPUtil.java

package cn.zjut.struts.utils;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

public class DBCPUtil {
    private static DataSource ds;
    static{
        try {
            Properties prop = new Properties();
            InputStream in = DBCPUtil.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");
            prop.load(in);
            ds = BasicDataSourceFactory.createDataSource(prop);
        } catch (Exception e) {
            throw new ExceptionInInitializerError("初始化连接池失败!");
        }
    }
    public static DataSource getDataSource(){
        return ds;
    }
    public static Connection getConnection(){
        try {
            return ds.getConnection();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}

在WebContent中写注册页面register.jsp

 写个UserAction,使用模型驱动来接收参数

 

 

配置struts.xml

 持久层dao和Service层

 

 

 

 修改UserAction register方法

运行项目即可

struts自定义参数类型转换

前面的多个爱好请求参数,struts框架会自动进行字符串的拼接,如拼接成"写代码, 泡妞, 买房",是以逗号+空格类型来拼接的

提交生日时,是以1989-01-05的格式提交的,struts也会把字符串转成Date类型,这些都是struts做的类型转换,但是如果提交的05/01/1989,struts就会报错

 

struts有很多类型转换器

 struts的字符串类型转换是由一个类com.opensymphony.xwork2.conversion.impl.StringConverter类来完成的,日期类型转换是由com.opensymphony.xwork2.conversion.impl.DateConverter来完成

通过源码分析知道自己写一个类型转换,可以实现DefaultTypeConverter抽象类,一般也可以用它的子类StrutsTypeConverter来实现

写一个类继承StrutsTypeConverter,并实现抽象方法

实现两个抽象方法的逻辑

在模型model的包下配置【模型名字-conversion.properties】的一个文件,内容如下 

 

 

 没有报错,并且可以显示结果

 配置全局类型转换器

在src径配置一个xwork-conversion.properties文件,添加如下内容

key为数据类型(全类名)

value为类型转换器的全类名

 struts的错误回显

将前面用户注册案例的时间转化时,抛出运行时异常

注册时,将日期写错格式,会得到下面的一个结果,result input表示需要一个回显页面,也就是发生异常时的显示页面 

 struts.xml中配置回显页面

 

在register2.jsp中添加struts的标签

 回显效果

 Sruts的form表单标签

struts的from标签提供了和原始html表单几乎一至的属性

将前面的用户注册案例改成struts的表单标签来显示

 

 

 strtus的错误处理和中文显示

struts标签如果有字段错误,会回显信息,可以设置错误信息为红色

 以下是结果显示

 设置回显信息中文化

在模型的包中,添加一个模型+properties,配置key value,key格式为下面的invalid.fieldvalue.字段名

 结果显示

struts设置表单必填项

struts设置回显时显示密码设置

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值