بســم الله الـرحمــن الرحيــم
السلام عليكــم ورحمـة الله وبركاتــه ،،
اللهم يا معلم آدم علمنا ويا مفهم سليمان فهمنا ، سبحانك لا علم لنا إلا ما علمتنا إنك أنت علام الغيوب .
أولا : إنشاء القاعدة كما في الرابط التالي وعدل اسم العمودين الى id و name بالترتيب .
أو نفذ أمرا sql التاليين كل على حدة :
CREATE DATABASE database1;
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `database1`.`table1` (
ثانيا : أنشأ مشروع netbeans بدأ من القائمة file كالتالي :
1 - file>new project>java web>web application :
اسم المشروع ConnToMysql
الخادم tomcat
نوع المشروع mvc
كما في الصور التالية :
2 - احذف الصفحة redirect.jsp من المجلد web pages ، والصفحة index.jsp من المجلد web pages/web-inf/jsp .
3 - اضغط بالزر الأيمن على web pages ثم new ثم jsp .
اكتب اسم الصفحة index ثم finish .
عدل الصفحة لتصبح كالتالي :
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>الصفحة الرئيسة</title>
</head>
<body dir="RTL">
<form action="addName">
<input type="text" name="name" value="${mes}" />
<input type="submit" value="اضافة" />
</form>
<hr>
<form action="getName">
<input type="submit" value="احضر اسم الطالب ذو الرقم" />
<input type="text" name="id" value="${id}" />
<input type="text" name="nameget" value="${nameget}" />
</form>
</body>
</html>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
4 - افتح الملف web.xml وعدل الصفحة الرئيسة من redirect إلى index .
5 - اضغط بالزر الأيمن على المشروع ثم new ثم servlet :
الاسم addName
المجموعة pack1
ثم next>finish
عدل الملف addName.java ليصبح كالتالي :
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class addName extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
connectionpool pool = connectionpool.getinstance();
Connection conn = pool.getconnection();
PreparedStatement ps = null;
String query = "insert into table1 ( name ) values ( ? )";
try {
ps = conn.prepareStatement(query);
ps.setString(1, request.getParameter("name"));
ps.executeUpdate();
request.setAttribute("mes", "تمت الاضافة" );
} catch (SQLException ex) {
Logger.getLogger(addName.class.getName()).log(Level.SEVERE, null, ex);
request.setAttribute("mes", "لم تتم الاضافة");
}
finally{
dbutil.closepreparedstatement(ps);
pool.freeconnection(conn);
}
javax.servlet.RequestDispatcher dp =
this.getServletContext().getRequestDispatcher("/index.jsp");
dp.forward(request, response);
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}
}
package pack1;
6 - أضف server آخر باسم getName كما في الخطوات السابقة وعدله ليصبح كالتالي :
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class getName extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
connectionpool pool = connectionpool.getinstance();
Connection conn = pool.getconnection();
PreparedStatement ps = null;
ResultSet rs = null;
String query = "SELECT * FROM table1 where id = ?";
try {
ps = conn.prepareStatement(query);
ps.setInt(1, Integer.parseInt(request.getParameter("id")));
rs = ps.executeQuery();
if ( rs.next() ){//احضار السجل الأول من النتيجة
request.setAttribute("nameget", (String) rs.getString("name") );
request.setAttribute("id", new Integer( rs.getInt("id") ).toString() );
}
else{
request.setAttribute("nameget", "الرقم غير موجود" );
request.setAttribute("id", request.getParameter("id") );
}
}
catch (SQLException ex) {
Logger.getLogger(addName.class.getName()).log(Level.SEVERE, null, ex);
request.setAttribute("nameget", "يوجد خطأ في الاتصال" );
}
finally{
dbutil.closeresultset(rs);
dbutil.closepreparedstatement(ps);
pool.freeconnection(conn);
}
javax.servlet.RequestDispatcher dp =
this.getServletContext().getRequestDispatcher("/index.jsp");
dp.forward(request, response);
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
@Override
public String getServletInfo() {
return "Short description";
}
}
package pack1;
7 - عدل الملف context.xml في المجلد web pages/meta-inf ليصبح كالتالي :
<Context antiJARLocking="true" path="/ConnToMysql">
<Resource name="jdbc/database1" auth="container"
maxActive="100" maxIdle="30" maxWait="10000"
useUnicode="true" characterEncoding="utf8"
username="root" password="pass1"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/database1?autoReconnect=true"
logAbandoned="true" removeAbandoned="true"
removeAbandonedTimeout="60" type="javax.sql.DataSource" />
</Context>
<?xml version="1.0" encoding="UTF-8"?>
database1 : اسم القاعدة
pass1 : كلمة المرور الخاصة بالمستخدم root في mysql server
7 - اضغط بالزر الأيمن pack1 ثم new>java class
اسم الصنف connectionpool.java
import java.sql.*;
import javax.sql.DataSource;
import javax.naming.InitialContext;
public class connectionpool {
private static connectionpool pool = null;
private static DataSource datasource = null;
private connectionpool(){
try{
InitialContext ic = new InitialContext();
datasource = (DataSource) ic.lookup("java:/comp/env/jdbc/database1");
}
catch(Exception e){
e.printStackTrace();
}
}
public static connectionpool getinstance(){
if (pool == null)
pool = new connectionpool();
return pool;
}
public Connection getconnection(){
try{
return datasource.getConnection();
}
catch (SQLException s){
s.printStackTrace();
return null;
}
}
public void freeconnection (Connection c){
try{
c.close();
}
catch (SQLException s){
s.printStackTrace();
}
}
}
package pack1;
8 - كما في الخطوة السابقة أنشأ الصنف dbutil.java
import java.sql.*;
public class dbutil {
public static void closestatement(Statement s){
try{
if (s != null)
s.close();
}
catch (SQLException se){
se.printStackTrace();
}
}
public static void closepreparedstatement (Statement s){
try{
if (s != null)
s.close();
}
catch (SQLException se){
se.printStackTrace();
}
}
public static void closeresultset (ResultSet rs){
try{
if (rs != null)
rs.close();
}
catch (SQLException se){
se.printStackTrace();
}
}
}
package pack1;
ملاحظة مهمة جدا : في الملف connectionpool.java كتبنا اسم القاعدة database1 ، عدل اسم القاعدة حسب مشروعك .
9 - أضف الملف mysql-connector-java-5.1.6-bin الموجود في المرفقات ( بعد فك الضغط ) إلى
C:\Program Files\Java\jdk1.6.0_14\jre\lib\ext
عدل المسار حسب جهازك ، المهم أن يكون في jdk1.6.0_14\jre\lib\ext .
10 - اضغط بالزر الأيمن على مجلد libraries في مشروعك ثم add library ثم اختر mysql jdbc driver ، وقد يعمل البرنامج بدون هذه الخطوة .
هذا ما أعانني الله على شرحه ، فما كان من صواب فمن الله وحده ، وما كان من خطأ فمني والشيطان .
والحمد لله رب العالمين .

