2010-10-08 21 views
7

Tôi đang sử dụng Tomcat 6 và muốn có thể truy xuất maxPostSize (được định nghĩa trong Trình kết nối HTTP trong server.xml) theo chương trình từ bên trong một JSP để tôi có thể biết kích thước tải lên tệp tối đa là.Lập trình maxPostSize của Tomcat HTTP trong một JSP

Có cách nào để thực hiện việc này không?

Trả lời

5

Giả sử rằng bạn đã chỉ có một dịch vụ Tomcat với một kết nối, sau đó bạn có thể truy cập nó trong Servlet bởi:

int maxPostSize = ServerFactory.getServer().findServices()[0].findConnectors()[0].getMaxPostSize(); 

ServerFactory là bằng cách org.apache.catlina.ServerFactory.

Lưu ý: mã này kết hợp mã của bạn với servletcontainer Tomcat và webapp của bạn có thể không được sử dụng lại trên các servletcontainer khác, thậm chí không phải là các phiên bản khác nhau. Xem xét định cấu hình tham số ngữ cảnh của riêng bạn trong web.xml có cùng giá trị.

<context-param> 
    <param-name>maxPostSize</param-name> 
    <param-value>2097152</param-value> 
</context-param> 

Sau đó, bạn có thể truy cập nó trong Servlet bởi

int maxPostSize = Integer.valueOf(getServletContext().getInitParameter("maxPostSize")); 

hoặc trong JSP bởi

${initParam.maxPostSize} 
+1

Đáng buồn thay trong Tomcat 7 ServerFactory đã biến mất. –

3

Trong Tomcat7 lớp ServerFactory đã biến mất. Rõ ràng một người có thể lấy tham chiếu Máy chủ bằng cách sử dụng

org.apache.tomee.loader.TomcatHelper.getServer() 

... nằm trong org.apache.openejb: tomee-loader.

+0

Cảm ơn bạn, đây là chính xác những gì tôi đã tìm kiếm: StandardServer tomcatServer = TomcatHelper.getServer(); \t \t Dịch vụ [] services = tomcatServer.findServices(); –

Các vấn đề liên quan