50 câu hỏi phỏng vấn Struts hàng đầu và câu trả lời (2025)

Dưới đây là những câu hỏi phỏng vấn Struts và câu trả lời dành cho cả ứng viên mới và ứng viên có kinh nghiệm để có được công việc mơ ước của mình.


1. Các thành phần của Struts Framework là gì?

Khung Struts bao gồm các thành phần sau:

  1. Java Servlet
  2. JSP (Trang máy chủ Java)
  3. Thẻ tùy chỉnh
  4. Tài nguyên tin nhắn

Tải xuống PDF miễn phí: Câu hỏi và câu trả lời phỏng vấn Struts


2. Vai trò của trình xử lý trong các ứng dụng dựa trên MVC là gì?

Nhiệm vụ của trình xử lý là chuyển các yêu cầu đến các mô hình phù hợp vì chúng được liên kết với lớp mô hình của kiến ​​trúc MVC. Trình xử lý sử dụng thông tin ánh xạ từ các tệp cấu hình để chuyển yêu cầu.


3. Luồng yêu cầu trong các ứng dụng dựa trên Struts như thế nào?

Các ứng dụng dựa trên Struts sử dụng mô hình thiết kế MVC. Luồng yêu cầu như sau:

  • Người dùng tương tác với View bằng cách nhấp vào bất kỳ liên kết nào hoặc gửi bất kỳ biểu mẫu nào.
  • Khi người dùng tương tác, yêu cầu sẽ được chuyển đến bộ điều khiển.
  • Bộ điều khiển có trách nhiệm chuyển yêu cầu đến bộ phận xử lý thích hợp.
  • Action có trách nhiệm gọi một hàm trong Model có triển khai toàn bộ logic nghiệp vụ.
  • Phản hồi từ lớp mô hình được nhận lại bởi hành động, sau đó chuyển đến chế độ xem nơi người dùng có thể thấy phản hồi.

4. Bộ điều khiển sử dụng tệp nào để lấy thông tin ánh xạ nhằm định tuyến yêu cầu?

Bộ điều khiển sử dụng tệp cấu hình “struts-config.xml tệp để lấy tất cả thông tin ánh xạ nhằm quyết định hành động nào sẽ được sử dụng để định tuyến yêu cầu của người dùng.


5. Vai trò của Action Class trong Struts là gì?

Trong Struts, Action Class hoạt động như một bộ điều khiển và thực hiện các nhiệm vụ chính sau:

  • Sau khi nhận được yêu cầu của người dùng, nó sẽ xử lý yêu cầu của người dùng.
  • Sử dụng mô hình phù hợp và lấy dữ liệu từ mô hình (nếu cần).
  • Chọn chế độ xem phù hợp để hiển thị phản hồi cho người dùng.
Câu hỏi phỏng vấn Struts
Câu hỏi phỏng vấn Struts

6. Bean actionForm được tạo ra như thế nào?

Đại diện

bean actionForm được tạo ra bằng cách mở rộng lớp org.apache.struts.action.ActionForm

In the following example we have created an actionForm bean with the name 'testForm':

import javax.servlet.http.HttpServletRequest; 
import org.apache.struts.action.*; 
public class testForm extends ActionForm { 
private String Id=null; 
private String State=null; 
public void setId(String id){
this.Id=id; 
} 
public String getId(){
return this.Id;
}
public void setState(String state){ 
this.State=state; 
} 
public String getState(){ 
return this.State; 
}

7. Có hai loại xác thực nào được Validator FrameWork hỗ trợ?

Validator Framework được sử dụng để xác thực dữ liệu biểu mẫu. Framework này cung cấp hai loại xác thực:

  1. Xác thực phía máy khách trên trình duyệt của người dùng
  2. Xác thực phía máy chủ

8. Các bước lắp đặt Struts là gì?

Để sử dụng Struts framework, chúng ta chỉ cần thêm tệp Struts.Jar vào môi trường phát triển của mình. Khi tệp jar có sẵn trong CLASSPATH, chúng ta có thể sử dụng framework và phát triển các ứng dụng dựa trên Strut.

Câu hỏi phỏng vấn Struts
Câu hỏi phỏng vấn Struts

9. Xác thực phía máy khách được kích hoạt như thế nào trên biểu mẫu JSP?

Để bật xác thực phía máy khách trong Struts, trước tiên chúng ta cần bật plug-in xác thực trong tệp struts-config.xml. Điều này được thực hiện bằng cách thêm các mục cấu hình sau vào tệp này:

<!--  Validator plugin -->
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>

Sau đó, các quy tắc xác thực được định nghĩa trong tệp validation.xml. Nếu một biểu mẫu chứa trường email và chúng tôi muốn bật xác thực phía máy khách cho trường này, mã sau được thêm vào tệp validation.xml:

<form name="testForm">
<field  property="email"
depends="required">
<arg key="testForm.email"/>
</field>
</form>

10. Thẻ action-mapping được sử dụng như thế nào để chuyển tiếp yêu cầu trong tệp cấu hình Struts?

Trong tệp cấu hình Struts (struts-config.xml), các tùy chọn chuyển tiếp được định nghĩa trong thẻ action-mapping.

Trong ví dụ sau, khi người dùng nhấp vào siêu liên kết kiểm tra.làm, yêu cầu sẽ được chuyển tiếp đến /pages/testing.jsp sử dụng các cấu hình sau từ tệp struts-config.xml:

<action  path="/test" forward="/pages/testing.jsp">

Việc chuyển tiếp này sẽ diễn ra khi người dùng nhấp vào siêu liên kết sau trên trang jsp:

<html:link</strong> page="/test.do</strong>">Controller Example</html:link>

11. Làm thế nào để kiểm soát việc gửi biểu mẫu trùng lặp trong Struts?

Trong Struts, lớp hành động cung cấp hai phương thức quan trọng có thể được sử dụng để tránh việc gửi biểu mẫu trùng lặp.

Phương thức saveToken() của lớp hành động tạo ra một mã thông báo duy nhất và lưu nó vào phiên của người dùng. Sau đó, phương thức isTokenValid() được sử dụng để kiểm tra tính duy nhất của các mã thông báo.


12. Trong Struts, làm thế nào chúng ta có thể truy cập Java bean và các thuộc tính của chúng?

Bean Tag Library là thư viện Struts có thể được sử dụng để truy cập Java bean.


13. Tệp cấu hình nào được sử dụng để lưu trữ thông tin cấu hình JSP trong Struts?

Để biết chi tiết cấu hình JSP, tệp Web.xml được sử dụng.


14. Mục đích của phương thức Execute của lớp hành động là gì?

Phương thức thực thi của lớp hành động chịu trách nhiệm thực thi logic nghiệp vụ. Nếu bất kỳ xử lý nào được yêu cầu theo yêu cầu của người dùng, thì nó sẽ được thực hiện trong phương thức này. Phương thức này trả về đối tượng actionForward định tuyến ứng dụng đến trang thích hợp.

Trong ví dụ sau, phương thức execute sẽ trả về một đối tượng actionForward được định nghĩa trong struts-config.xml với tên “exampleAction”:

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class actionExample extends Action
{
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception{
return mapping.findForward("exampleAction");
}
}

15. Sự khác biệt giữa các tệp validation.xml và validator-rules.xml trong nền tảng Struts Validation là gì?

Trong Validation.xml, chúng tôi định nghĩa các quy tắc xác thực cho bất kỳ Java bean cụ thể nào trong khi trong tệp validator-rules.xml, các quy tắc xác thực chuẩn và chung được định nghĩa.


16. Làm thế nào chúng ta có thể hiển thị tất cả các lỗi xác thực cho người dùng trên trang JSP?

Để hiển thị tất cả các lỗi xác thực dựa trên các quy tắc xác thực được xác định trong tệp validation.xml, chúng tôi sử dụng thẻ trong tệp JSP của chúng tôi.


17. Xử lý ngoại lệ khai báo trong Struts là gì?

Khi logic xử lý ngoại lệ được định nghĩa trong struts-config.xml hoặc trong thẻ action, thì nó được gọi là xử lý ngoại lệ khai báo trong Struts.

Trong ví dụ sau, chúng tôi đã định nghĩa ngoại lệ trong tệp struts-config.xml cho NullPointerException:

<global-exceptions>

<exception key="test.key"

Type="java.lang.NullPointerException"

Path="/WEB-INF/errors/error_page.jsp"

</global-exceptions>

18. DynaActionForm là gì?

DynaActionForm là một loại đặc biệt của lớp actionForm (lớp con của lớp ActionForm) được sử dụng để tạo bean biểu mẫu động. Nó sử dụng các tệp cấu hình để tạo bean biểu mẫu.


19. Cần thay đổi cấu hình nào để sử dụng Tiles trong Struts?

Để tạo các thành phần có thể tái sử dụng với khung Tiles, chúng ta cần thêm mã định nghĩa plugin sau vào tệp struts-config.xml:

<plug-in className="org.apache.struts.tiles.TilesPlugin" >

<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />

<set-property property="moduleAware" value="true" />

</plug-in>

20. Sự khác nhau giữa Jakarta Struts và Apache Struts là gì? Sử dụng cái nào tốt hơn?

Cả hai đều giống nhau và không có sự khác biệt nào giữa chúng.


21. File cấu hình Struts.xml có tác dụng gì?

Tệp Struts.xml là một trong những tệp cấu hình chính của Struts framework được sử dụng để xác định ánh xạ giữa URL và hành động. Khi bộ điều khiển nhận được yêu cầu của người dùng, bộ điều khiển sẽ sử dụng thông tin ánh xạ từ tệp này để chọn lớp hành động phù hợp.


22. Thư viện thẻ được định nghĩa như thế nào trong Struts?

Thư viện thẻ được định nghĩa trong tệp cấu hình (web.xml) bên trong gắn thẻ như sau:

<taglib>

<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>

<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>

</taglib>

23. Ý nghĩa của thẻ logic trong Struts là gì?

Việc sử dụng thẻ logic trong Struts giúp viết mã sạch và hiệu quả ở lớp trình bày mà không cần sử dụng scriptlet.


24. Có hai loại phạm vi nào cho formbean?

  • Phạm vi yêu cầu: Giá trị Formbean chỉ khả dụng trong yêu cầu hiện tại
  • Phạm vi phiên họp: Giá trị Formbean có sẵn cho tất cả các yêu cầu trong phiên hiện tại.

25. Làm thế nào chúng ta có thể nhóm các hành động liên quan vào một nhóm trong Struts?

Để nhóm nhiều hành động có liên quan vào một nhóm, chúng ta có thể sử dụng lớp DispatcherAction.


26. Khi nào chúng ta nên sử dụng SwtichAction?

Kịch bản tốt nhất để sử dụng lớp SwitchAction là khi chúng ta có một ứng dụng mô-đun với nhiều mô-đun hoạt động riêng biệt. Sử dụng lớp SwitchAction, chúng ta có thể chuyển từ một tài nguyên trong một mô-đun sang một tài nguyên khác trong một số mô-đun khác nhau của ứng dụng.


27. Lợi ích của khung Struts là gì?

Struts dựa trên MVC và do đó có sự phân tách tốt các lớp khác nhau trong Struts giúp phát triển và tùy chỉnh ứng dụng Struts dễ dàng. Sử dụng các tệp cấu hình khác nhau giúp ứng dụng Struts dễ cấu hình. Ngoài ra, Struts là mã nguồn mở và do đó, tiết kiệm chi phí.


28. Cần thực hiện những bước nào để di chuyển ứng dụng từ Struts1 sang Struts2?

Các bước sau đây là cần thiết để di chuyển Struts1 sang Struts2:

  1. Di chuyển Struts1 actionForm sang Struts2 POJO.
  2. Chuyển đổi tệp cấu hình Struts1 (struts-config.xml) sang tệp cấu hình Struts2 (struts.xml)

29. Các thuộc tính của biểu mẫu được xác thực như thế nào trong Struts?

Để xác thực các thuộc tính đã điền, phương thức validate() của lớp ActionForm được sử dụng trước khi xử lý quyền điều khiển của formbean đối với lớp Action.


30. Phương thức reset của lớp ActionForm có tác dụng gì?

Phương thức reset của lớp actionForm được sử dụng để xóa các giá trị của biểu mẫu trước khi bắt đầu một yêu cầu mới.


31. Nhược điểm của Struts là gì?

Mặc dù Struts có nhiều ưu điểm nhưng cũng đòi hỏi quá trình học tập phức tạp hơn và làm giảm tính minh bạch trong quá trình phát triển.

Struts cũng thiếu tài liệu hướng dẫn phù hợp và đối với nhiều thành phần của nó, người dùng không thể tìm được nguồn trợ giúp trực tuyến phù hợp.


32. File resourcebundle.properties có tác dụng gì trong khung Struts Validation?

Tệp resourcebundle.properties được sử dụng để xác định các thông báo lỗi cụ thể trong các cặp giá trị khóa cho bất kỳ lỗi nào có thể xảy ra trong mã.

Cách tiếp cận này giúp giữ cho mã sạch vì nhà phát triển không cần phải nhúng tất cả thông báo lỗi vào trong mã.


33. Tôi có thể có html thuộc tính form không có phương thức getter và setter liên quan đến formbean?

Đối với mỗi thuộc tính biểu mẫu HTML, phương thức getter và setter trong formbean phải được xác định, nếu không ứng dụng sẽ báo lỗi.


34. Có bao nhiêu bộ điều khiển servlet được sử dụng trong một ứng dụng Struts?

Struts framework hoạt động theo khái niệm phương pháp tiếp cận kiểm soát tập trung và toàn bộ ứng dụng được kiểm soát bởi một bộ điều khiển servlet duy nhất. Do đó, chúng ta chỉ cần một bộ điều khiển servlet trong một ứng dụng servlet.


35. Đối với một ứng dụng Struts duy nhất, chúng ta có thể có nhiều tệp struts-config.xml không?

Chúng ta có thể có bất kỳ số lượng tệp Struts-config.xml nào cho một ứng dụng duy nhất.

Chúng ta cần cấu hình sau cho việc này:

<servlet>

<servlet-name>action</servlet-name>

<servlet-class>

org.apache.struts.action.ActionServlet

</servlet-class>

<init-param>

<param-name>config</param-name>

<param-value>

/WEB-INF/struts-config.xml

/WEB-INF/struts-config_user.xml

/WEB-INF/struts-config_admin.xml

</param-value>

</init-param>

.............

.............

</servlet>

36. Những thành phần mô hình nào được Struts hỗ trợ?

Struts hỗ trợ tất cả các loại mô hình bao gồm Java beans, EJB, CORBA. Tuy nhiên, Struts không có bất kỳ hỗ trợ tích hợp nào cho bất kỳ mô hình cụ thể nào và việc lựa chọn bất kỳ mô hình nào là tùy thuộc vào nhà phát triển.


37. Khi nào thì sử dụng IncludeAction hữu ích?

IncludeAction là lớp hành động do Struts cung cấp, rất hữu ích khi cần tích hợp giữa Struts và ứng dụng dựa trên Servlet.


38. Thread của Struts có an toàn không?

Có, Struts là luồng an toàn. Trong Struts, không cần một đối tượng servlet mới để xử lý mỗi yêu cầu; thay vào đó, một luồng mới của đối tượng lớp hành động được sử dụng cho mỗi yêu cầu mới.


39. Cần thay đổi cấu hình nào để sử dụng tệp tài nguyên trong Struts?

Các tệp tài nguyên (tệp .properties) có thể được sử dụng trong Struts bằng cách thêm mục cấu hình sau vào tệp struts-config.xml:

<message-resources parameter="com.login.struts.ApplicationResources"/>

40. Bean lồng nhau có thể được sử dụng như thế nào trong ứng dụng Struts?

Struts cung cấp một thư viện thẻ riêng (Nested Tag Library) cho mục đích này. Sử dụng thư viện này, chúng ta có thể lồng các bean vào bất kỳ ứng dụng nào dựa trên Struts.


41. Các lớp cốt lõi của Struts Framework là gì?

Sau đây là các lớp cốt lõi được cung cấp bởi Struts Framework:

  • Lớp hành động
  • Lớp ActionForm
  • Lớp ActionMapping
  • Lớp ActionForward
  • Lớp ActionServlet

42. Chúng ta có thể xử lý ngoại lệ trong Struts theo phương pháp lập trình không?

Có, chúng ta có thể xử lý các ngoại lệ trong Struts theo phương pháp lập trình bằng cách sử dụng các khối try, catch trong mã.

try {

// Struts code

}

Catch (Exception e) {

// exception handling code

}

43. Struts Framework có phải là một phần của J2EE?

Mặc dù nền tảng Struts dựa trên các công nghệ J2EE như JSP, Java Beans, Servlets, v.v. nhưng nó không phải là một phần của tiêu chuẩn J2EE.


44. Action mapping được cấu hình như thế nào trong Struts?

Ánh xạ hành động được cấu hình trong tệp cấu hình struts-config.xml dưới thẻ như sau:

<pre><action-mappings>
<action path="/login"
type="login.loginAction"
name="loginForm"
input="/login.jsp"
scope="request"
validate="true">
<forward name="success" path="/index.jsp"/>
<forward name="failure" path="/login_error.jsp"/>
</action>
</action-mappings>

45. Khi nào nên lựa chọn Struts Framework?

Nên sử dụng thanh giằng khi một số hoặc một số điều kiện sau đây là đúng:

  • Cần phải phát triển ứng dụng cấp doanh nghiệp có độ mạnh mẽ cao.
  • Cần có một ứng dụng có khả năng tái sử dụng và cấu hình cao.
  • Cần có một ứng dụng dựa trên MVC, kết hợp lỏng lẻo với sự phân tách rõ ràng các lớp khác nhau.

46. ​​Tại sao ActionServlet là singleton trong Struts?

Trong Struts framework, actionServlet hoạt động như một bộ điều khiển và tất cả các yêu cầu do người dùng thực hiện đều được bộ điều khiển này kiểm soát. ActionServlet dựa trên mẫu thiết kế singleton vì chỉ cần tạo một đối tượng cho lớp bộ điều khiển này. Nhiều luồng được tạo sau đó cho mỗi yêu cầu của người dùng.


47. Các bước cần thiết để thiết lập khung xác thực trong Struts là gì?

Các bước sau đây là cần thiết để thiết lập khung xác thực trong Struts: – Sai chính tả

  1. Trong thư mục WEB-INF, đặt các tệp valdator-rules.xml và validation.xml.
  2. Bật plugin xác thực trong tệp struts-config.xml bằng cách thêm nội dung sau:
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml"/>
</plug-in>

48. Những công nghệ nào có thể được sử dụng tại View Layer trong Struts?

Trong Struts, chúng ta có thể sử dụng bất kỳ công nghệ nào sau đây trong lớp xem:

  • JSP
  • HTML
  • XML/XSLT
  • Các tập tin WML
  • Mẫu vận tốc
  • Servlet

49. Điều kiện để actionForm hoạt động chính xác là gì?

ActionForm phải đáp ứng các điều kiện sau để hoạt động chính xác:

  • Nó phải có một hàm tạo không có đối số.
  • Nó phải có các phương thức getter và setter công khai cho tất cả các thuộc tính của nó.

50. Struts cung cấp thư viện nào cho các thành phần biểu mẫu như hộp kiểm, hộp văn bản, v.v.?

Struts cung cấp thư viện thẻ HTML có thể được sử dụng để thêm các thành phần biểu mẫu như trường văn bản, hộp văn bản, nút radio, v.v.


Những câu hỏi phỏng vấn này cũng sẽ giúp ích cho bài thi viva(orals) của bạn

Chia sẻ

3 Comments

  1. hình đại diện thợ rèn nói:

    Cảm ơn anh rất nhiều, Tuyệt vời ;):) liên kết tải xuống pdf không hoạt động. Cảm ơn

    1. Đã sửa lỗi! Cảm ơn bạn đã báo cáo

Bình luận

Chúng tôi sẽ không công khai email của bạn. Các ô đánh dấu * là bắt buộc *