Sự khác nhau giữa <init-param>
và <context-param>
!init-param và context-param
Trả lời
<init-param>
và <context-param>
là các tham số tĩnh được lưu trữ trong tệp web.xml. Nếu bạn có bất kỳ dữ liệu nào không thay đổi thường xuyên, bạn có thể lưu trữ dữ liệu đó trong một trong số chúng.
Nếu bạn muốn lưu trữ dữ liệu cụ thể mà chỉ giới hạn trong một phạm vi đặc biệt servlet, sau đó bạn có thể sử dụng <init-param>
.Anything bạn khai báo bên trong <init-param>
là chỉ có thể chỉ cho rằng servlet.The đặc biệt init-param là được khai báo bên trong thẻ <servlet>
.
<servlet>
<display-name>HelloWorldServlet</display-name>
<servlet-name>HelloWorldServlet</servlet-name>
<init-param>
<param-name>Greetings</param-name>
<param-value>Hello</param-value>
</init-param>
</servlet>
và bạn có thể truy cập vào các thông số trong servlet như sau:
out.println(getInitParameter("Greetings"));
Nếu bạn muốn lưu trữ dữ liệu đó được phổ biến cho toàn bộ ứng dụng và nếu nó không thay đổi thường xuyên, bạn có thể sử dụng <context-param>
thay vì servletContext.setAttribute()
phương thức ngữ cảnh ứng dụng. Để biết thêm thông tin về cách sử dụng <context-param>
VS ServletContext.setAttribute()
, hãy xem số question này. context-param được khai báo theo thẻ web-app
. Bạn có thể khai báo và truy cập vào <context-param>
như sau
<web-app>
<context-param>
<param-name>Country</param-name>
<param-value>India</param-value>
</context-param>
<context-param>
<param-name>Age</param-name>
<param-value>24</param-value>
</context-param>
</web-app>
Cách sử dụng trong ứng dụng hoặc trong một JSP hoặc Servlet
getServletContext().getInitParameter("Country");
getServletContext().getInitParameter("Age");
<init-param>
sẽ được sử dụng nếu bạn muốn khởi tạo một số tham số cho một servlet cụ thể. Khi yêu cầu đến servlet trước tiên, phương thức init
của nó sẽ được gọi là doGet/doPost
trong khi nếu bạn muốn khởi tạo một số biến cho toàn bộ ứng dụng, bạn sẽ cần phải sử dụng <context-param>
. Mỗi servlet sẽ có quyền truy cập vào biến ngữ cảnh.
xem xét định nghĩa dưới đây trong web.xml
<servlet>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>TestServlet</servlet-class>
<init-param>
<param-name>myprop</param-name>
<param-value>value</param-value>
</init-param>
</servlet>
Bạn có thể thấy rằng init-param được định nghĩa bên trong một yếu tố servlet. Điều này có nghĩa là nó chỉ có sẵn cho servlet đang được khai báo chứ không phải cho các phần khác của ứng dụng web. Nếu bạn muốn tham số này có sẵn cho các phần khác của ứng dụng nói rằng một JSP cần phải được truyền một cách rõ ràng đến JSP. Ví dụ, được chuyển thành request.setAttribute(). Điều này là không hiệu quả và khó mã hóa.
Vì vậy, nếu bạn muốn truy cập vào các giá trị toàn cầu từ bất kỳ nơi nào trong ứng dụng mà không truyền đạt các giá trị đó một cách rõ ràng, bạn cần sử dụng các tham số Initext Init.
Hãy xem xét các định nghĩa sau đây trong web.xml
<web-app>
<context-param>
<param-name>myprop</param-name>
<param-value>value</param-value>
</context-param>
</web-app>
param bối cảnh này là dành cho tất cả các bộ phận của ứng dụng web và nó có thể được lấy từ đối tượng Context. Ví dụ, getServletContext(). GetInitParameter (“dbname”);
Từ JSP, bạn có thể truy cập thông số ngữ cảnh bằng cách sử dụng đối tượng ẩn ứng dụng. Ví dụ, application.getAttribute (“dbname”);
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/META-INF/PersistenceContext.xml
</param-value>
</context-param>
Tôi đã khởi PersistenceContext.xml
của tôi trong vòng <context-param>
bởi vì tất cả các servlet của tôi sẽ được tương tác với cơ sở dữ liệu trong khung MVC.
Howerver,
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:ApplicationContext.xml
</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.organisation.project.rest</param-value>
</init-param>
</servlet>
trong các mã nói trên, tôi cấu hình jersey và ApplicationContext.xml
chỉ đến lớp còn lại. Đối với cùng tôi đang sử dụng </init-param>
- 1. Số sửa đổi SVN và dấu thời gian
- 2. Nhận dữ liệu cấu hình từ web.xml khi sử dụng một bộ ServletContainer
- 3. CSS "và" và "hoặc"
- 4. Strange null trong LINQ truy vấn với EF
- 5. XHTML và & (và) mã hóa
- 6. Thay thế "#", "$", "%", "&" và "_" bằng "\ #", "\ $", "\%", "\ &" và "\ _"
- 7. header và footer và freemarker
- 8. multidplyr và group_by() và lọc()
- 9. Sự khác biệt giữa và ý định và và setcontentview
- 10. php bầy và fread và fwrite
- 11. Redis và Node.js và Socket.io Câu hỏi
- 12. Git và PowerShell và tiếng Đức umlauts
- 13. getComputedStyle() và cssText trong IE và Firefox
- 14. Resharper và ViEmu Keybindings (và Visual Assist)
- 15. CvMat và imread Vs IpImage và CvLoadImage
- 16. Bộ chọn jQuery có "và" và "hoặc"
- 17. Mercurial và xcuserdata, .ds_store và .git
- 18. jQuery bind() unbind() và bật() và tắt()
- 19. Gurobi và java và giải pháp trống
- 20. Thẻ mở và đóng và hiệu suất?
- 21. trăn nếu điều kiện và "và"
- 22. SOX và mờ dần và mờ dần
- 23. chuỗi và const char * và .c_str()?
- 24. "Bitwise Và" và trái Padding trong C++
- 25. Chạm và giữ (Nhấn và giữ)
- 26. User Controls và JavaScript và Master Pages
- 27. Cắt và dán từ vim và tmux
- 28. WPF XAML và MinWidth và MaxWidth
- 29. Gunicorn và Django với Upstart và Nginx
- 30. NumPy và SciPy. Tải tĩnh và động
@RC. Đó là câu hỏi không có nơi thảo luận về sự khác biệt giữa hai params .. Nó chỉ là về tài sản nạp trong hai bối cảnh .. –
Tôi dừng lại ở tiêu đề, xấu của tôi. –