2011-10-03 37 views
5

Cố gắng xác định vị trí/cách đặt tờ mẫu trong ứng dụng web được triển khai cho Tomcat 6 để các kiểu styles.css có thể được giải quyết. Tôi đã thử mọi thứ tôi có thể nghĩ đến mà không thành công.Tại sao Tomcat 6 không tìm thấy kiểu dáng của tôi.css

Tôi đã thực hiện các thử nghiệm này để tìm ra tệp nhưng ít thành công.

1.) put css in-line with style attribute to verify text display green. 
    <div id="xxx" style="color:green;"> This worked. 
    Then I removed the attribute and 
2.) moved it into a in-file <style></style> stmt in the jsp. This also worked. 
    I copied the css stmt into styles.css and disabled the in-line stmt in the jsp. 
3.) added <link></link> stmts to file. I tried several path refs to the file. 
    And I put the file in several different directory locations to see where 
    it would get resolved. (none were found) 
     <link rel="stylesheet" type="text/css" href="styles.css"> 
     <link rel="stylesheet" type="text/css" href="css/styles.css"> 
     <link rel="stylesheet" type="text/css" href="/css/styles.css"> 

Using FireBug (css tab) I see the follow information for these links 
    * <link rel="stylesheet" type="text/css" href="styles.css"> 
    this displays the src to index.html in the root dir 

    * <link rel="stylesheet" type="text/css" href="css/styles.css"> 
    this displays the msg 
     Apache Tomcat/6.0.13 - Error report 
     HTTP Status 404 
     The requested resource() is not available. 

    * <link rel="stylesheet" type="text/css" href="/css/styles.css">  
    this displays 
     Failed to load source for: http://192.168.5.24:9191/css/clStyles.css 

Các contextPath là/microblog Và basepath là http://192.168.5.24:9191/microblog

Đây là mã thử nghiệm Tôi đang sử dụng.

Tôi đang sử dụng Spring 3. Tôi có một JSP đơn giản

- test.jsp -

<% 
    String path = request.getContextPath(); 
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
    %> 
    <html> 
     <head> 
     <base href="<%=basePath%>"> 

     <link rel="stylesheet" type="text/css" href="styles.css"> 
     <link rel="stylesheet" type="text/css" href="css/styles.css"> 
     <link rel="stylesheet" type="text/css" href="/css/styles.css"> 
     <style> 
      #Yxxx {color:green;} 
     </style> 

     </head> 

     <body> 
     <div id="xxx"> 
      <h2>Test <%=path%> <%=basePath%></h2> 
     </div> 
     </body> 
    </html> 

tôi đã đặt file styles.css tại nhiều địa điểm thư mục để xem nơi nó có thể được giải quyết nhưng không xuất hiện để tìm thấy.

Trong Tomcat 6 triển khai bùng nổ ứng dụng web cấu trúc thư mục

webapps/microblog 
    webapps/microblog/styles.css 
    webapps/microblog/index.html 
    webapps/microblog/css/styles.css 
    webapps/microblog/WEB-INF/css/styles.css 
    webapps/microblog/WEB-INF/jsp/admintest/styles.css 
    webapps/microblog/WEB-INF/jsp/admintest/test.jsp 

Vậy làm thế nào để có được Tomcat 6 để giải quyết .css file?

Trả lời

8

Có thể đường dẫn CSS tương đối sai. Làm cho nó liên quan đến miền thay vì đường dẫn tương đối. Thêm vào trước nó với đường dẫn ngữ cảnh (đó là /microblog trong trường hợp của bạn):

<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/styles.css"> 

Lưu ý rằng các nguồn lực trong /WEB-INF không publicitly thể truy cập. Chúng chỉ có thể truy cập bởi RequestDispatcher trong các servlet hoặc theo số <jsp:include> trong các JSP. Đặt chúng bên ngoài /WEB-INF.

Nếu vẫn không hoạt động, thì có khả năng một servlet hoặc bộ lọc được ánh xạ trên mẫu URL / hoặc /* không hoạt động đúng cách.

+0

Cảm ơn cả hai. Thông tin này rất hữu ích. Với các thay đổi được đề xuất của bạn và một thay đổi đối với , (thay đổi mẫu từ/sang * .html) điều này đang hoạt động. Tôi muốn hiểu lý do tại sao thay đổi mẫu url bật Tomcat để giải quyết các thay đổi. Bất kỳ ai có thể chỉ cho tôi bài viết hoặc cung cấp giải thích. Cảm ơn bạn trước. – user976831

+2

Nếu bạn ánh xạ một servlet trên '/' thì về cơ bản bạn sẽ ghi đè servlet mặc định của servletcontainer được sử dụng cho tất cả các yêu cầu không khớp với mẫu URL của tất cả các servlet được khai báo khác (ví dụ, các tài nguyên tĩnh như hình ảnh, CSS, JS , vv tập tin). Trong trường hợp của Tomcat, hãy kiểm tra http://tomcat.apache.org/tomcat-7.0-doc/default-servlet.html – BalusC

3

không ai trong số những điều sau đây sẽ làm việc triển khai để http://192.168.5.24:9191/microblog

<link rel="stylesheet" type="text/css" href="styles.css"> 

này một điểm đến http://192.168.5.24:9191/styles.css

<link rel="stylesheet" type="text/css" href="css/styles.css"> 

này một điểm đến http://192.168.5.24:9191/css/styles.css

<link rel="stylesheet" type="text/css" href="/css/styles.css"> 

này một điểm đến http://192.168.5.24:9191/css/styles.css

Bạn cần tiền tố đường dẫn ngữ cảnh:

<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/styles.css"> 

hoặc đường dẫn đầy đủ:

<link rel="stylesheet" type="text/css" href="<%=basePath%>/styles.css"> 

Các nguồn tài nguyên dưới/WEB-INF nên được loại bỏ vì chúng tôi không có sẵn cho các yêu cầu bên ngoài

6

Có lẽ đã khá muộn nhưng tôi đã xoay sở để giải quyết vấn đề này theo một cách khác.

Tôi có một tập tin đơn giản html bên WebContent của tôi và một thư mục css:

này đã không làm việc:

<link rel="stylesheet" type="text/css" href="css/style.css"> 

và không là cái này:

<link rel="stylesheet" type="text/css" href="/css/styles.css"> 

này đang làm việc, nhưng nó xấu xí (và nó cũng cho tôi một cảnh báo trong Eclipse):

<link rel="stylesheet" type="text/css" href="myproject/css/styles.css"> 

vì vậy tôi thấy rằng cũng là một trong này đang làm việc, và dường như là cách tiếp cận tốt nhất đối với tôi:

<link rel="stylesheet" type="text/css" href="./css/styles.css"> 
+0

Điều này rất tốt! $ {PageContext.request.contextPath} gây ra một số lỗi biên dịch ngẫu nhiên, điều đó đã khiến tôi cảm thấy phiền phức ... cảm ơn! – TacB0sS

+0

trang html đơn giản tuyệt vời tôi đang sử dụng nó cung cấp cho đường dẫn chính xác –

0

Cũng xem xét sử dụng HTML base tag do đó bạn không cần phải gõ $ {pageContext.request.contextPath } mọi lúc.

0

Điều này cũng xảy ra với tôi. Tôi đã giải quyết nó bằng cách đơn giản gõ một khoảng trống vào bất cứ đâu trong tệp css và lưu nó. Đường dẫn chỉ nên là "css/style.css". Dường như với tôi rằng đôi khi Tomcat sẽ không nhận ra tệp của bạn ngay lập tức nếu tệp đó (hoặc đường dẫn đến tệp) được thay đổi chẳng hạn như được đổi tên hoặc di chuyển. Cách duy nhất tôi tìm ra để làm cho Tomcat "nhận ra" thay đổi này là thực hiện một số thay đổi trong tệp và lưu nó, và việc triển khai lại hoặc làm mới sẽ không giúp ích nếu điều này chưa được thực hiện.

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