Однако можно заставить Tomcat работать как полноценный сервер JSF-приложений. И сейчас я расскажу как это сделать по шагам. (Будем считать, что у вас уже установлен и работает Apache Tomcat 6.0).
- Загрузите архив mojarra-1.2_09-b02-FCS-binary.zip с сайта https://javaserverfaces.dev.java.net/
Распакуйте из этого архива библиотеки jsf-api.jar и jsf-impl.jar и положите их в каталог CATALINA_HOME/lib. - Перенесите библиотеки jstl.jar и standard.jar из каталога CATALINA_HOME/webapps/examples/WEB-INF/lib в каталог CATALINA_HOME/lib.
- Создайте тестовое JSF-приложение.
Структура каталогов:
CATALINA_HOME/webapps/loginjsf
|-WEB-INF
| |-classes
| | |-com
| | |-corejsf
| | |-UserBean.class
| |-web.xml
| |-faces-config.xml
|-index.html
|-index.jsp
|-welcome.jsp
Исходник UserBean.java:
package com.corejsf;
public class UserBean {
private String name;
private String password;
// PROPERTY: name
public String getName() { return name; }
public void setName(String newValue) { name = newValue; }
// PROPERTY: password
public String getPassword() { return password; }
public void setPassword(String newValue) { password = newValue; }
}
Содержимое файла
CATALINA_HOME/webapps/loginjsf/WEB-INF/web.xml:
<?xml version="1.0"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
Содержимое файла
CATALINA_HOME/webapps/loginjsf/WEB-INF/faces-config.xml:
<?xml version="1.0"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
version="1.2">
<navigation-rule>
<from-view-id>/index.jsp</from-view-id>
<navigation-case>
<from-outcome>login</from-outcome>
<to-view-id>/welcome.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>com.corejsf.UserBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
</faces-config>
Содержимое файла
CATALINA_HOME/webapps/loginjsf/WEB-INF/index.html:
<html>
<head>
<meta http-equiv="Refresh" content= "0; URL=index.faces"/>
<title>Start Web Application</title>
</head>
<body>
<p>Please wait for the web application to start.</p>
</body>
</html>
Содержимое файла
CATALINA_HOME/webapps/loginjsf/WEB-INF/index.jsp:
<html>
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<f:view>
<head>
<title>A Simple JavaServer Faces Application</title>
</head>
<body>
<h:form>
<h3>Please enter your name and password.</h3>
<table>
<tr>
<td>Name:</td>
<td>
<h:inputText value="#{user.name}"/>
</td>
</tr>
<tr>
<td>Password:</td>
<td>
<h:inputSecret value="#{user.password}"/>
</td>
</tr>
</table>
<p>
<h:commandButton value="Login" action="login"/>
</p>
</h:form>
</body>
</f:view>
</html>
Содержимое файла
CATALINA_HOME/webapps/loginjsf/WEB-INF/welcome.jsp:
<html>
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<f:view>
<head>
<title>A Simple JavaServer Faces Application</title>
</head>
<body>
<h:form>
<h3>
Welcome to JavaServer Faces,
<h:outputText value="#{user.name}"/>!
</h3>
</h:form>
</body>
</f:view>
</html> - Откройте строку адреса http://127.0.0.1:8080/loginjsf/ в окне броузера и убедитесь, что JSF-приложение работает.
Литература
- Гери Д., Хорстманн К. «JavaServer Faces», Вильямс, 2008, ISBN 978-5-8459-1396-8, 978-0-13-173886-7
В принципе подойдёт в качестве быстрого старта в деле программирования динамичных Web-страниц. Но не скажу, что книга для тех, кто не знает ЯП Java и язык разметки HTML. Кроме JSF рассматриваются несколько технологий Apache. Примеры не привязаны к конкретной среде программирования — нужен только Apache Ant для сборки проектов. - Дей Нейси, Мандел Лоренс, Райман Артур «Eclipse. Платформа Web-инструментов. Разработка Web-приложений на языке Java», КУДИЦ-ПРЕСС, 2008, ISBN 978-5-91136-051-1
Учит вести Web-проекты на примерах и разбираться со средой и окружением Eclipse. Жаль, что издание на русском языке вышло позже оригинального издания года на два.
Дополнительно
Включить по умолчанию отдачу контента в кодировке UTF-8 можно в server.xml Tomcat'а:
< connector
executor="tomcatThreadPool"
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="utf-8"
useBodyEncodingForURI="utf-8"/>
2 комментария:
так и так это можно сделать добавив либы в application.
интересно другое как томкат работает с jsf? если какой нибудь эксепшон, то тогда томкат летит....
Exceptions ловятся контейнером и обрабатываются по правилам, аналогичным JSP/Servlet's, поэтому контейнер не должен валится.
Отправить комментарий