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 revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
jsf-ru:quickstart:hello_world [2006/01/15 16:46] – исправлена ссылка на статью про JBoss slonopotamusjsf-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, то прочитайте про [[jsf-ru:faq: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 by 127.0.0.1