这里撇开Spring和Hibernate不谈,直接在Struts2下使用DAO封装数据库操作,进行简单的数据库访问操作。实现的效果大致是在初始页面输入一个需要查询的人名,然后访问数据库,将查询到的结果返回给结果页面。本篇博文仅呈现一个大致的流程,并不给出具体的解释。
大致的效果如下两幅图显示:
项目实现流程:
1. 源代码包安排:
action 动作包
dao DAO包
dao.impl DAO接口的实现类包
entity 实体包
util 工具包(数据库访问工作类等,这里不展示)
2. 数据库中的内容如下
3. 封装admin表——User.java类
public class User {
private int id;
private String name;
private String password;
getter/setter
}
4. DAO接口——User相关的数据库访问操作
import cn.myseu.entity.User;
public interface UserDao {
public User query(String name);
}
5. 实现DAO接口——实现具体的业务方法
public class UserDaoImpl implements UserDao {
@Override
public User query(String name) {
String sql = "select * from admin where name=?";
Connection conn = DBUtil.getConn();
PreparedStatement pstmt;
try {
pstmt = conn.prepareStatement(sql);
pstmt.setString(1,name);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
int id = rs.getInt("id");
String password = rs.getString("password");
User user = new User();
user.setId(id);
user.setName(name);
user.setPassword(password);
return user;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
6. 建立两个视图页面 namequery.jsp 和 dbresult.jsp
namequery.jsp 核心内容
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>DBTest</title>
</head>
<body>
<hr>
<h3>Who do you want to check</h3>
<h4>Input the name:</h4>
<s:form action="CheckDB">
<s:textfield name="name" label="Your name" />
<s:submit />
</s:form>
</body>
</html>
dbresult.jsp核心内容
<body>
<h4>Checking results:</h4>
<h2><s:property value="queryResult" /></h2>
</body>
7.在struts.xml中注册相应的Action
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<action name="QueryResult">
<result>/namequery.jsp</result>
</action>
<action name="CheckDB" class="cn.myseu.action.CheckDB">
<result name="SUCCESS">/dbresult.jsp</result>
</action>
</package>
</struts>
8.实现动作的实现类CheckDB.java
public class CheckDB{
public String execute() throws Exception {
setQueryResult(query(getName()));
return "SUCCESS";
}
private String query(String name){
UserDao dao = new UserDaoImpl();
User user = dao.query(name);
return "name:"+user.getName()+" password:"+user.getPassword();
}
private String name;
private String queryResult;
public String getQueryResult() {
return queryResult;
}
public void setQueryResult(String queryResult) {
this.queryResult = queryResult;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}