68

Sự khác biệt giữa <init-param><context-param>!?

|
99

<init-param><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 đó vào một trong số chúng.

Nếu bạn muốn lưu trữ dữ liệu cụ thể được giới hạn trong phạm vi servlet cụ thể , thì bạn có thể sử dụng. <init-param>Mọi thứ bạn khai báo bên trong <init-param>chỉ có thể truy cập được đối với servlet cụ thể đó. Init-param được khai báo bên trong <servlet>thẻ.

<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 các tham số đó trong servlet như sau:

out.println(getInitParameter("Greetings"));

Nếu bạn muốn lưu trữ dữ liệu chung 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 của bối cảnh ứng dụng. Để biết thêm thông tin về việc sử dụng <context-param>VS, ServletContext.setAttribute()hãy xem câu hỏi này . bối cảnh-param được khai báo dưới thẻ web-app. Bạn có thể khai báo và truy cập <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 tệp JSP hoặc Servlet

getServletContext().getInitParameter("Country");
getServletContext().getInitParameter("Age");
|
8

Hãy 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 init-param được định nghĩa bên trong một phần tử servlet. Điều này có nghĩa là nó chỉ có sẵn cho servlet theo khai báo và không có sẵn 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, hãy nói một tệp JSP này cần được truyền một cách rõ ràng đến tệp JSP. Ví dụ được truyền dưới dạng request.setAttribution (). Điều này rất không hiệu quả và khó mã hóa.

Vì vậy, nếu bạn muốn có quyền truy cập vào các giá trị toàn cầu từ bất kỳ đâu trong ứng dụng mà không chuyển các giá trị đó một cách rõ ràng, bạn cần sử dụng các tham số Context init.

Hãy xem xét định nghĩa sau trong web.xml

 <web-app>
      <context-param>
           <param-name>myprop</param-name>
           <param-value>value</param-value>
      </context-param>
 </web-app>

Thông số ngữ cảnh này có sẵn cho tất cả các phần của ứng dụng web và nó có thể được truy xuất từ ​​đối tượng Ngữ cảnh. Chẳng hạn, getServletContext (). GetInitParameter (xóa dbname tựa);

Từ một tệp JSP, bạn có thể truy cập tham số ngữ cảnh bằng cách sử dụng đối tượng ẩn ứng dụng. Ví dụ: application.getAttribution (Ngày dbname tên);

|
6
<context-param> 
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath*:/META-INF/PersistenceContext.xml
    </param-value>
</context-param>

Tôi đã khởi tạo PersistenceContext.xmlbên trong <context-param>vì tất cả các máy chủ của tôi sẽ tương tác với cơ sở dữ liệu trong khung MVC.

Người chăn nuôi,

<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 đoạn mã đã nói ở trên, tôi đang cấu hình áo và lớp ApplicationContext.xmlduy nhất để nghỉ. Tôi cũng đang sử dụng</init-param>

|
5

<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, initphương thức của nó sẽ được gọi sau đó doGet/doPosttrong 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 sử dụng <context-param>. Mỗi servlet sẽ có quyền truy cập vào biến bối cảnh.

|

Câu trả lời của bạn (> 20 ký tự)

Bằng cách click "Đăng trả lời", bạn đồng ý với Điều khoản dịch vụ, Chính sách bảo mật and Chính sách cookie của chúng tôi.

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hoặc hỏi câu hỏi của bạn.