案例:用户注册
在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设置回显时显示密码设置
![]()
本文介绍如何使用Struts2框架实现用户注册功能,包括数据库配置、表单处理及错误回显等关键步骤。
5万+

被折叠的 条评论
为什么被折叠?



