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/14 21:32]
slonopotamus
jsf-ru:quickstart:hello_world [2006/01/26 22:48]
slonopotamus добавлено сведение о размере конечного файла
Line 1: Line 1:
-[[jsf-ru:​quickstart|К списку]] 
-====== 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, то прочитайте про [[.:​with_jboss|специфику работы JSF и JBoss'​а]]. 
-  * Реализация JSF. На данный момент существуют две реализации:​ 
-    * [[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]] 
-  Я работаю с первой,​ поэтому советую вам сделать то же. Иначе я просто не смогу вам помочь,​ если будут появляться какие-то ошибки,​ связанные с конкретной реализацией JSF. 
-  * Прямые руки 
  
-===== Рецепт ===== 
-  - Создайте обычное веб-приложение со следующей стурктурой:​ <​code>​ 
-jsf-helloworld/​ 
-              WEB-INF/ 
-                     lib/ 
-                     ​web.xml 
-                     ​faces-config.xml 
-              index.jspx 
-</​code>​ 
-  - Поместите в папку ''​lib''​ JAR-файлы с реализацией JSF. 
-  - Отредактируйте файл web.xml и добавьте в него следующее содержимое:​ <code xml> 
-<?xml version="​1.0"​ encoding="​UTF-8"?>​ 
-<web-app version="​2.4"​ 
-         ​xmlns="​http://​java.sun.com/​xml/​ns/​j2ee"​ 
-         ​xmlns:​xsi="​http://​www.w3.org/​2001/​XMLSchema-instance"​ 
-         ​xsi:​schemaLocation="​http://​java.sun.com/​xml/​ns/​j2ee http://​java.sun.com/​xml/​ns/​j2ee/​web-app_2_4.xsd">​ 
-  <​display-name>​Hello,​ World</​display-name>​ 
-  <​context-param>​ 
-    <​param-name>​javax.faces.STATE_SAVING_METHOD</​param-name>​ 
-    <​param-value>​server</​param-value>​ 
-  </​context-param>​ 
-  <​context-param>​ 
-    <​param-name>​javax.faces.DEFAULT_SUFFIX</​param-name>​ 
-    <​param-value>​.jspx</​param-value>​ 
-  </​context-param>​ 
-  <​context-param>​ 
-    <​param-name>​com.sun.faces.validateXml</​param-name>​ 
-    <​param-value>​true</​param-value>​ 
-  </​context-param>​ 
-  <​context-param>​ 
-    <​param-name>​com.sun.faces.verifyObjects</​param-name>​ 
-    <​param-value>​true</​param-value>​ 
-  </​context-param>​ 
-  <​servlet>​ 
-    <​display-name>​Faces Servlet</​display-name>​ 
-    <​servlet-name>​Faces Servlet</​servlet-name>​ 
-    <​servlet-class>​ 
-      javax.faces.webapp.FacesServlet 
-    </​servlet-class>​ 
-    <​load-on-startup>​0</​load-on-startup>​ 
-  </​servlet>​ 
-  <​servlet-mapping>​ 
-    <​servlet-name>​Faces Servlet</​servlet-name>​ 
-    <​url-pattern>​*.jsf</​url-pattern>​ 
-  </​servlet-mapping>​ 
-  <​listener>​ 
-    <​listener-class>​com.sun.faces.config.ConfigureListener</​listener-class>​ 
-  </​listener>​ 
-  <​security-constraint>​ 
-    <​web-resource-collection>​ 
-      <​web-resource-name>​Restrict direct access to JSPs</​web-resource-name>​ 
-      <​url-pattern>​*.jspx</​url-pattern>​ 
-    </​web-resource-collection>​ 
-    <​auth-constraint></​auth-constraint>​ 
-  </​security-constraint>​ 
-</​web-app>​ 
-</​code>​ Для тех, кто знаком с web-приложениями на Java, тут всё должно быть вполне понятно. Несколько пояснений:​ 
-    - Я люблю JSPX, поэтому в качестве расширения для файлов,​ которые JSF должен считать свои страницы,​ выбрал именно jspx. Если вам так не нравится,​ то можете спокойно убрать параметр ''​javax.faces.DEFAULT_SUFFIX''​ (по умолчанию он равен именно ''​.jsp''​). 
-    - Сервлет,​ отвечающий за JSF, я привязываю к расширению ''​*.jsf''​. Хотя в официальной документации чаще используется ''​.faces'',​ оно слишком длинное,​ поэтому я его не использую. 
-    - Крайне необходимо запретить прямой доступ к JSP(X)-страницам. Т.к. если к ним обратиться напрямую (через из собственное расширение ''​.jsp(x)'',​ а не через сервлет (расширение ''​.jsf''​),​ то всё будет плохо. Это сделано с помощью ''​security-constraint'''​а,​ которому не даны никакие роли. 
-    - **ВНИМАНИЕ!** Совершенно необходимо не забыть добавить листенера,​ иначе ничего работать не будет. Самое гнусное,​ что это нигде не написано,​ поэтому все начинающие JSF-писатели тратят кучу времени на попытки выяснить,​ почему у них ничего не работает. 
-    - Если вы решили использовать MyFaces, то вам понадобится убрать все настройки,​ начинающиеся на ''​com.sun''​ (они действительны только для Sun'​овской реализации JSF) и изменить листенера на //​какой-то другой//​ FIXME. 
-  - Отредактируйте файл ''​index.jspx''​ и добавьте в него следующее содержимое:<​code xml> 
-<?xml version="​1.0"​ encoding="​UTF-8"?>​ 
-<​jsp:​root xmlns:​f="​http://​java.sun.com/​jsf/​core"​ 
-          xmlns:​jsp="​http://​java.sun.com/​JSP/​Page"​ 
-          xmlns:​h="​http://​java.sun.com/​jsf/​html"​ 
-          xmlns:​xsd="​http://​www.w3.org/​2001/​XMLSchema"​ 
-          xmlns:​xsi="​http://​www.w3.org/​2001/​XMLSchema-instance"​ 
-          xmlns="​http://​www.w3.org/​1999/​xhtml"​ 
-          version="​2.0">​ 
-    <​f:​view>​ 
-      <​html>​ 
-      <​body>​ 
-        <​h:​form>​ 
-          <​h:​outputText value="​Hello,​ world!"/>​ 
-        </​h:​form>​ 
-      </​body>​ 
-      </​html>​ 
-    </​f:​view>​ 
-</​jsp:​root>​ 
-</​code>​ Что здесь что: 
-    - ''<​f:​view>''​ - это //​корень всех зол//. Шучу. Это корневой тег, внутри которого должны располагаться все теги, имеющие отношение к JSF. Что делать когда теги используются в разных файлах,​ которые с помощью механизма ''<​jsp:​include>''​ (или любых обёрток вокруг него) собираются в одну страницу,​ не спрашивайте. Потому что //я пока что не знаю//. Вообще,​ библиотека тегов ''<​f:​...>''​ содержит в себе все базовые теги, не зависящие от того, какой будет формат у результирующих документов. А библиотека тегов ''<​h:​...>''​ содержит теги, специфичные для HTML'​я. 
-    - ''<​h:​form>''​ создаёт HTML-тег ''<​form>''​ и кучу всякой дряни, необходимой для функционирования JSF. 
-    - И наконец,​ ''<​h:​outputText>''​ выводит текст. Этот тег гораздо более функционален,​ чем просто вывод текста,​ но о его остальной функциональности вы узнаете потом. 
- 
-FIXME Дать ссылку на war-архив с конечным результатом. 
jsf-ru/quickstart/hello_world.txt · Last modified: 2019/06/12 16:08 (external edit)