Автор работы: Пользователь скрыл имя, 12 Октября 2010 в 00:07, Не определен
1. Технология JavaServer Faces
2. Понятие Managed Bean и конфигурация JSF-проекта
3. Демонстрационная задача и реализация
</context-param>
<context-param>
<param-name>javax.faces.STATE_
<param-value>client</param-
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.
<load-on-startup>1</load-on-
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>
index.jsp
</welcome-file>
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/error.jsp</
</error-page>
</web-app>
4.2. faces-config.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-
<faces-config>
<managed-bean>
<managed-bean-name>test</
<managed-bean-class>testpack.
<managed-bean-scope>session</
</managed-bean>
<navigation-rule>
<navigation-case>
<from-outcome>result</from-
<to-view-id>/result.jsp</to-
</navigation-case>
</navigation-rule>
</faces-config>
4.3. MyTest.java
package testpack;
import javax.faces.model.SelectItem;
public class MyTest {
// Номер текущего вопроса
private int
curQuestion = 0;
// Массив вопросов
private String[] Questions = {
"Сколько у треугольника сторон?",
"Сколько у четырёхугольника углов?",
"Что такое JSF?"
};
// Массив массивов ответов на вопросы
private String[][] Answers = {
{"1", "2", "3", "4"},
{"0", "4", "8"},
{"JavaServer Faces", "Java Sun Foundation"}
};
// Массив номеров правильных ответов
private int[] CorAns = {
2, 1, 0
};
// Массив данных ответов
private int[] givenAns = {
0, 0, 0
};
// Строка результата
private String result = null;
// Массив возможных ответов на текущий вопрос
private SelectItem[] curAnsItems;
// Текущий вопрос
private String Quest;
public String next(){
if (getCurQuestion() < Questions.length - 1) {
++curQuestion;
}
return "";
}
public String prev(){
if (getCurQuestion() > 0) {
--curQuestion;
}
return "";
}
public String res(){
int n = Questions.length;
int m = 0;
for (int i = 0; i < n; ++i){
if (CorAns[i] == givenAns[i]){
++m;
}
}
this.result = "Итого правильных ответов "+m+" из "+n+".";
return "result";
}
public MyTest() {
}
public String getQuest() {
return Questions[getCurQuestion()];
}
public Integer getCurAns() {
return new Integer(givenAns[
}
public void setCurAns(Integer curAns) {
givenAns[getCurQuestion()] = curAns.intValue();
}
// Подготовка
списка ответов для
public SelectItem[] getCurAnsItems() {
SelectItem[] tmp = new SelectItem[Answers[
for (int i = 0; i < Answers[getCurQuestion()].
tmp[i] = new SelectItem(new Integer(i), Answers[getCurQuestion()][i]);
}
return tmp;
}
// Можно ли "Вперёд"
public boolean isCanNext(){
return getCurQuestion() < Questions.length - 1;
}
// Можно ли "Назад"
public boolean isCanPrev(){
return getCurQuestion() > 0;
}
// Отображать ли "Результат"
public boolean isCanFinish(){
return getCurQuestion() == Questions.length - 1;
}
public String getResult() {return result;}
public int getCurQuestion() {return curQuestion;}
}
4.4. index.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/
<link href="./css/public.css" rel="stylesheet" type="text/css"/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Web-тест!</title>
</head>
<body>
<h1>Добро пожаловать!</h1>
<a href="./faces/test.jsp">
</body>
</html>
4.5. test.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib prefix="f"
uri="http://java.sun.com/jsf/
<%@taglib prefix="h"
uri="http://java.sun.com/jsf/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/
<link href="./css/public.css" rel="stylesheet" type="text/css"/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Тест</title>
</head>
<body>
<f:view>
<h1><h:outputText value="Вопрос №#{test.
<h:form>
<h:panelGrid columns="1">
<h:outputText value="#{test.quest}" />
<h:outputText value="Выберите ответ:" />
<h:selectOneRadio value="#{test.curAns}">
<f:selectItems value="#{test.curAnsItems}"/>
</h:selectOneRadio>
</h:panelGrid>
<h:panelGrid columns="2">
<h:commandButton value="Назад" action="#{test.prev}" disabled="#{!test.canPrev}"/>
<h:commandButton value="Вперёд" action="#{test.next}" disabled="#{!test.canNext}"/>
</h:panelGrid>
<h:commandButton value="Результат" action="#{test.res}"
rendered="#{test.canFinish}"/>
</h:form>
</f:view>
</body>
</html>
4.6. result.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib prefix="f"
uri="http://java.sun.com/jsf/
<%@taglib prefix="h"
uri="http://java.sun.com/jsf/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/
<link href="./css/public.css" rel="stylesheet" type="text/css"/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Web-тест -- результаты</title>
</head>
<body>
<h1>Результаты</h1>
<f:view>
<h:outputText value="#{test.result}"/>
</f:view>
</body>
</html>
4.7. error.jsp
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/
<link href="./css/public.css" rel="stylesheet" type="text/css"/>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Web-тест -- Ошибка!</title>
</head>
<body>
<h1>404. Докумет не найден</h1>
Страница, к которой Вы пытаетесь обратиться, не найдена. :(
</body>
</html>
Заключение
В настоящей работе показана актуальность применения компонентных технологий разработки web-приложений, таких, как ASP.NET и JSF, и приведены минусы устаревших технологий, таких, как PHP и CGI.
Изучены технологии JavaServer Pages и JavaServer Faces, даны их описания и приведены примеры использования на основе парадигмы MVC, рассмотрены основные элементы JSF: конфигурационный файл faces-config.xml и его элементы.
С помощью JSP и JSF в интегрированной среде разработки приложений NetBeans создан web-проект, позволяющий проводить тестирование пользователей с последующим отображением результатов (количество верно данных ответов).