Chủ Nhật, 28 tháng 11, 2010

Tạo phân trang với MySQL/JSP

Đây là một cách mà LM dùng JSP để phân trang dữ liệu với CSDL là Mysql
( Test trên Tomcat 5 , JDK 1.4 , Mysql 4.0.18 )
CODE

// Mã JSP

<%@page import="java.sql.*"%>
<%
// Thông tin db
String host="localhost";
String user="root";
String pass="gnamueil";
String db="lieumang"; //  tên database
// Kết nối dữ liệu
String _sqlurl = "jdbc:mysql:" + db;
String conn;
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
conn = "jdbc:mysql://" + host + "/" + db + "?user=" + user + "&password=" +pass;
Connection Conn = DriverManager.getConnection(conn);
// Truy vấn SQL
Statement SQLStatement = Conn.createStatement();
// Đếm record
String Query = "SELECT count(*) FROM test";
ResultSet hang = SQLStatement.executeQuery(Query);

// Code tạo phân trang
int sohang =0;
if (hang.next())
{
sohang = hang.getInt(1);
}

// ở đây biến phân trang dùng cho URL là [B]p[/B]
int p = 0;
String sob = request.getParameter("p");
if (sob != null ) {
if (sob.equals("0"))
{
p = 0;
}
else
{
p = Integer.parseInt(sob) - 1;
}
}

int p_one = 6; // số record
String sel = "SELECT * FROM test  ORDER BY id DESC LIMIT " + p + ","+ p_one;
ResultSet data = SQLStatement.executeQuery(sel);
if (data != null && data.next())
{
int dem =0;
while(data.next())
{
dem++;
out.print(data.getString("field1" ) + "<br>"); // show thông tin field có tên là field1
}
}


int i=0;
int n= sohang;
int j=1; int m= p_one;
for (i=0;i<n;i++)

           {
if (i%m==0)
                  {  if (p >= 0 )
                          {
  if   (  p+1== i )  { out.print("<a href=?p="+ i + "><b>" + j +  "</b></a> "); }    
 else {  out.print("<a href=?p="+ i + ">"+ j +"</a> "); }
           }

 j++;
    }
            }
%>

Giới thiệu về JSP và Servelet

JavaServer Pages (JSP) là một công nghệ lập trình mã kịch bản phía máy chủ cho phép các nhà phát triển tạo ra các ứng dụng dựa trên Web đồng thời cho phép tận dụng các thành phần được phát triển bằng ngôn ngữ Java, tuân thủ theo đặc tả ngôn ngữ JavaBeans. Xét trên một vài khía cạnh thì JSP có thể so sánh với các ngôn ngữ scripting phía máy chủ khác như ASP và PHP. JSP giống như PHP ở khía cạnh cú pháp kiểu C của ngôn ngữ Java nhưng JSP lại có thể được thiết kế để có khả năng mở rộng thêm bằng cách dùng các thành phần như kiểu của ASP.

Nhưng khi bạn tiếp cận với nó, bạn sẽ thấy nó không giống các ngôn ngữ khác cùng loại. Cực nhanh, độc lập nền tảng, tính tương thích quy mô rất cao với sự trợ giúp từ các hàm xây dựng sẵn cho các công việc xử lý phân tán, tương thích với tất cả các web server quan trọng nhất và MIỄN PHÍ cho tất cả mọi người, cho tất cả các công việc kể cả thương mại.

Nhưng hiện tại JSP chưa đạt được mức độ phổ cập như chính ưu điểm của nó. Có 2 lý do chính:


1. Để tận dụng được tối đa ưu thế của JSP, một nhà phát triển cần làm việc thật tốt trên Java. Không may, điều này không khác gì một đòi hỏi khá cao đối với một nhà phát triển Web khi mà đa số họ chỉ muốn tập trung vào việc thiết kế và có thể dùng tới 1 hoặc 2 ngôn ngữ scripting language khi cần. Có nhiều sách và tài liệu miễn phí để học Java nhưng việc đầu tư cho Java chỉ để hướng đến JSP lại khá là mất nhiều thời gian, và nó tuỳ thuộc vào khả năng của mỗi cá nhân nên sẽ có khá nhiều thách thức do bản chất hướng đối tượng thuần tuý của Java .
2. Thiết lập một môi trường server để phát triển và kiểm nghiệm JSP có thể khá phức tạp, đặc biệt là một phần lớn các tài liệu thì lại viết bằng một thứ văn xuôi kĩ thuật khó hiểu với những đòi hỏi rằng bạn đã biết ít nhiều về JSP rồi. Nếu bạn mới bắt đầu học JSP, bạn muốn có một hướng dẫn từng bước một trong việc sử dụng và thiết lập một server chạy tốt trên máy tính của bạn để bạn có thể yên tâm học ngôn ngữ trước khi tìm hiểu các chi tiết khác về cấu hình server đó.

Trong bài báo này tôi sẽ cố gắng hướng dẫn các bạn thật tỉ mỉ cách thiết lập một Web server hỗ trợ JSP trên một PC dùng Windows. Hi vọng đây là một bài ở cấp độ jump-start vào thế giới JSP.

Tải về và cài đặt Apache Server
--------------------------------------------------------------------------------

Trong khi có rất nhiều các server thương mại tuyệt vời khác cho việc kiểm tra đánh giá các trang JSP (gồm có IBM WebSphere, BEA WebLogic, và nhiều cái khác), thì bạn có thể dùng một công cụ web server miễn phí, mã nguồn mở và bảo mật cực mạnh, tương thích với nhiều nền tảng là Apache Server. Bằng cách dùng chung nó với Tomcat Server của Dự án Jakarta (ta sẽ thảo luận sau), chúng ta có thể trao cho nó khả năng xử lý các trang JSP, cũng như các công nghệ có liên quan khác như Java Servlets và Enterprise Java Beans (EJBs)!

Để có một bản Apache, bạn lên Dự án Apache HTTP Server tại http://httpd.apache.org để tải về bản Apache Server for Win32 mới nhất.
http://apache.towardex.com/httpd/binaries/...-x86-no_ssl.msi

Chạy file .msi mà bạn có; phần documentation thì có trên website của Apache Server. Bạn hãy chạy Apache như là một Windows service nhé.

Chú ý: Do cách thức Tomcat Server (chúng ta sẽ nó đến việc cài đặt ở phần sau) tương tác với Apache, nên thư mục cài đặt Apache phải không chứa một khoảng trống nào. Vì thế bạn không thể cài đặt nó trong thư mục Program Files theo mặc định của Apache. Ví dụ, bạn hãy cài vào C:\, khi đó chương trình Apache 2.x sẽ copy các file của nó trong thư mục C:\Apache2\

Khi quá trình cài đặt này kết thúc thì bạn đã có trong máy tính của mình một Web server. Có thể bạn sẽ thấy một dòng lỗi nói rằng không có một dịch vụ nào được lập ra có tên là "Apache2". Đừng ngại, chúng ta sẽ xử lý sau.

Để cái server này làm việc theo ý bạn thì bạn cần ra quyết định cho nhiệm vụ của nó; nghĩa là config cho nó. Trên Start menu, vào Programs, Apache HTTP Server 2.0.47, Configure Apache Server, vào Edit the Apache httpd.conf Configuration File. Tìm dòng có chuỗi Listen 80. 80 là cổng mà Apache được nhiệm vụ gác. Nếu bạn đã cài một web server khác thì cổng 80 đã có thể được sử dụng rồi và bạn phải chọn một cổng khác cho Apache. Cổng phổ dụng nhất cho một web server thứ hai là 8080 nhưng ở đây chúng ta giả sử là chọn 8000.

Xuống dưới chút bạn sẽ thấy một dòng có chữ ServerName. Nếu có kí hiệu chú thích cho dòng đó hãy bỏ nó đi. Hãy đưa nó thành 127.0.0.1:8000 (trong đó 8000 là Listen port bạn đã lập ở trên) nếu như server của bạn không có hostname hoặc địa chỉ IP cố định.

Thế là xong phần httpd.conf. Lưu giữ lại sự thay đổi đó. Khởi động lại Apache. Nếu installer gặp khó khăn trong vấn đề khởi động server lúc ban đầu (ví dụ bạn nhận được thông báo 'no installed service named "Apache2"'), đầu tiên bạn sẽ cần cài đặt dịch vụ. Để làm vậy, bạn cần mở Command Prompt.
Để cài đặt dịch vụ Apache Server, bạn chạy apache.exe với tham số là -k install, tệp này nằm trong thư mục con mang tên bin trong thư mục cài đặt Apache2


C:\>cd \Apache\Apache2

C:\Apache\Apache2>bin\apache.exe -k install

C:\Apache\Apache2>exit

Khởi động lại server: Vào Start menu, vào Programs, Apache HTTPD Server, Control Apache Server, Restart. Apache Server Monitor trong khay hệ thống của Windows sẽ chuyển màu xanh thay vì màu đỏ. Apache đã chạy. Mở trình duyệt và gõ http://localhost (hay http://localhost:8000 nếu bạn đã thay đổi dòng Listen trong httpd.conf ).

Một trang với logo có chữ Powered by Apache ở cuối trang sẽ xuất hiện, nghĩa là Apache đã được cài đặt đúng. Xong việc!

Tải về và cài đặt Tomcat


--------------------------------------------------------------------------------


Bởi vì chú Apache không phải là một gã đa năng. Gã chỉ là một người chỉ tay năm ngón (JSP quá phức tạp để có thể chỉ dùng một module Apache đơn giản làm công việc hỗ trợ), làm công việc quản lý nên muốn lão giải quyết ba cái vụ JSP cho bạn thì hãy tuyển cho lão một nhân vật chuyên về JSP để đến khi chúng cần phân tích một trang JSP, chúng ta gửi một yêu cầu đến Apache và Apache sẽ xem xét. Thấy nó có đuôi JSP, gã sẽ tự động chuyển đến anh chàng phụ trách JSP. Vậy, chúng cần đến một chương trình hoàn toàn mới để xử lý các tác vụ liên quan đến JSP (nghe thì có vẻ như CGI nhưng hoàn toàn không phải thế). Chương trình đó có tên Tomcat, và là một dự án do Apache Group viết.

Tomcat trên thực tế tự nó đã là một Web server đơn giản. Nó không hỗ trợ tất cả các tính năng cao cấp của Apache, vì đấy đâu phải nghề của nó! Kết hợp Tomcat và Apache lại, bạn có một hệ thống hỗ trợ JSP đầy đủ trong khi vẫn bảo đảm được hiệu suất làm việc cũng như tính khả mở (PHP, Perl, SSL, etc.) của Apache.

Để chạy được chương trình Mèo Tôm, vốn là một lão Java và giúp Mèo Tôm xử lý được vụ JerrySP, đầu tiên bạn cần cài đặt Java 2 Software Development Kit (Java 2 SDK). Nhớ cài Java 2 SDK cho Win32 chứ không phải là JRE nhé. Giả sử ta nhốt chú J2SE này trong C:\j2sdk1.4.2. Hãy đưa thư mục C:\j2sdk1.4.2\bin vào PATH hệ thống của bạn (tôi đã viết trong một bài khác - CEO).

Tải về bản TomCat mới nhất từ trang dự án Jakarta: http://jakarta.apache.org/builds/jakarta-t...se/v4.1.24/bin/ hay http://cvs.apache.org/builds/jakarta-tomcat-5/nightly/. Bản 5.0.x hiện đã có đến bản 5.0.4 Alpha và bạn nên cài đặt bản này vì Tomcat thế hệ thứ 3 và 4 sẽ trở thành các phiên bản cũ kĩ khi mà vào cuối năm nay Sun và hệ thống các công ty hỗ trợ Java sẽ chính thức tung ra đặc tả JSP 2.0 và Servlet 2.4 với nhiều thay đỏi và các tính năng mạnh mẽ hơn. Cách cài Tomcat 5.0.3 thì tôi đã viết trong một bài khác. Ở đây tôi giới thiệu các cài jakarta-tomcat-4.1.18-LE-jdk14, bản Tomcat được dùng phổ biến nhất hiện nay.

Lấy về xong thì giải nén vào C:\Apache2. TomCat sẽ được đưa vào một thư mục có tên jakarta-tomcat-4.1.18-LE-jdk14.

Tomcat đòi hỏi bạn phải thiết lập một số biến môi trường trước thì nó mói chịu chạy đúng cho. Làm thế nào thì còn tuỳ thuộc vào phiên bản Windows mà bạn dùng. Windows 98 trở về trước thì mở C:\autoexec.bat trong Notepad và thêm vào 2 dòng kiểu như:

SET JAVA_HOME=C:\j2sdk1.4.2
SET CATALINA_HOME=C:\Apache2\Tomcat

Khởi động lại hệ thống.

Trong ME, bạn chạy MSConfig (Start -> Run -> gõ msconfig and click OK). Trong tab 'Environment' , thêm vào 2 biến trên (JAVA_HOME, CATALINA_HOME) cùng với giá trị đi kèm với chúng, và đánh dấu check để chúng enabled. Kích OK rồi reboot. Nếu Windows vẫn không kích hoạt các thay đổi này thì bạn cần làm lại thêm lần nữa.

Trong Windows NT/2000/XP, 2 biến trên cần được đưa vào vị trí của các biến môi trường cấp hệ thống. Hãy đăng nhập vào dưới tư cách là một administrator và đưa các biến hệ thống vào thông qua tab Environment của cửa sổ System Properties (trong XP, kích nút Environment Variables ở cuối tab này và bổ sung thêm một số biến môi trường thì coi như bạn đã có Tomcat.
Để thử nghiệm, bạn mở cửa sổ MS-DOS Prompt gõ dòng sau và ấn Enter:

"%CATALINA_HOME%"\bin\startup (minh họa)

Bạn có thể thấy một thông báo lỗi "Out of environment space", và cửa sổ mở ra để chạy Tomcat sẽ nhanh chóng đóng lại vì lỗi trên. Để sửa lỗi, hãy kích chuột vào icon bé tẹo bên góc trái cao nhất của cửa sổ MS-DOS Prompt và chọn Properties từ menu. Trên tab Memory, thay đổi thiết lập môi trường Initial thành 4096. Kích OK, và đóng cửa sổ đó lại và mở một cửa sổ mới trước khi bắt đầu làm lại.

Nếu mọi việc xuôn xẻ, câu lệnh startup sẽ hiển thị các giá trị của một số biến môi trường, và sau đó Tomcat sẽ mở ra một cửa sổ mới có tiêu đề Tomcat. Cửa sổ đó sẽ hiển thị một số thông báo ngắn rằng 'Tomcat-Standalone' đang chạy. Chúc mừng -- Tomcat đang hoạt động!

Tomcat tự nó đã là một web server đơn giản, và chúng ta có thể sử dụng tính năng này để xem nó hoạt động đã đúng chưa. Web server của Tomcat được thiết lập để sử dụng cổng 8080 làm mặc định, do vậy hãy mở Web browser của bạn và gõ địa chỉ http://localhost:8080/. Bạn sẽ thấy trang chủ của Tomcat, với các liên kết đến một số ví dụ đã nằm sẵn trên server đó.

Bạn hãy thử dùng các ví dụ đó và chú ý rằng trong lần đầu tiên thì các ví dụ JSP chạy khá chậm nhưng trong những lần truy cập sau đó thì tốc độ lại cực kì nhanh. Điều này là do khi một trang JSP được truy cập lần đầu tiên thì Tomcat cần biên dịch nó thành một Java Servlet, vốn là một mẩu mã Java thuần tuý mà có thể chạy rất nhanh để xử lý các yêu cầu. Servlet đó sau đấy sẽ được giữ trong bộ nhớ để xử lý các yêu cầu đến sau đó hướng đến cùng một trang JSP với một tốc độ nhanh khủng khiếp.

Sau khi thực hiện xong các thiết lập với Tomcat, bạn hãy đóng chương trình này lại bằng cách chạy lệnh shutdown theo cùng một cách mà bạn đã dùng lệnh startup ("%CATALINA_HOME%"\bin\shutdown). Của sổ Tomcat sẽ đóng lại một ít giây sau đó.

Chạy Tomcat một cách tự động
Nếu bạn đã cài đặt Apache để nó chạy tự động như là một dịch vụ thì bạn có thể muốn làm được một điều tương tự với Tomcat. Không may là không có cách nào tự động hoá quá trình chuyển Tomcat thành một dịch vụ dưới Windows 95/98/ME. Một số người sành sử dụng một công cụ biên tập registry có thể đưa nó chạy tự động lúc startup, nhưng vấn đề environment space đã sửa chữa ở trên lại có thể xuất hiện trở lại. Thay thế cho cách làm này chúng ta hãy tạo ra một file startup.bat file trong thư mục bin của Tomcat và đặt shortcut của nó vào thư mục Startup của bạn. Hãy điều chỉnh environment space của shortcut đó như mô tả ở trên nếu cần. Bạn sẽ liên tục phải thấy một cửa sổ 'java' window mà Tomcat hiển thị khi chạy (mặc dù nhiều người phiêu lưu có thể cố gắng viết lại mã kịch bản trong startup.bat của Tomcat để sử dụng javaw.exe thay vì java.exe để chạy chương trình mà không có cửa sổ DOS!).

Trong Windows NT/2000/XP, Tomcat có thể chạy như là một dịch vụ giống như Apache. Bình thường thì khi tôi cài đặt Tomcat 5.0.3 trên Windows XP SP1 thì chỉ cần chọn cài đặt Tomcat như là một dịch vụ đã đủ. Nhưng với Tomcat 4 và các hệ điều hành khác XP thì các bạn có thể phải làm thêm một số bước. Để làm được điều này bạn cần phải gõ một lô một lốc các câu lệnh khó chịu trong MS-DOS Command Prompt, nhưng bạn cũng phải làm điều đó một lần mà tốt nhất là copy các dòng lệnh dưới đây vào một file .bat để thực thi. Đây là câu lệnh:

"%CATALINA_HOME%\bin\tomcat.exe" -install Tomcat "%JAVA_HOME%\jre\bin\server\jvm.dll" -Djava.class.path="%CATALINA_HOME%\bin\bootstrap.jar;%JAVA_HOME%\lib\tools.jar" -Dcatalina.home="%CATALINA_HOME%" -start org.apache.catalina.startup.BootstrapService -params start -stop org.apache.catalina.startup.BootstrapService -params stop -out "%CATALINA_HOME%"\logs\stdout.log -err "%CATALINA_HOME%"\logs\stderr.log

Khi bạn chạy câu lệnh này, bạn sẽ nhận được một dòng thông báo sau "The service was successfully installed." Kể từ thời điểm đó, Tomcat sẽ tự động chạy mỗi lần hệ thống khởi động lại, và có thể chạy khi bạn khởi động nó và làm ngừng nó từ applet Services trong Windows Control Panel (dưới Administrative Tools). Bạn có thể chạy hoặc làm ngừng Tomcat bằng cách gõ NET START TOMCAT và NET STOP TOMCAT ở MS-DOS Command Prompt. Nếu bạn cài đặt Tomcat vào thư mục Tomcat4 thì bạn gõ NET START TOMCAT4...Minh họa

Nếu có một lúc nào đó bạn muốn uninstall dịch vụ Tomcat, bạn hãy dùng câu lệnh sau:

"%CATALINA_HOME%\bin\tomcat.exe" -uninstall Tomcat

Liên kết Apache và Tomcat bằng mod_jk
Bây giờ khi bạn đã có Apache và Tomcat chạy song song bên nhau, bạn cần liên kết chúng lại với nhau để Apache có thể xử lý các yêu cầu JSP bằng cách chuyển chúng về Tomcat. Thực sự ban có tới vài ba cách để làm điều đó, và tất cả điều liên quan đến việc cài đặt một môn đun Apache. Giải pháp đầu tiên là dùng mod_jk, một môn đun được thiết kế để Tomcat 3.x có thể làm việc được với nhiều server và nó sử dụng một giao thức khá hiệu quả để giao tiếp với Tomcat.

Với Tomcat 4.0, một cơ chế mới dùng vào việc liên kết Apache và Tomcat đã đưa đưa ra: mod_webapp. Mô đun Apache này cung cấp một đường truyền thông hiệu quả giữa Apache và Tomcat, và nó cực kì dễ lên cấu hình. Không may, nhà phát triển phụ trách về mod_webapp lại rất không ưa Windows, do vậy mod_webapp không làm việc một cách ổn định trên nền tảng đó.

Cuối cùng, một cơ chế hoạt động chắp vá của mod_jk có tên mod_jk2 đã xuất hiện trong Tomcat 4.1. Nó được viết ra đê có tính mô đun hơn, tạo hiệu quả hoạt động cao hơn, và cải thiện tính dễ sử dụng. Không may, tài liệu về mod_jk2 vẫn chỉ là một bản phác thảo; do vậy, mod_jk sẽ là môn đun mà chúng ra sẽ cài đặt trong bài viết này.

Cơ chế mod_jk
mod_jk chia làm 2 phần: một trình bổ trợ connector dùng cho Tomcat và một môn đun Apache. Trình bổ trợ connector có trong tất cả các bản Tomcat 4.1. Phần còn lại là một môn đun Apache module, ta sẽ bàn sau.

Do Apache 2.0 còn đang trong quá trình xây dựng nên nó liên tục thay đổi, các phiên bản cũ hơn của môn đun mod_jk sẽ có thể thường xuyên không tương thích với các phiên bản mới hơn của Apache 2.0. Nói chung là bạn cần phải có một bản mod_jk đã được biên dịch sau phiên bản Apache 2.0 mà bạn muốn sử dụng. Nhóm Jakarta luôn cố gắng phát hành một bản mod_jk tải về được và tương thích với phiên bản Apache 2.0 mới nhất trên web site của họ.

http://jakarta.apache.org/builds/jakarta-t....2.2/bin/win32/. Hiện tại file này có tên mod_jk-2.0.45.dll để nói rõ rằng nó được biên dịch để làm việc với Apache 2.0.45. Tải file này về và đặt tên nó là mod_jk.dll, và sao chép nó vào thư mục con modules trong thư mục cài đặt Apache 2.0 (C:\Apache\Apache2\modules).

Khi môn đun Apache đã được cài đặt và trình bổ trợ của Tomcat cũng đã được đưa vào trong server, thì chúng ta phải cấu hình cho cả Apache lẫn Tomcat để có thể sử dụng mod_jk trong việc kết nối hoạt động của hai chương trình này với nhau.

Lên cấu hình cho Tomcat
Để dùng mod_jk với Tomcat, bạn hãy đặt file server.xml vào thư mục con conf nằm trong thư mục chứa Tomcat và mở nó trong một trình soạn thảo text nào đó như Notepad.

Tìm đến thẻ <Server port="8005" ...> nằm gần đầu file và thêm vào như sau:

<Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" modJk="c:/Apache/Apache2/modules/mod_jk.dll" jkDebug="info" workersConfig="c:/Apache/Tomcat/conf/jk/workers.properties" jkLog="c:/Apache/Tomcat/logs/mod_jk.log" />


Hoặc thay thế các đường dẫn in đậm với các dòng trên nếu chúng khác biệt.

Tìm đến giữa file, tìm thẻ <Host name="localhost" ...> và thêm dòng sau đây vào ngay sau đó:

<Listener className="org.apache.ajp.tomcat4.config.ApacheConfig" append="true" />


Đóng server.xml, và sau đó tạo ra một thư mục mới có tên jk nằm trong thư mục đó (conf). Thư mục này là nơi chúng ta sẽ tạo ra file workers.properties đã nhắc đến trong thẻ <Listener> đầu tiên ở trên. Mở trình soạn thảo text ưa thích của bạn (notepad, editplus..) và gõ đoạn mã sau vào:

workers.tomcat_home=c:\Apache\Tomcat workers.java_home=$(JAVA_HOME) workers.th=$(workers.tomcat_home) ps=\ worker.list=ajp13, ajp14 worker.ajp13.port=8009 worker.ajp13.host=localhost worker.ajp13.type=ajp13 worker.ajp13.lbfactor=1 worker.ajp14.port=8010 worker.ajp14.host=localhost worker.ajp14.type=ajp14 worker.ajp14.secretkey=secret worker.ajp14.credentials=myveryrandomentropy worker.ajp14.lbfactor=1 worker.loadbalancer.type=lb worker.loadbalancer.balanced_workers=ajp13 worker.inprocess.type=jni worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)tomcat.jar worker.inprocess.cmd_line=start worker.inprocess.jvm_lib=$(workers.th)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll worker.inprocess.stdout=$(workers.th)$(ps)logs$(ps)inprocess.stdout worker.inprocess.stderr=$(workers.th)$(ps)logs$(ps)inprocess.stderr


Điều chỉnh dòng tomcat_home in đậm ở trên cho phù hợp với cách cài đặt TomCat của bạn. Lưu file chứa các dòng trên vào một file có tên workers.properties nằm trong thư mục jk mới tạo.

Khởi động lại Tomcat. Nếu bạn bỏ qua một bước nào đó thì Tomcat sẽ tự động tạo ra một thư mục khác nằm trong thư mục conf của nó có tên là auto và trong đó thì có một file là mod_jk.conf. File này chứa mọi thứ mà Apache cần biết để sử dụng Tomcat trong việc xử lý các trang JSP.

Lên cấu hình cho Apache
Do Tomcat tự động tạo ra tất cả các thông tin cấu hình cho Apache trong tệp tin mod_jk.conf, nên tất cả những gì mà chúng ta cần làm là chỉ cho Apache biết file đó! Trên menu Start, vào Programs, Apache HTTP Server, Configure Apache Server, Edit the Apache httpd.conf Configuration File. Cuộn xuống chừng 1/4 file để đến mục có tiêu đề Dynamic Shared Object (DSO) Support. Sau các dòng LoadModule xuất hiện dưới tiêu đề này, bạn thêm dòng sau (nhớ điều chỉnh cho phù hợp với thư mục Tomcat của bạn):

Include "C:/Apache/Tomcat/conf/auto/mod_jk.conf"

Sau đó hãy lưu sự thay đổi này vào httpd.conf, và khởi động lại Apache. Bạn có thể sử dụng icon Test Configuration trên Start Menu dưới mục Configure Apache Server nếu bạn thấy việc khởi động lại Apache gây phiền phức. Để thử nghiệm bạn nên truy cập đến http://localhost:8080/examples/jsp/ (từ Tomcat), hay http://localhost/examples/jsp/ (từ Apache -- và thêm :8000 nếu bạn đã chuyển Apache đến cổng đó trong quá trình cài đặt).

Một trang JSP đơn giản
Bây giờ là lúc thử nghiệm một trang JSP đơn giản trong môi trường Java mà bạn đã kì công thiết lập. Chúng ta sẽ tạo ra một trang hoạt động như là một cỗ bộ máy hậu trường, chỉ phục vụ việc đếm số lượt truy cập vào trang đó.

Mở NotePad hoặc một cái gì đó tương tự và gõ vào:

<hr />This example brought to you by JSP and SitePoint.com!

Lưu file này thành theEnd.html trong một thư mục con mới nằm trong thư mục webapps của Tomcat (thư mục tạo sẵn nhằm mục đích chứa các ứng dụng web) và gọi tên nó là count. Mở Notepad và gõ các dòng sau vào:


<%@ page language="Java" %> <html> <head> <title>Trang JSP đầu tiên của tôi</title> </head> <body> <p> <% String num = request.getParameter("num"); if (num == null) { // Nếu không có yêu cầu nào gửi đến thì không xác định con số đếm // Hiển thị biểu mẫu %> <form action="<%= HttpUtils.getRequestURL(request) %>"> Tôi có nên đếm đến? <input type="text" size="2" name="num" /> <input type="submit" /> </form> <% } else for (int i=1; i<=Integer.parseInt(num); i++) { %> Đếm đến: <%= i %><br /> <% } %> </p> <%@ include file="theEnd.html" %> </body> </html>


Lưu file này dưới cái tên count.jsp trong thư mục jsp mới cùng với theEnd.html.

Bây giờ để cho 2 file này có thể nhận biết được, bạn cần tạo ra một ưng dụng Web Java để chứa chúng. Hãy tạo ra một thư mục con nằm trong thư mục jsp mới có tên là WEB-INF. Trong thư mục đó, tạo ra một file văn bản có tên web.xml và nhập các mã sau vào đó:

<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> </web-app>


Lưu file và khởi động lại Tomcat hoặc hệ thống để Tomcat có thể nhận biết được ứng dụng web mới. Bạn có thể xem trang này bằng Tomcat ở địa chỉ URL http://localhost:8080/sitepoint/count.jsp.

Để cho Apache biết được ứng dụng web của bạn là có tồn tại thực thì bạn chỉ cần khởi động lại Apache. Khi bạn khởi động lại Tomcat, nó sẽ tạo ra một file cấu hình mới cho Apache; việc khởi động lại Apache giúp web server này có thời gian đọc thông tin trong file cấu hình mới này và đưa ứng dụng web của bạn vào phạm vi phục vụ của nó. Hãy nhớ là mỗi khi bạn đưa vào thêm một ứng dụng web mới cho Tomcat thì bạn cần làm tuần tự "Restart Tomcat, Restart Apache";

Sau khi Apache đã hoạt đọng lại thì bạn hãy truy cập vào địa chỉ http://localhost/sitepoint/count.jsp (nếu Apache của bạn chạy trên cổng 8000 thì hãy thêm vào sau chữ localhost một chuỗi :8000). Và kết quả là bạn đã chạy được các file JSP từ Apache!

Thứ Ba, 23 tháng 11, 2010

Hai mươi mở rộng cần phải có trên FireFox (phần đầu)

Các thành phần mở rộng này cung cấp tính năng tăng cường, cái nhìn và cảm nhận tốt hơn, đồng thời còn phân loại dòng công việc phát triển cho bạn. Một trong số đó khá đơn giản nhưng thực sự tuyệt vời.

FireFox là gói phần mềm trình duyệt nguồn mở được ưa chuộng nhất hiện nay, ngang ngửa với Internet Explorer của Microsoft. Điều khiến trình duyệt này trở nên đặc biệt là khả năng tuỳ biến với các mở rộng và khung nền (theme) đa dạng, giúp người dùng hoàn toàn có thể xây dựng một trình duyệt riêng theo ý mình. Nhưng cũng do có quá nhiều thành phần mở rộng nên khiến chúng ta đau đầu, không biết phải cài đặt mở rộng nào và bỏ qua mở rộng nào cho hợp lý.

Vấn đề đó cũng chính là là nội dung chúng ta sẽ quan tâm tới trong bài này. Chúng ta sẽ khám phá 20 mở rộng cùng với các thành phần bổ sung (add-in) được dùng phổ biến nhất, theo lời khuyên của những người lướt Web giàu kinh nghiệm, các nhà phát triển và chuyên gia IT. Liệu có phải bạn đang tìm kiếm khả năng phân dòng lướt web hiệu quả hơn, khả năng nâng cao cho con mắt nhìn và cảm nhận, các công cụ thiết kế tốt hay sự trợ giúp phát triển Web nghiêm túc? Vâng, tất cả ở đây.

Các công cụ thuần thục cho Web

StumbleUpon

Đầu tiên là một cảnh báo: StumbleUpon khá nguy hiểm cho hiệu suất công việc! Nó là một trong các ứng dụng Web mạng xã hội vốn ngày càng phổ biến trong thời gian gần đây. Nó cung cấp cách tìm website mới có thể bạn sẽ thấy thú vị và hữu ích.

Mở rộng này sẽ thêm một thanh công cụ StumbleUpon vào FireFox. Tất cả các tính năng chính của StumbleUpon đều có thể sử dụng qua toobar này, nhưng nhớ phải thiết lập một tài khoản trước. Khi đăng ký, bạn sẽ cần lựa chọn một số chủ đề khởi đầu với một số kiểu website yêu thích (như: lịch sử cổ đại, tâm lý con người, cách thức nâng cao bản thân…), nhưng hoàn toàn có thể xem xét đến vấn đề này ở sau.


Thanh công cụ của StumbleUpon
Sau khi cài đặt xong, bạn kích vào nút Stumble! trên toolbar để sử dụng một website ngẫu nhiên có trong danh sách. Nếu không thích website này, kích vào nút Thumbs, nếu muốn thì kích vào nút Thumbs Up. Các website được đưa ra càng nhiều, Stumbles càng khớp chính xác sở thích của bạn. Nếu website đưa ra chưa có trong cơ sở dữ liệu StumbleUpon, bạn có thể nhập một số thông tin cơ bản của nó vào để không bị nhầm lẫn với website khác.

Không phải lúc nào cũng nên dùng StumbleUpon, nhưng nó khá vui nhộn và có thể đưa bạn trở lại tất cả các website thú vị của những ngày lướt Net trước đây.

Bạn có thể download về từ website: addons.mozilla.org/firefox/138

Gmail Manager & Yahoo Mail Notifier

Hai mở rộng này thực hiện một số hoạt động cơ bản cho các dịch vụ Web mail tương ứng.

Yahoo Mail Notifier khá đơn giản. Nó chỉ có một biểu tượng phong bì thư nhỏ được đặt trên thanh trạng thái (status bar), hiển thị thông báo cho người dùng biết có bao nhiêu mail mới trong tài khoản yahoo mail của bạn. Một danh sách pop-up nhỏ sẽ được đưa ra nhằm thu hút sự chú ý của người dùng khi có thư mới. Kích vào biểu tượng, bạn có thể vào thẳng Yahoo mail.

Phiên bản sử dụng: 0.9.9.2
Tải về tại addons.mozilla.org/firefox/1264.

Gmail Manager có thể thực hiện tất cả công việc như của Yahoo Mail Notifier, cùng với một số chức năng khác. Nếu đưa chuột lên trên Gmail Mangager, bạn sẽ biết được tổng số thư mới nhận được là bao nhiêu, có bao nhiêu thư rác, nhãn trên từng thư và không gian hòm thư đã sử dụng. Bên dưới là danh sách 10 thư mới nhất, với thông tin From, Subject và dòng đầu tiên trong thư. Bạn có thể tắt chức năng hiển thị các thông tin này. Trình quản lý cũng hỗ trợ đa tài khoản Gmail. Bạn có thể thiết lập liên kết mở tới cửa sổ soạn thảo thư mới trong Gmail.

Thông báo pop-up của Gmail Manager

Download tại địa chỉ
: addons.mozilla.org/firefox/1320

Greasemonkey

Greasemonkey không dành cho những trái tim yếu bóng vía. Về cơ bản, nó cho phép bạn thêm JavaScript vào tất cả các trang Web, nhưng để viết ra được các kịch bản này đòi hỏi bạn phải có kiến thức tốt về script. Song, có không ít người dùng sẵn sàng chia sẻ các script mà họ đã tạo với bạn.

Trong lần cài đặt đầu tiên, Greasemonkey không thực hiện gì cả. Nó chỉ cho phép các hoạt động scripting. Bạn phải viết, cài đặt và cấu hình script trước khi thấy có bất kỳ thay đổi nào trên các trang Web.

Vậy các script này thực hiện những gì? Câu trả lời là nó có thể làm được gần như bất kỳ cái gì có thể làm trên JavaScript. Ví dụ, tôi dùng cả Gmail của Google và các dịch vụ Reader. Có một script khiến Reader xuất hiện trên cùng một trang như Gmail. Đó là thay đổi khá lớn. (Thật dễ dàng để ngắt một script, và còn dễ dàng hơn khi gỡ bỏ Greasemonkey trong trường hợp bạn cần phục hồi lại một thay đổi).

Bạn muốn kết quả tìm kiếm của Google xuất hiện trong hai cột?
Đã có một script Greasemonkey giúp đỡ bạn.
Có nhiều script thực hiện công việc nhỏ như loại bỏ chức năng Edit trên Wikipedia. Hầu hết chúng ta sẽ chẳng bao giờ chỉnh sửa các trang này. Vì thế, tại sao không xoá chúng đi một chút? Một script khác, như bạn thấy ở hình bên, biến kết quả tìm kiếm trên Google thành hai cột, giúp người dùng khai thác hiệu quả hơn với không gian màn hình lớn. Con người không bao giờ ngừng sáng tạo ra khả năng mới!

Hãy xem trên website userscript.org để có được script thú vị và phù hợp. Nếu bạn muốn viết các script riêng, tham khảo trên diveintogreasemonkey.org, hoặc Greasemonkey Hacks của Mark Pilgrim do O’Reilly Media cung cấp.

Tải về tại: addons.mozilla.org/firefox/748

Các nâng cao trực quan

FireFox Showcase

FireFox Showcase là thành phần mở rộng tuyệt vời, bởi sự tiện lợi cũng như việc sử dụng một chức năng nâng cao của Internet Explorer 7 trong FireFox: hiển thị tất cả cửa sổ nhỏ của các chương trình và tab đang mở.

Sau khi cài đặt xong, một thực đơn Showcase con mới sẽ xuất hiện bên dưới menu View. Từ dó, bạn có thể chọn hiển thị tất cả khung nhỏ của các tab trong cửa sổ hiện tại hoặc tất cả các tab trên mọi cửa sổ. (Trong khi đó IE7 chỉ hiển thị khung nhỏ của các tab trong một cửa sổ cụ thể).

Ngoài ra, bạn còn có thể chọn hiển thị các khung ảnh nhỏ trong tab mới hoặc trong một cửa sổ nổi.

Chức năng của FireFox Showcase
Bạn cũng có được một số tuỳ chọn mới bên dưới thực đơn con Sidebar: lựa chọn mở các tab từ cửa sổ hiện tại hoặc từ tất cả các cửa sổ, trong sidebar của FireFox. Không có vấn đề gì khó khăn nếu bạn muốn chọn kiểu hiển thị các khung ảnh nhỏ. Chỉ cần kích vào một trong các khung ảnh để nối kết window/tab.

Nếu thẩy rằng mở rộng này quá phức tạp, bạn có thể bỏ qua một cách an toàn một số tuỳ chọn và chỉ sử dụng theo cấu hình mặc định của nó.

Nếu bạn có thói quen đều đặn tự tìm cho mình lớp sóng trong các tab mở, kích quanh và tìm ra đúng trang mình cần. FireFox Showcase sẽ tiết kiệm cho bạn nhiều công sức và sự bực mình.

Tải về tại: addons.mozilla.org/firefox/1810

Cooliris Previews

Mở rộng thú vị này cho phép bạn xem trước một trang Web trước khi thực sự mở nó. Sau khi cài đặt xong Cooliris Previews, một biểu tượng màu xanh nhỏ sẽ xuất hiện bên cạnh bất kỳ liên kết nào bạn di chuột đến. Khi trỏ chuột đặt lên biểu tượng, nội dung của trang được thể hiện. Khi bạn di chuột ra ngoài biểu tượng màu xanh và cửa sổ pop-up, nội dung xem trước sẽ biến mất. Ở phía trên cửa sổ pop-up là một số biểu tượng bổ sung, cho phép bạn khoá cửa sổ mở, mở phần xem trước trong tab mới, gửi theo hình thức thư điện tử đến cho một người bạn (nhưng phải đăng ký tài khoản tại Cooliris Website), đóng cửa sổ hoặc dùng nút Back. Bạn có thể cho chuột lướt quanh cửa sổ xem trước này, sau đó là nút Back.

Khung xem trước trên Cooliris Preview của một video trên YouTube
Thực ra mở rộng này mang tính gọn gàng hơn là hữu ích. Nhưng với những website như YouTube, preview được nâng cao. Nếu bạn xem trước một liên kết tới YouTube, chỉ có video được mở trong cửa sổ preview.

Ngoài Preview, Cooliris còn thêm chức năng tìm kiếm dựa theo ngữ cảnh trên menu chuột phải. Đánh dấu từ hoặc cụm từ trên một trang, kích phải chuột rồi Cooliris Search, sau đó sử dụng một trong các trang thefreedictionary.com, Google Images, Google Search hay Wikipedia để tìm kiếm. Nếu di chuột qua một trong bốn lựa chọn, kết quả sẽ hiển thị trong cửa sổ preview. Nếu bạn kích vào chúng sẽ mở ra trong tab mới.

Nếu cửa sổ preview xuất hiện quá nhiều, bạn có thể loại bỏ dễ dàng bằng cách kích vào một biểu tượng trong thanh trạng thái. Bạn có thể ngừng hoặc cho phép xem trước từng trang liên tiếp.

Tải về tại: addons.mozilla.org/firefox/2207

Colorful Tabs và ChromaTabs

Colorful Tabs khá cơ bản. Nó tô màu cho các tab với gam nhạt dễ chịu. Sau một ngày dài tìm kiếm, màu sắc dịu nhẹ sẽ giúp dôi mắt mệt mỏi của bạn được thư giãn.

Colorful Tabs tạo cảm giá thoải mái cho đôi mắt mệt mỏi.
Màu sắc cho mõi tab được đặt ngẫu nhiên.
Phiên bản mới nhất đòi hỏi từ FireFox 2.0 trở đi. Với các bản FireFox cũ hơn, bạn có thể dùng Colorful Tabs v1.4. Xem liên kết sau để biết thêm chi tiết.

Tải về tại: addons.mozilla.org/firefox/1368

ChoromaTabs khá giống với Colorful Tabs. Chỉ có một điểm khác là ChromaTabs xác định màu sắc cho tab theo tên hostname trong đường dẫn URL. Nếu lướt qua trang web khác, màu cho tab sẽ thay đổi.

ChromaTabs trông tương tự, nhưng màu sắc cho tab được gán theo tên miền.

Tải về tại: addons.mozilla.org/firefox/3810.

Đó là sở thích cá nhân. Colorful Tabs gán màu sắc tab ngẫu nhiên. Cho đến chừng nào tab còn mở thì màu sắc cho nó luôn được giữ nguyên, không quan tâm tới chỗ nào bạn lướt đến. Với ChromaTabs, màu sắc là luân phiên (một số sẽ không hấp dẫn lắm).

Thứ Hai, 22 tháng 11, 2010

CSS LÀM VIỆC TỐT VỚI CÁC TRÌNH DUYỆT

Một điều đau đầu với những người làm việc với CSS đó là việc các trình duyệt (browser) hiển thị website theo cách không hề giống nhau. Điều này là do các định dạng mặc định (default styles) của mỗi browser khác nhau. Vậy, làm sao để hạn chế được thấp nhất các vấn đề có thể nảy sinh với browser khi làm việc với CSS. Có thể, bạn đã có lựa chọn của mình, ở đây sẽ có thêm 1 lựa chọn nữa cho bạn.
Với đoạn mã CSS dưới đây, bạn sẽ loại bỏ được gần như hoàn toàn những định dạng mặc định của các browser.

CSS: 
/* Normalize padding and margins */
body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre,
form, fieldset, input, p, blockquote, th, td {
margin: 0;
padding: 0;
}

/* Normalize header sizes */
h1, h2, h3, h4, h5, h6 {
font-size: 100%;
}

/* Normalize list styles */
ol, ul {
list-style: none;
}

/* Normalize font style and weight on odd elements */
address, caption, cite, code, dfn, em, strong, th, var {
font-style: normal;
font-weight: normal;
}

/* Normalize table borders */
table {
border-collapse: collapse;
border-spacing: 0;
}

/* Normalize other borders */
fieldset, img {
border: 0;
}

/* Normalize text-alignment */
caption, th {
text-align: left;
}

/* Normalize (remove) quotation marks */
q:before, q:after {
content: '';
} 

Chú ý: Với đoạn mã trên chỉ giúp bạn tránh được nhiều vấn đề gặp phải với CSS, nhưng không phải tất cả. Vì thế, khi gặp những vấn đề liên quan đến CSS, có lẽ Google  là người trợ giúp tốt nhất.

Kỹ thuật tải ảnh trước bằng CSS

Trong file CSS của bạn có sử dụng đến một số ảnh background, nhưng những ảnh đó sẽ không được trình duyệt tải về trong bộ đệm (cache) trên máy ngay từ đầu, mà khi nào sử dụng đến thì nó mới được tải về. Chính vì vậy đôi khi nó sẽ sinh ra độ trễ khi chúng ta lần đầu tiên khi vào trang Web.
Chúng ta lấy một ví dụ như sau: Giả sử rằng trong thẻ <a> của bạn có sử dụng hai ảnh, một ảnh làm dùng để hiển thị ngay từ đầu, còn một ảnh khác sử dụng cho thuộc tính :hover. KHi lần đầu tiên bạn vào Website khi hover chuột lên thẻ <a> đó thì nó sẽ không hiển thị anh thử hai ngay mà sau một khoảng thời gian khoảng 2 đến 3 giây sau thì mới hiện tùy theo tốc độ đường truyền.
Để khắc phục điều đó chúng ta có một thủ thuật (tips) nhỏ như sau:
Đối với một số ảnh mà chúng ta cần sử dụng làm background trong file css, mà chúng ta không muốn có độ trễ như ví dụ trên thì chúng ta cần có biện pháp tải trước những ảnh đó về máy.
Chúng ta sẽ đặt toàn bộ các ảnh mà muốn tải trước về vào trong một thẻ CSS như sau:
1.#preLoadImages {
2.width0px;
3.height0px;
4.backgroundurl(../images/anh1.gif);
5.backgroundurl(../images/anh2.gif);
6.backgroundurl('/../images/anh3.gif');
7....
8.}
Bạn có thể đặt đoạn mã CSS trên vào trong file CSS của bạn, hoặc đặt vào trong thẻ <head> của trang. Ví dụ
01.<html>
02.<head>
03.<style type="text/css">
04.#preLoadImages {
05.width: 0px;
06.height: 0px;
07.background: url(../images/anh1.gif);
08.background: url(../images/anh2.gif);
09.background: url('/../images/anh3.gif');
10....
11.}
12.</style>
13.</head>
Sau đó chúng ta đặt đoạn thẻ <div id="prLoadImages"> trên vào ngay dưới thẻ <body> củaWebsite của bạn. Khi trình duyệt đọc tới thẻ <div> đó nó sẽ load toàn bộ những ảnh được liệt kê trong danh sách trên vào trong bộ đệm của trình duyệt.
1.<body>
2.<div id="preLoadImages"></div>
3....