Struts2与数据源的应用——注册
最近学习了Struts2,然后现在结合以前学过的Tomcat数据源实现一个注册程序。这里省略了一些部分,只写出部分重要代码,也算是一次总结吧。
首先、编写DAO:DAO是数据访问对象,封装了数据访问逻辑,当然这里为了简单起见把他们都写在了一个DAO类,并没有严格按照DAO的开发模式,比如DAO的接口类,DAO的真实主题类,DAO的代理类,数据库连接类,DAO工厂类,这是只是一个简单的UserDAO类。
查找数据源主要分三步:
1、初始化名称查找上下文:Context ctx = new InitialContext();
2、通过名称查找DataSource对象:DataSource ds = (DataSource)ctx.lookup(JDDI名称);比如java:comp/env/jdbc/test;红色部分是固定前缀,为了避免命名冲突。
3、通过DataSource取得一个数据库连接对象:Connection conn = ds.getConnection();
?
以上的代码还有一点要注意的是时间,注册时间是调用DAO是自动赋值的,但是要时间的类型是Timestamp,时间戳,这样可以获得精确的时间。
?
?
然后,配置数据源:在WebRoot/META-INF下新建context.xml配置数据源
?
几点说明:注意这里的name与DAO中用于查找数据DataSource对象的name,前面没有java:comp/env
auth是指容器负责资源的连接
type指明数据源对应的类型DataBase
?
接着编写Action类:这个Action调用了User 和UserDAO。当请求为/register!default.action到来时调用doDefault方法,进入注册界面,正在做具体工作时的是execute方法,这也是默认的。
几点说明:1、这里Action的属性为User,一定要为他添加setter与getter方法,以便JSP页面通过OGNL自动设置和访问User对象。
2、注意default.action请求可以访问的方法为default或doDefault。
?
最后修改配置文件struts.xml和web.xml
特别说明:中文乱码的解决方法,设置常量struts.i18n.encoding为GBK。
?
测试:http://localhost/LoginByStruts2/register!default.action
?
?