案例:用户注册
在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设置回显时显示密码设置