Hơi lười, tôi khá vui khi thấy rằng tôi có thể tạo một mã nguồn servlet mới bằng cách vào New -> Servlet, thay vì đi New -> Class và sau đó chỉnh sửa lớp đó thành một servlet.Tại sao tạo Servlets trong Eclipse phá vỡ tệp web.xml của tôi?
Tuy nhiên, tôi đã phát hiện ra rằng mỗi lần tôi tạo một servlet mới trong Eclipse, Eclipse sửa đổi tệp web.xml của tôi.
Cụ thể, nó sẽ thay đổi các yếu tố đầu vào: (. LINEBREAKS tôi)
<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:javaee="http://java.sun.com/xml/ns/javaee"
xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
id="WebApp_ID" version="2.4">
này dường như không nhất thiết là xấu, nhưng sau đó nó sẽ thay đổi khác nhau phụ yếu tố bằng cách đặt "JavaEE: "trước tên của họ, để chỉ ra rằng những yếu tố này thuộc về không gian tên đó.
Ví dụ, nó thay đổi
<display-name>ShowLifecycles</display-name>
để
<javaee:display-name>ShowLifecycles</javaee:display-name>
Sau đó làm lu mờ sau đó phàn nàn về tất cả các yếu tố đó được sửa đổi, đem lại cho tôi ký hiệu như:
cvc-complex-type.2.4.a: Invalid content was found starting with element 'javaee:display-name'. One of '{"http://
java.sun.com/xml/ns/j2ee":description, "http://java.sun.com/xml/ns/j2ee":display-name, "http://java.sun.com/xml/ns/
j2ee":icon, "http://java.sun.com/xml/ns/j2ee":distributable, "http://java.sun.com/xml/ns/j2ee":context-param, "http://
java.sun.com/xml/ns/j2ee":filter, "http://java.sun.com/xml/ns/j2ee":filter-mapping, "http://java.sun.com/xml/ns/
j2ee":listener, "http://java.sun.com/xml/ns/j2ee":servlet, "http://java.sun.com/xml/ns/j2ee":servlet-mapping, "http://
java.sun.com/xml/ns/j2ee":session-config, "http://java.sun.com/xml/ns/j2ee":mime-mapping, "http://java.sun.com/xml/ns/
j2ee":welcome-file-list, "http://java.sun.com/xml/ns/j2ee":error-page, "http://java.sun.com/xml/ns/j2ee":jsp-config, "http://
java.sun.com/xml/ns/j2ee":security-constraint, "http://java.sun.com/xml/ns/j2ee":login-config, "http://java.sun.com/xml/ns/
j2ee":security-role, "http://java.sun.com/xml/ns/j2ee":env-entry, "http://java.sun.com/xml/ns/j2ee":ejb-ref, "http://
java.sun.com/xml/ns/j2ee":ejb-local-ref, "http://java.sun.com/xml/ns/j2ee":service-ref, "http://java.sun.com/xml/ns/
j2ee":resource-ref, "http://java.sun.com/xml/ns/j2ee":resource-env-ref, "http://java.sun.com/xml/ns/j2ee":message-
destination-ref, "http://java.sun.com/xml/ns/j2ee":message-destination, "http://java.sun.com/xml/ns/j2ee":locale-
encoding-mapping-list}' is expected.
Để làm vấn đề tồi tệ hơn, khi tôi sử dụng tìm và thay thế để xóa tất cả thành "javaee:" Eclipse vẫn phàn nàn về những điều này mặc dù chúng không còn ở đó nữa. Tôi phải sao chép và dán toàn bộ tệp còn lại lên trên chính nó để làm cho những khiếu nại này biến mất.
Tôi chắc chắn Eclipse đang cố gắng hữu ích, dự đoán một số mong muốn hoặc cần cho không gian tên này. Làm cách nào để tôi có thể thực hiện một trong hai điều sau:
Hãy dừng làm việc này?
Tận dụng lợi thế của bất cứ điều gì nó đang cố gắng làm, và làm cho nó làm việc cho tôi thay vì chống lại tôi?
đây là một lý do chính đáng để tránh trình hướng dẫn Eclipse –
Bạn có thể sử dụng servlet 3.0 không? – Bozho
@Bozho - Tôi là người mới khi nói đến servlets. Có lẽ tôi có thể sử dụng servlet 3.0, nhưng tôi thậm chí không biết mình đang sử dụng phiên bản nào (tôi nghĩ là mới nhất) hoặc cách sử dụng phiên bản khác. –