Да, у меня есть doctype в web.xml
blockquote>
Удалите это
из
web.xml
, и все должно быть хорошо. Допустимый сервлет 3.0 (Tomcat 7, JBoss AS 6/7, GlassFish 3 и т. Д.), Совместимый сweb.xml
, представлен ниже, без каких-либо:
Для сервлета 3.1 ( Tomcat 8, WildFly 8/9/10/11, GlassFish / Payara 4 и т. Д.), Он выглядит следующим образом:
Для сервлета 4.0 (Tomcat 9, WildFly 12, GlassFish / Payara 5 и т. Д. ), это выглядит следующим образом:
При использовании JSTL 1.1 или новее вам нужно убедиться, что ваш
web.xml
объявлен таким образом, что webapp работает, по крайней мере, с сервлета 2.4, иначе EL выражения не будут работать в webapp.Если у вас еще есть сервлет 2.3 или старше
в
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.См. также:
Вы могли ввести элемент сценария в ЗАГОЛОВОК документа с обратным вызовом, который передает cookie, в котором Вы нуждаетесь к любой функции, нуждается в нем.
Что-то как:
<script type="text/javascript">
var newfile=document.createElement('script');
newfile.setAttribute("type","text/javascript");
newfile.setAttribute("src", 'http://first.com/doAjax?getCookie&callback=passCookie');
document.getElementsByTagName("head")[0].appendChild(newfile);
</script>
И страница first.com/doAjax?getCookie мог сделать это:
passCookie({'name':'mycookie', 'value':'myvalue'});
Поместите этот PHP-файл в first.com:
//readcookie.php
echo $_COOKIE['cookiename'];
На second.com можно использовать этот JavaScript для получения значения:
function readCookieCallback()
{
if ((this.readyState == 4) && (this.status == 200))
{
alert("the value of the cookie is: "+this.responseText);
}
else if ((this.readyState == 4) && (this.status != 200))
{
//error...
}
}
function buttonClickOrAnything()
{
var refreshObject = new XMLHttpRequest();
if (!refreshObject)
{
//IE6 or older
try
{
refreshObject = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
refreshObject = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
return;
}
}
}
refreshObject.onreadystatechange = readCookieCallback;
refreshObject.open("GET", "http://www.first.com/readcookie.php");
refreshObject.send();
}
С уважением, Robert
Для УСТАНОВКИ cookie можно изменить мой сценарий следующим образом:
Новый Сценарий PHP:
//writecookie.php
setcookie($_GET['c'], $_GET['v']);
И JavaScript:
function buttonClickOrAnything()
{
var refreshObject = new XMLHttpRequest();
if (!refreshObject)
{
//IE6 or older
try
{
refreshObject = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
refreshObject = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
return;
}
}
}
refreshObject.open("GET", "http://www.first.com/writecookie.php?c=cookiename&v=cookievalue");
refreshObject.send();
}
Это должно работать над всеми браузерами.