Технология JavaServer Faces

Автор работы: Пользователь скрыл имя, 12 Октября 2010 в 00:07, Не определен

Описание работы

1. Технология JavaServer Faces
2. Понятие Managed Bean и конфигурация JSF-проекта
3. Демонстрационная задача и реализация

Файлы: 1 файл

Кнопег.doc

— 357.50 Кб (Скачать файл)

    </context-param>

    <context-param>

        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>

        <param-value>client</param-value>

    </context-param>

    <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>

    <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</location>

    </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-facesconfig_1_1.dtd">

<faces-config>

    <managed-bean>

        <managed-bean-name>test</managed-bean-name>

        <managed-bean-class>testpack.MyTest</managed-bean-class>

        <managed-bean-scope>session</managed-bean-scope>

    </managed-bean>

    <navigation-rule>

        <navigation-case>

            <from-outcome>result</from-outcome>

            <to-view-id>/result.jsp</to-view-id>

        </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[getCurQuestion()]);

    }

   

    public void setCurAns(Integer curAns) {

        givenAns[getCurQuestion()] = curAns.intValue();

    }

   

    //  Подготовка  списка ответов для выпадающего  меню

    public SelectItem[] getCurAnsItems() {

        SelectItem[] tmp = new SelectItem[Answers[getCurQuestion()].length];

        for (int i = 0; i < Answers[getCurQuestion()].length; ++i){

            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/loose.dtd">

  

<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">Перейти к тестированию</a>

    </body>

</html> 

     4.5. test.jsp

<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>

<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>

<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<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.curQuestion + 1}" /></h1>

           

            <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/core"%>

<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<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/loose.dtd">

<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-проект, позволяющий проводить тестирование пользователей с последующим отображением результатов (количество верно данных ответов).

Информация о работе Технология JavaServer Faces