User Tools

Site Tools


jsf-ru:quickstart:hello_world

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
jsf-ru:quickstart:hello_world [2006/01/15 16:46]
slonopotamus исправлена ссылка на статью про JBoss
jsf-ru:quickstart:hello_world [2019/06/12 16:08] (current)
Line 2: Line 2:
 ====== Hello, World! ====== ====== Hello, World! ======
 Как и все нормальные люди, начнём изучение JSF с простенькой программы Hello, world! Как и все нормальные люди, начнём изучение JSF с простенькой программы Hello, world!
 +
 ===== Необходимые ингредиенты ===== ===== Необходимые ингредиенты =====
   * Веб-сервер,​ поддерживающий Servlet API 2.3 и JSP 1.2 или выше. Хотя на дворе уже давно 21-ый век и я посоветую скачать веб-сервер с поддержкой Servlet API 2.4 и JSP 2.0. Поверьте,​ вам же будет проще и удобней. Рекомендую [[http://​tomcat.apache.org/​|Apache Tomcat]] или [[http://​www.jboss.com/​products/​jbossas|JBoss Application Server]]. Tomcat менее функционален,​ но значительно "​легче"​ и быстрее. Если вы не знаете,​ в чём между ними разница,​ то с большой вероятностью вам хватит Tomcat'​а. В любом случае для этого приложения разницы не будет никакой. В любом случае если вы будете писать свои JSF-приложения //​правильно//,​ то вы с легкостью в любой момент сможете менять веб-сервер. **ВНИМАНИЕ!** Если вы выбрали JBoss, то прочитайте про [[jsf-ru:​faq:​with_jboss|специфику работы JSF и JBoss'​а]].   * Веб-сервер,​ поддерживающий Servlet API 2.3 и JSP 1.2 или выше. Хотя на дворе уже давно 21-ый век и я посоветую скачать веб-сервер с поддержкой Servlet API 2.4 и JSP 2.0. Поверьте,​ вам же будет проще и удобней. Рекомендую [[http://​tomcat.apache.org/​|Apache Tomcat]] или [[http://​www.jboss.com/​products/​jbossas|JBoss Application Server]]. Tomcat менее функционален,​ но значительно "​легче"​ и быстрее. Если вы не знаете,​ в чём между ними разница,​ то с большой вероятностью вам хватит Tomcat'​а. В любом случае для этого приложения разницы не будет никакой. В любом случае если вы будете писать свои JSF-приложения //​правильно//,​ то вы с легкостью в любой момент сможете менять веб-сервер. **ВНИМАНИЕ!** Если вы выбрали JBoss, то прочитайте про [[jsf-ru:​faq:​with_jboss|специфику работы JSF и JBoss'​а]].
Line 7: Line 8:
     * [[http://​javashoplm.sun.com/​ECom/​docs/​Welcome.jsp?​StoreId=22&​PartDetailId=jsf-1_1_01-fcs-oth-JPR&​TransactionId=noreg|JavaServer Faces v1.1.01 Reference Implementation]]     * [[http://​javashoplm.sun.com/​ECom/​docs/​Welcome.jsp?​StoreId=22&​PartDetailId=jsf-1_1_01-fcs-oth-JPR&​TransactionId=noreg|JavaServer Faces v1.1.01 Reference Implementation]]
     * [[http://​myfaces.apache.org/​|Apache MyFaces]]     * [[http://​myfaces.apache.org/​|Apache MyFaces]]
-  Я работаю с первой,​ поэтому советую вам сделать то же. Иначе я просто не смогу вам помочь,​ если будут появляться какие-то ошибки,​ связанные с конкретной реализацией JSF. 
   * Прямые руки   * Прямые руки
 +
  
 ===== Рецепт ===== ===== Рецепт =====
Line 71: Line 72:
     - Крайне необходимо запретить прямой доступ к JSP(X)-страницам. Т.к. если к ним обратиться напрямую (через из собственное расширение ''​.jsp(x)'',​ а не через сервлет (расширение ''​.jsf''​),​ то всё будет плохо. Это сделано с помощью ''​security-constraint'''​а,​ которому не даны никакие роли.     - Крайне необходимо запретить прямой доступ к JSP(X)-страницам. Т.к. если к ним обратиться напрямую (через из собственное расширение ''​.jsp(x)'',​ а не через сервлет (расширение ''​.jsf''​),​ то всё будет плохо. Это сделано с помощью ''​security-constraint'''​а,​ которому не даны никакие роли.
     - **ВНИМАНИЕ!** Совершенно необходимо не забыть добавить листенера,​ иначе ничего работать не будет. Самое гнусное,​ что это нигде не написано,​ поэтому все начинающие JSF-писатели тратят кучу времени на попытки выяснить,​ почему у них ничего не работает.     - **ВНИМАНИЕ!** Совершенно необходимо не забыть добавить листенера,​ иначе ничего работать не будет. Самое гнусное,​ что это нигде не написано,​ поэтому все начинающие JSF-писатели тратят кучу времени на попытки выяснить,​ почему у них ничего не работает.
-    - Если вы решили использовать MyFaces, то вам понадобится убрать все настройки,​ начинающиеся на ''​com.sun''​ (они действительны только для Sun'​овской реализации JSF) и изменить листенера на //какой-то другой// FIXME.+    - Если вы решили использовать MyFaces, то вам понадобится убрать все настройки,​ начинающиеся на ''​com.sun''​ (они действительны только для Sun'​овской реализации JSF) и изменить листенера на ''​org.apache.myfaces.webapp.StartupServletContextListener''​. 
 +  - Отредактируйте файл ''​faces-config.xml''​ и добавьте в него следующее содержимое:<​code xml> 
 +<?xml version='​1.0'​ encoding='​UTF-8'?>​ 
 +<​!DOCTYPE faces-config PUBLIC 
 +    "-//Sun Microsystems,​ Inc.//DTD JavaServer Faces Config 1.1//​EN"​ 
 +    "​http://​java.sun.com/​dtd/​web-facesconfig_1_1.dtd">​ 
 +<​faces-config>​ 
 +</​faces-config>​ 
 +</​code>​ Это основной конфиг для JSF-приложений. В нём пока ничего нет, но он понадобится для последующих примеров.
   - Отредактируйте файл ''​index.jspx''​ и добавьте в него следующее содержимое:<​code xml>   - Отредактируйте файл ''​index.jspx''​ и добавьте в него следующее содержимое:<​code xml>
 <?xml version="​1.0"​ encoding="​UTF-8"?>​ <?xml version="​1.0"​ encoding="​UTF-8"?>​
Line 96: Line 105:
     - И наконец,​ ''<​h:​outputText>''​ выводит текст. Этот тег гораздо более функционален,​ чем просто вывод текста,​ но о его остальной функциональности вы узнаете потом.     - И наконец,​ ''<​h:​outputText>''​ выводит текст. Этот тег гораздо более функционален,​ чем просто вывод текста,​ но о его остальной функциональности вы узнаете потом.
  
-FIXME Дать ссылку на war-архив с конечным ​результатом.+ 
 +===== Результат ===== 
 +{{hello_world.war|Конечный WAR-файл}} (1.7mb) (для JBoss'​а,​ нужно просто положить в папку ''​deploy''​ и любоваться ​результатом ​по ссылке [[http://​localhost:​8080/​hello_world/​index.jsf]])
jsf-ru/quickstart/hello_world.1137343605.txt.gz · Last modified: 2019/06/12 16:12 (external edit)