Struts 1.x với NetBeans
Trong bài này, tôi sẽ giới thiệu với các bạn 1 ví dụ về làm việc với Struts 1x trong môi trường tích hợp phát triển NetBeans 6. Bạn có thể download NetBeans tại địa chỉ http://www.netbeans.org/.
Ta sẽ phát triển một ứng dụng demo có tên LogonApp với mục đích cho người dùng nhập vào username, password, nếu username=ty, password=teo thì thành công và chuyển tới trang success.jsp còn không thì sẽ chuyển đến trang failed.jsp.
Sau khi cài đặt và khởi động thành công NetBeans, vào menu File->New Project, chọn lựa Web categories, project là Web Application như hình sau

Nhấn Next, đặt tên cho project là LogonApp. Nhấn Next, chọn server là Apache Tomcat. Nhấn Next, chọn Framework là Struts 1.2.9 như hình

Nhấn Finish để hoàn tất việc tạo project. Trong cửa sổ Project ta có cấu trúc của project chúng ta mới thêm vào như sau:

Bạn có thể xóa 2 file jsp index.jsp và welcomeStruts.jsp để thêm vào các trang của chúng ta bằng cách chọn file cần xóa, nhấn phím Delete, chấp nhận các cảnh báo.
Bây giờ bạn thêm vào 1 Struts ActionForm Bean bằng cách nhấn phải chuột lên thư mục Source packages chọn New->Others, chọn Categories và file types như hình sau

Nhấn Next, gõ Class Name của action form là LogonActionForm, gõ ở mục package tên gói là vovanhai.wordpress.com. Nhấn Finish để hoàn tất việc thêm form.
Mặc định, NetBeans sẽ tự động tạo 1 bean gồm 2 thuộc tính name và number cùng các phương thức setters, getters,…. Bạn xóa bỏ các thuộc tình và các phương thức trong lớp này thêm vào các thuộc tính của chúng ta mong muốn. Code hoàn chỉnh của form này như sau:
| package vovanhai.wordpress.com;
public class LogonActionForm extends org.apache.struts.action.ActionForm { public LogonActionForm(){ public String getPassword() { public void setPassword(String password) { public String getUsername() { public void setUsername(String username) { |
Tiếp tục, ta thêm vào 1 Struts Action như cách thêm ở trên nhưng chọn File types là Struts Action. Đặt tên cho nó là LogonAction, nhấn Next, chọn các cấu hình như hình sau:

Nhấn Next, cấu hình tiếp theo như hình sau

Nhấn Finish. Code của action được cho như sau:
| package vovanhai.wordpress.com;
import javax.servlet.http.HttpServletRequest; import org.apache.struts.action.ActionForm; public class LogonAction extends org.apache.struts.action.Action { private final static String SUCCESS = “success”; /** |
Bây giờ chúng ta thêm vào các trang JSP. Chúng ta có tất cả 3 trang jsp là logon.jsp, success.jsp, failed.jsp
Nhấn phải chuột lên thư mục Web Pages của project, chọn New -> JSP, đặt tên là logon, nhấn Finish.
Code cho trang này như sau
| <%@page contentType=”text/html” pageEncoding=”UTF-8″%> <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”> <%@ taglib uri=”http://struts.apache.org/tags-html” prefix=”html”%> <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″> <title>Logon with Struts 1.29</title> </head> <body> <h1 align=”center”>Logon with Struts 1</h1> <html:form action=”logon.do”> <table> <tr> <td>User Name:</td> <td><html:text property=”username”/></td> </tr> <tr> <td>Password:</td> <td><html:password property=”password”/></td> </tr> <tr><td colspan=”2″><html:submit/></td></tr> </table> </html:form> </body> </html> |
Thêm vào trang success.jsp, code như sau:
| <%@page contentType=”text/html” pageEncoding=”UTF-8″%> <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”> <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″> <title>Logon with Struts 1.29</title> </head> <body> <h2>Welcome! bạn đã đăng nhập thành công</h2> </body> </html> |
Thêm trang failed.jsp, code như sau
| <%@page contentType=”text/html” pageEncoding=”UTF-8″%> <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”> <html> <head> <meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″> <title>Logon with Struts 1.29</title> </head> <body> <h2>Vui lòng nhập username và password cho đúng</h2> </body> </html> |
Cấu hình thực thi cho ứng dụng:
Mở file struts-config.xml trong thư mục WEB-INF của project, thay đổi nội dung như sau:
| <?xml version=”1.0″ encoding=”UTF-8″ ?> <!DOCTYPE struts-config PUBLIC “-//Apache Software Foundation//DTD Struts Configuration 1.2//EN” “http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd”> <struts-config> <form-beans> <action-mappings> |
Thực thi trang logon.jsp bằng cách nhấn chuột phải lên trang, chọn Run File. Kết quả như sau:

Nhập UserName: ty, Password teo ta được:

Nhập UserName bất kỳ hoặc Password sai ta được:

Chúc các bạn thành công!
kallich said
Thanks. but i can not run Logon.jsp.
D:\C.Q.CHIEN\JAVA\Struts 1.x\LogonApp\nbproject\build-impl.xml:550: The module has not been deployed.
BUILD FAILED (total time: 9 seconds)
TuanNA said
Click phải chuột vao project và chọn Deploy (hoặc đơn giản là nhấn phím F6). Lúc tạo project bạn đã chọn runtime la Tomcat chưa, sau khi project đã được deployed thì phải chuột vào logon.jsp và chọn Run File là được
jacky said
library-inclusion-in-manifest:
compile:
compile-jsps:
org.apache.jasper.JasperException: file:C:/Documents and Settings/Administrator/Desktop/LogonApp/build/web/logon.jsp(1,22) quote symbol expected
org.apache.jasper.JasperException: quote symbol expected
C:/Documents and Settings/Administrator/Desktop/LogonApp/build/web/logon.jsp(1,22)
C:\Documents and Settings\Administrator\Desktop\LogonApp\nbproject\build-impl.xml:440: Java returned: 1
BUILD FAILED (total time: 0 seconds)
—————————————————–
tôi làm đúng như hướng dẫn nhưng bị lỗi trên.
đồng thời ở file LogonAction báo lỗi là phải tạo class success và failed??????
vậy là sao?? mong anh giải thích sớm!!
vovanhai said
Lỗi ở chỗ: “C:/Documents and Settings/Administrator/Desktop/LogonApp/build/web/logon.jsp(1,22) quote symbol expected”
có các vấn đề:
- Bạn lưu ở đó thì sao mà nó chạy được,nó phải ở trong 1 web server chứ!
- Lỗi “quote symbol expected” có nghĩa là file thiếu dấu nháy “
Bảo Long said
Em chào thầy ạh! Em đã làm rồi nhưng nó báo lối
No getter method for property: “username” of bean: “TestLab.LoginActionForm”
Mặc dù em đã tạo setter và getter rồi !
Đây là link bài tập đó ạ! Rất mong thầy xem giúp ạ
Login.rar
Bảo Long said
Em chào thầy ạ! Em đã làm nhưng bị báo lỗi
No getter method for property: “username” of bean: “TestLab.LoginActionForm”
Mặc dù em đã thiết lập phương thức setter và getter rồi ạ!
Mong thầy giúp em !
matcuoi88 said
dấu nháy trên trang này với dấu nháy trong code khác nhau mà. bạn fai sửa lại nó mới chạy đc.
nhieumat said
Em chạy ct này nhưng nó báo không link được đến logon.do:
javax.servlet.ServletException: Cannot retrieve definition for form bean logonActionForm on action logon.do
Anh có thể giải thích giùm không ạ?
vovanhai said
Em xem trong file cấu hình struts-config.xml thử xem em có định nghĩa bean có tên logonActionForm chưa.
phuongvm said
thầy ơi! em muốn trang trí các trang jsp (thành công-thất bại) làm bằng file css.thi em fải làm như nào? kết nối ra sao?
doanhit said
Cho em hỏi chút. Em làm theo cách này nhưng login lần đầu thì ok, nhưng sau khi login mà minh đánh mật khẩu bị sai chẳng hạn, thì lập tức từ đó mình có đánh mật khẩu đúng nó cũng nhảy về trang false.jsp. Giúp em nhé
Toan GT said
Nói thật là bạn viết bài này rất hay và cơ bản. Tớ thực hành theo là
làm được ngay. Cảm ơn nhiều nhé. Tiếp tục viết ajax, dojo, flex hay như thế này nhé.
Ngoc said
Chào thầy, sau khi e đăng nhập xong thì ko vào được trang success.jsp hay fail.jsp, chỉ cảnh báo ngoại lệ:
javax.servlet.ServletException: java.lang.NullPointerException
Mong thầy giúp em
luonvuive said
chào anh hải.cho em hỏi:Khi em Login vào thì em cần phân quyền Admin và Manager.Trong database thì có(UserName,password,RoleId(smallint)) em phải viết file java như thế nào.Em cho Admin 1 Manager 0.
duongvandinh said
Em thưa Thầy.
Em làm một bài thế này ạ.
Em lưu đường dẫn ảnh trong database. Rồi em đọc ra cho vào một list.
Tiếp đó em muốn hiển thị một loạt ảnh bằng cách duyệt thông qua thẻ
Khi em làm thế thì báo lỗi.
Thầy có ví dụ nào thao tác về ảnh tương tự không ạ.
Thầy giúp em với.
Em cảm ơn Thầy!
Quân said
Thầy ơi… Thầy giúp em với… Giờ em có một bảng thành phố và 1 bảng quận huyện trong SQL server 2005…
Em dùng Struts 1.x
Giờ em load danh sách thành phố ra 1 dropdownlist Giờ thầy giúp em code làm sao để khi mình chọn một thành phố nào đó thì ở Dropdownlist quận huyện sẽ hiện lên các quận huyện tương ứng với thành phố đó… Thầy giúp em nhé!
Võ Văn Hải said
Tham khảo bài viết xử lý ngày trên blog này nhé!
Võ Văn Hải said
trời. bạn dùng mệnh đề where trong câu sql là xong ngay mà!
Nhân said
Thầy ơi… sao em làm từng bước theo hướng dẫn. Khi run file logon.jsp thì chỉ hiện ra hai dòng chữ UserName và Password thôi. 2 cái textfield và button submit thì không thấy hiện ra. Vậy là lỗi gì vậy thầy.
tuấn said
Bài viết rất hay và rễ hiểu, em cảm ơn thầy.
tai tai said
Chào thầy!
em làm rồi mà nó lại báo như thế này
type Status report
message No action instance for path /logon could be created
description The server encountered an internal error (No action instance for path /login could be created) that prevented it from fulfilling this request.
tai tai said
tai tai said
Your comment is awaiting moderation.
August 20, 2011 at 2:51 pm
Chào thầy!
em làm rồi mà nó lại báo như thế này
type Status report
message No action instance for path /logon could be created
description The server encountered an internal error (No action instance for path /logon could be created) that prevented it from fulfilling this request.
Võ Văn Hải said
Xem kỹ lại từng bước xem thế nào.
Tuan thanh said
thầy cho e hỏi tạo một master page jsp thế nào
Võ Văn Hải said
Em tìm hiểu về tile framework. Struts dùng tile để dàn trang.
minh said
em chào thầy!
thầy có thể chỉ em run 1 trang HTML trong netbean 7.0 được ko ạ.
em chạy thì nó báo lổi localhost.
em đã cài xampp.
Võ Văn Hải said
Trước hết bạn cài đặt Tomcat đi sau đó tạo 1 web project, tạo 1 trang html, nhấn chuột hải lên cửa sổ soạn thảo, chọn Run File.
(Tham khảo thêm rất nhiều bài trong blog này).
tanpham said
Chào thầy!
Thầy có thể giải thích giúp em sự khác biệt khi dùng Struts 1.x so với cách kiểm tra xử lý đăng nhập bình thường bằng Servlet? Vì em nhận thấy dùng Struts phức tạp mà cách thực thi cũng như trong Servlet.
VD: trong Servlet em xử lý như sau:
if(request.getParameter(“username”).equal(“ty”) && request.getParameter(“password”).equal(“teo”))
{
request.sendRedirect(“/success.jsp”);
}
else
{
request.sendRedirect(“/false.jsp”);
}
fullyit said
Thưa thấy ! Thế người dùng vào trực tiếp luôn trang success.jsp hoặc vào failure.jsp mà ko thông qua trong login, bâyh mình muốn khi người dùng vào đó thì bị đẩy ra trang Login thì làm thế nào ạ, Em rất băn khoăn về vấn đề này trong Java Web