Ответы на проблемы, с которыми вы можете столкнуться в JSP
1. Как смешать Jsp и SSI #include?
Чистый HTML можно включить в JSP следующим образом:
< !--#include file="data.inc"-- >
Но если data.inc содержит JSP CODE, мы можем использовать:
< <A href=" mailto:%@include">%@include</A > file="data.inc"% > </P>
2. Как выполнить потокобезопасный JSP?
Просто добавьте следующую команду
< %@ страница isThreadSafe="false" % > </P>
3. Как JSP обрабатывает данные в HTML FORM?
Просто используйте встроенный объект запроса следующим образом:
<%
Строковый элемент = request.getParameter("элемент");
int HowMany = new Integer(request.getParameter("units")).intvalue();
% > </P>
4. Как включить статический файл в JSP?
Статическое включение выглядит следующим образом: < %@ include file="copyright.html" % >
Динамическое включение осуществляется следующим образом: < jsp:include page="copyright.html"lush="true"/ > </P>
5. Как использовать комментарии в JSP?
Существует четыре основных метода:
1. < %-- и --% >
2. //
3. /**и**/
4. < !--и-- > </P>
6. Как выполнить перенаправление просмотра в JSP?
Используйте следующий метод: response.sendRedirect(" <A href=" http://ybwen.home.chinaren.com/index.html">http://ybwen.home.chinaren.com/index.html</ A >");
Вы также можете физически изменить атрибут HTTP HEADER следующим образом:
<%
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
Строка newLocn="/newpath/index.html";
response.setHeader("Местоположение",newLocn);
% > </P>
7. Как предотвратить сохранение вывода в JSP или SERVLET в КЕШЕ БРАУЗЕРОМ?
Просто добавьте следующий скрипт в начало файла JSP:
<%
response.setHeader("Cache-Control","no-store"); //HTTP 1.1;
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader("Expires", 0); //предотвращает кэширование на прокси-сервере;
% > </P>
8. Как установить COOKIE в JSP?
COOKIE отправляется как часть HTTP-ЗАГОЛОВКА и может быть установлен следующим образом:
<%
Файл cookie mycookie = новый файл cookie («aName», «значение»);
ответ.addCookie(mycookie);
% > </P>
9. Как удалить COOKIE в JSP?
<%
Cookie killMyCookie = новый Cookie("mycookie", null);
killMyCookie.setMaxAge(0);
killMyCookie.setPath("/");
ответ.addCookie(killMyCookie);
% > </P>
10. Остановить выполнение JSP во время обработки запроса JSP можно следующим образом:
<%
if (request.getParameter("wen") != null) {
//сделать что-нибудь
} еще {
возвращаться;
}
% > </P>
11. Как определять методы в JSP. Вы можете определять методы, но не можете напрямую обращаться к встроенным объектам JSP, а передаете их через методы-параметры. следующее:
<%!
публичная строка HowBadFrom (HttpServletRequest req) {
HttpSession ses = req.getSession();
...
вернуть req.getRemoteHost();
}
%>
<%
out.print("в общем, Лао Ли не злодей");
%>
< %= HowBadFrom(request) % > </P>
12. Если БРАУЗЕР отключил файлы cookie, как я могу открыть СЕАНС в JSP, чтобы отслеживать и использовать перезапись URL-адресов, следующим образом:
hello1.jsp
< %@ page session="true" % >
<%
Целое число = новое целое число (100);
session.putvalue("num",num);
Строковый URL =response.encodeURL("hello2.jsp");
%>
< a href=< %=url% > >hello2.jsp< /a > </P>
hello2.jsp
< %@ page session="true" % >
<%
Целое число i = (Целое число)session.getvalue("num");
out.println("Числовое значение в сеансе равно "+i.intvalue());
% > </P>
13. Можно ли отправлять электронную почту в формате JSP? Вы можете использовать специальный пакет SUN: пакет sun.net.smtp. Следующий сценарий использует класс SmtpClient для отправки EMAIL.
< %@ page import="sun.net.smtp.SmtpClient, java.io.*" % >
<%
Строка from=" <A href=" mailto:[email protected]">[email protected]</A >";
Строку to=" <A href=" mailto:[email protected]">[email protected]</A >, <A href=" mailto:[email protected]">[email protected]. сп</A >";
пытаться{
Клиент SmtpClient = новый SmtpClient("mail.xxxxx.xxx");
client.from(от);
client.to(к);
Сообщение PrintStream = client.startMessage();
message.println("Кому: " + кому);
message.println("Тема: Отправка электронной почты из JSP!");
message.println("Это было отправлено со страницы JSP!");
сообщение.println();
message.println("Круто! :-)");
сообщение.println();
message.println("Хороший мальчик");
message.println("Я на сайте Genius.com");
сообщение.println();
клиент.ЗакрытьСервер();
}
поймать (IOException е) {
System.out.println("ОШИБКА ОТПРАВКИ ЭЛЕКТРОННОЙ ПОЧТЫ:"+e);
}
% > </P>
14. Могу ли я вызвать страницу ошибок JSP в SERVLET. Конечно, проблем нет. Ниже показано, как вызвать страницу ошибок JSP в логическом блоке управления SERVLET.
protected void sendErrorRedirect (запрос HttpServletRequest,
Ответ HttpServletResponse, строка errorPageURL,
Бросок е)
выдает ServletException, IOException {
request.setAttribute("javax.servlet.jsp.jspException", e);
getServletConfig().getServletContext().
getRequestDispatcher(errorPageURL).forward(запрос,
ответ);
} </P>
public void doPost (запрос HttpServletRequest, ответ HttpServletResponse) {
пытаться {
//сделать что-нибудь
} catch (исключение ex) {
пытаться {
sendErrorRedirect(запрос,ответ,"/jsp/MyErrorPage.jsp",ex);
} catch (Исключение е) {
е.printStackTrace();
}
}
} </P>
15. Как взаимодействуют JSP и APPLET?
Как JSP взаимодействует с EJB SessionBean Следующий фрагмент кода хорошо демонстрирует
< %@ page import="javax.naming.*, javax.rmi.PortableRemoteObject,
foo.AccountHome, foo.Account" % >
<%!
//Определяем глобальную ссылку на экземпляр интерфейса SessionBeanHome
AccountHome accHome=null </P>
общественный недействительный jspInit () {
//Получаем экземпляр домашнего интерфейса
InitialContext cntxt = новый InitialContext ();
Object ref= cntxt.lookup("java:comp/env/ejb/AccountEJB");
accHome = (AccountHome)PortableRemoteObject.narrow(ref,AccountHome.class);
}
%>
<%
//Создание экземпляра SessionBean
Аккаунт аккаунта = accHome.create();
//Вызов удаленного метода
acct.doWhatever(...);
// и так далее
% > </P>
16. Как предотвратить отображение полей с «нулевыми значениями» в текстовых полях ввода HTML при использовании набора результатов?
Для достижения этой цели можно определить простую функцию следующим образом:
<%!
Строка пустое значение (String s) {
возврат (с == ноль) "": s;
}
% > </P>
Затем в ФОРМЕ JSP вы можете использовать его вот так
< input type="text" name="shoesize" value="< %=blanknull(shoesize)% >" > </P>
17. Как загрузить файл (например: двоичный, текстовый, исполняемый) в SERVLET или JSP?
Теперь предлагаются два решения:
О: Используйте HTTP,
B: В сервлете это можно сделать, установив ContentType и используя Stream и другие классы пакета java.io. Например:
response.setContentType("application/x-msword");
Затем просто напишите что-нибудь в выходной буфер. </P>
18. Как принять параметры инициализации при инициализации BEAN с использованием флага useBean. Просто используйте следующие два тега:
< jsp:getProperty name="wenBean" property="someProperty"/ >
< jsp:setProperty name="wenBean" property="someProperty" value="somevalue"/ > </P>
19. Как получить информацию о браузере клиента с помощью JSP?
Просто используйте request.getHeader(String)</P>
20. Можно ли вызвать JSP как подпрограмму?
Конечно, вы можете использовать< jsp:include page="relativeURL"lush="true"/ > </P>
21. Почему после перекомпиляции класса, используемого моей JSP, JVM продолжает использовать мой старый CLASS? </P>
В чем разница между < <A href=" mailto:%@include">%@include</A > file="abc.jsp"% > и < jsp:include page="abc.jsp"/ >?
Первый вариант – статическое включение, второй – динамическое включение.</P>
22. Недостатки JSP?
1. В отладке JAVA-программ нет ничего хорошего.
2. Поскольку большинство механизмов сервлетов не поддерживают пул соединений.
3. Для механизмов сервлетов не существует стандарта.
4. Взаимодействие JSP с другими языками сценариев</P>
23. Может ли JSP выполнять рекурсивные вызовы?
Конечно, можете, если отправите форму на этой странице.</P>
34. Как реализовать интернационализацию JSP?
Просто предоставьте файлы свойств пакетов ресурсов для различных версий</P>
25. Как писать текстовые файлы в JSP?
Используйте объект PrintWriter, например:
< %@ page import="java.io.*" % >
<%
String str = "распечатай меня";
Строка nameOfTextFile = "/usr/anil/imp.txt";
пытаться {
PrintWriter pw = новый PrintWriter (новый FileOutputStream (nameOfTextFile));
pw.println(стр);
пв.закрыть();
} catch(IOException e) {
out.println(e.getMessage());
}
% > </P>
26. Как включить файлы с абсолютным путем в JSP?
Просто используйте URLConnection. </P>
27. Могут ли объекты сеанса совместно использоваться сервлетами и JSP?
конечно,
Сеанс HttpSession = request.getSession(true);
session.putvalue("переменная","значение" </P>
28. Можно ли скопировать переменные Javascript в JSP SESSION? </P>
29. Как настроить срок действия файлов cookie через определенное время?
Используйте Cookie.setMaxAge(int) </P>
30. Как узнать текущее количество сессий?
Вы можете использовать HttpSessionBindingListeners для отслеживания</P>
31. Могу ли я настроить код для запуска всех моих файлов JSP? Если да, то можно ли этим поделиться?
Конечно, вы можете определить псевдоним для вашего JSP-файла: /jsp/=ybwen.genius.myPreprocessingServlet, и можно использовать файлы с префиксом /jsp/</P>
32. Возможна ли синхронизация страницы JSP, если несколько клиентов запрашивают ее одновременно?
Каковы преимущества использования beanName в синтаксисе jsp:useBean?
beanName использует Beans.instantiate() для инициализации компонента </P>
33. Когда я использую < jsp:forward >, адресная строка браузера не меняется?
Используйте response.sendRedirect("newURL") </P>
34. Как преобразовать файлы версии JSP 0.9 в JSP1.1?
Просто используйте sed/awk</P>
35. Можете ли вы использовать JSP для установки фокуса поля ввода в HTML-ФОРМЕ без использования Javascript?
Ни в коем случае</P>
36. Как лучше всего подключиться к буферному пулу соединений с базой данных с помощью JSP?
1. Используйте драйвер с этой службой в JDBC2.0.
2. Используйте сервер приложений, предоставляющий эту услугу.