J 2 EEの1つの完全なservlet+jsp+javabean業務プロセス
4616 ワード
MVCモードは、JDBCが開発したプロジェクトの流れに合わせて
1.ビジネス・オブジェクトの作成(domainパッケージのビジネス・クラス)
2、業務オブジェクトに対応するデータベース表を作成する
3、業務対象をデータベースに保存する
3.1接続プールを得るツールクラス(utilパッケージ)Data SourceUtilを作成する.java
注:jdbc.propertiesプロファイルはresourceパッケージに格納されます.
駆動jarをlibに入れる
3.2 DAOを書く(操作方法、例えば添削改ざん、クラス名は一般的にI+業務対象名+DAO)、
これはただのインタフェースであり、実現する必要があることに注意してください.DAOインタフェース実装のネーミングは、ビジネスオブジェクト名+DAOImplを使用します.
注意:データベースをDBUtilツールクラスで操作するには、DButilが必要です.JArファイル
DAOImplの例
4.サーブレット(servletパッケージ)を書き込み、ユーザの要求を受信し、DAOのメソッドを呼び出す.ユーザーの異なるリクエストを1つのservletで受信し、異なるメソッドを呼び出し、異なるページにジャンプすることができます.cmd=xxxで制御
例:
ここでmethodオブジェクトは、本プログラムにおけるcmdの名前に一致するメソッド名を取得する
并用invokeはこの方法を実行し、関連するDAO操作を呼び出し、データベースの操作を対応するjspに表示する.
5、JSPを書いて表示して、JSPの中のパラメータはservletによって転送して、JSPディレクトリはWebContent----->WEB-INF->>に位置して1つのviewフォルダを新築します
1.ビジネス・オブジェクトの作成(domainパッケージのビジネス・クラス)
2、業務オブジェクトに対応するデータベース表を作成する
3、業務対象をデータベースに保存する
3.1接続プールを得るツールクラス(utilパッケージ)Data SourceUtilを作成する.java
package cn.itcast.cd.util;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
public class DataSourceUtil {
private static DataSource dataSource; // , .
//dbcp , , ...
static{
try {
Properties properties = new Properties(); //
properties.load(DataSourceUtil.class.getClassLoader().getResourceAsStream("jdbc.properties"));
dataSource = BasicDataSourceFactory.createDataSource(properties);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* @return
*/
public static DataSource getDataSource() {
return dataSource;
}
}
注:jdbc.propertiesプロファイルはresourceパッケージに格納されます.
駆動jarをlibに入れる
3.2 DAOを書く(操作方法、例えば添削改ざん、クラス名は一般的にI+業務対象名+DAO)、
これはただのインタフェースであり、実現する必要があることに注意してください.DAOインタフェース実装のネーミングは、ビジネスオブジェクト名+DAOImplを使用します.
注意:データベースをDBUtilツールクラスで操作するには、DButilが必要です.JArファイル
DAOImplの例
package cn.itcast.cd.dao.impl;
import java.sql.SQLException;
import java.util.List;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import cn.itcast.cd.dao.IDepartmentDAO;
import cn.itcast.cd.domain.Department;
import cn.itcast.cd.util.DataSourceUtil;
public class DepartmentDAOImpl implements IDepartmentDAO {
private QueryRunner queryRunner;
public DepartmentDAOImpl() {
// queryRunner , queryRunner connection
this.queryRunner = new QueryRunner(DataSourceUtil.getDataSource());
}
@Override
public void save(Department department) {
String sql = "insert into department values(null,?)";
Object[] params = new Object[]{department.getName()};
update(sql, params);
}
@Override
public void remove(Long id) {
String sql = "delete from department where id = ?";
Object[] params = {id};
update(sql, params);
}
@Override
public void update(Long id, Department department) {
String sql = "update department set name = ? where id = ?";
Object[] params = {department.getName(),id};
update(sql, params);
}
public void update(String sql,Object...params){
try {
this.queryRunner.update(sql, params);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public Department get(Long id) {
String sql = "select * from department where id = ?";
Object[] params = {id};
try {
return this.queryRunner.query(sql, new BeanHandler(Department.class), params);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
@Override
public List list() {
String sql = "select * from department";
try {
return this.queryRunner.query(sql, new BeanListHandler(Department.class));
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
4.サーブレット(servletパッケージ)を書き込み、ユーザの要求を受信し、DAOのメソッドを呼び出す.ユーザーの異なるリクエストを1つのservletで受信し、異なるメソッドを呼び出し、異なるページにジャンプすることができます.cmd=xxxで制御
例:
public class DepartmentServlet extends HttpServlet {
private IDepartmentDAO departmentDAO;
@Override
public void init() throws ServletException {
departmentDAO = new DepartmentDAOImpl();
}
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8"); //
String cmd = request.getParameter("cmd");
if(StringUtils.isNotBlank(cmd)){
try {
Method method = this.getClass().getMethod(cmd, HttpServletRequest.class,HttpServletResponse.class);
method.invoke(this, request,response);
} catch (Exception e) {
add(request, response);
e.printStackTrace();
}
}else{
add(request, response);
}
}
public void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
.......
}
public void save() {............}
public void list() {............}
public void remove() {............}
ここでmethodオブジェクトは、本プログラムにおけるcmdの名前に一致するメソッド名を取得する
并用invokeはこの方法を実行し、関連するDAO操作を呼び出し、データベースの操作を対応するjspに表示する.
5、JSPを書いて表示して、JSPの中のパラメータはservletによって転送して、JSPディレクトリはWebContent----->WEB-INF->>に位置して1つのviewフォルダを新築します