Новый веб-API ASP.NET является продолжением предыдущего проекта WCF Web API (хотя некоторые из концепций изменились ) .
WCF был создан для включения служб на основе SOAP. Для более простых служб RESTful или RPCish (например, таких как jQuery) ASP.NET Web API должен быть хорошим выбором.
Да, у меня есть doctype в web.xml
blockquote><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "java.sun.com/dtd/web-app_2_3.dtd"; >
Удалите это
<!DOCTYPE>
изweb.xml
, и все должно быть хорошо. Допустимый сервлет 3.0 (Tomcat 7, JBoss AS 6/7, GlassFish 3 и т. Д.), Совместимый сweb.xml
, представлен ниже, без каких-либо<!DOCTYPE>
:<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <!-- Config here. --> </web-app>
Для сервлета 3.1 ( Tomcat 8, WildFly 8/9/10/11, GlassFish / Payara 4 и т. Д.), Он выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <!-- Config here. --> </web-app>
Для сервлета 4.0 (Tomcat 9, WildFly 12, GlassFish / Payara 5 и т. Д. ), это выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!-- Config here. --> </web-app>
При использовании JSTL 1.1 или новее вам нужно убедиться, что ваш
web.xml
объявлен таким образом, что webapp работает, по крайней мере, с сервлета 2.4, иначе EL выражения не будут работать в webapp.Если у вас еще есть сервлет 2.3 или старше
<!DOCTYPE>
вweb.xml
, даже если у вас уже есть сервлет 2.4 или более новый XSD, тогда он все равно будет вынужден для запуска в сервлетах 2.3 или более старых modus, в результате чего EL-выражения не срабатывают.. Техническая причина: EL первоначально был частью JSTL 1.0 и недоступен в Servlet 2.3 / JSP 1.2 и старше. В JSTL 1.1 EL был удален из JSTL и интегрирован в JSP 2.0, который идет вместе с Servlet 2.4. Итак, если ваш
web.xml
объявлен для запуска webapp в Servlet 2.3 или более раннем модуле, JSP ожидает найти EL в библиотеке JSTL, но это, в свою очередь, потерпит неудачу, если это новая версия JSTL, лишенная EL.См. также:
В моем случае для файла web.xml (version = "3.0") мне пришлось запустить приложение на сервере Tomcat v.8 вместо v.7, иначе у меня была такая же проблема, как и вы. Надеюсь, это поможет кому-то ...
<?xml version="1.0" encoding="ISO-8859-1" ?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">