الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

شرح : إنشاء تطبيق انترنت يتصل بقاعدة بيانات Mysql .

بدأه rohaili في 8 أكتوبر 2009 · 6 رد · 2,974 مشاهدة · في JavaEE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــه ،،

اللهم يا معلم آدم علمنا ويا مفهم سليمان فهمنا ، سبحانك لا علم لنا إلا ما علمتنا إنك أنت علام الغيوب .

أولا : إنشاء القاعدة كما في الرابط التالي وعدل اسم العمودين الى 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

كما في الصور التالية :

post-63809-1255027648_thumb.jpg

post-63809-1255027655_thumb.jpg

post-63809-1255027661_thumb.jpg

post-63809-1255027668_thumb.jpg

2 - احذف الصفحة redirect.jsp من المجلد web pages ، والصفحة index.jsp من المجلد web pages/web-inf/jsp .

3 - اضغط بالزر الأيمن على web pages ثم new ثم jsp .

اكتب اسم الصفحة index ثم finish .

post-63809-1255027675_thumb.jpg

عدل الصفحة لتصبح كالتالي :



<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

post-63809-1255027682_thumb.jpg

post-63809-1255027690_thumb.jpg

عدل الملف 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 ، وقد يعمل البرنامج بدون هذه الخطوة .

هذا ما أعانني الله على شرحه ، فما كان من صواب فمن الله وحده ، وما كان من خطأ فمني والشيطان .

والحمد لله رب العالمين .

mysql_connector_java_5.1.6_bin.jar.zip

300_130.gif

#2

هذا رابط انشاء القاعدة المذكور في أول المشاركة

/index.php?showtopic=205844

كلما حاولت تعديل المشاركة تظهر رسالة خطأ ، فاضطررت لاضافته كرد .

300_130.gif

#3

موضوع رائع جدا جدا , جزاك الله خيرا

لي تعليق, في الصوره الرابعه, لم إخترت Spring MVC framework ?

#4

لأني أريد استخدام servlet .

300_130.gif

#5

Spring عبارة عن حزمة منفصلة يا أخ rohaili

ولا دخل لها بـ Servlet

على ما أعتقد أنها عبارة عن منصة عمل كاملة

ليس لي خبرة فيها ومعلوماتي عنها قليلة

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#6

جزاكم الله خير ، فعلا لا داع لاختيار mvc وقد أخطات عندما في الخطوة ثانيا في رقم 1 في الصورة الرابعة عندما اخترت mvc ، فلا داع لاختيارها وسوف يعمل البرنامج من أحسن ما يكون ، بل إن اختيار mvc سوف يزيد من حجم المشروع بشكل كبير جدا وسوف يبطئ عملية رفع الملف الى الموقع .

300_130.gif

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…