Переопределение контекстного меню щелчка правой кнопкой в веб-браузерах - за и против

Обычная практика состоит в том, чтобы сконфигурировать это как DataSource в контейнере сервлетов . Он предоставит вам средства объединения пулов, которые значительно улучшат производительность. Также обычной практикой является экстернализация исходных настроек в каком-либо файле конфигурации, который был помещен в путь к классам.

Если вы используете Tomcat в качестве servletcontainer, вам необходимо настроить источник данных в соответствии с его документацией JNDI . Вы увидите, что есть несколько способов. Самый простой способ - создать /META-INF/context.xml в webcontent вашего динамического веб-проекта (ясно, что /META-INF находится на том же уровне, что и /WEB-INF webapp) и заполнить его чем-то вроде:




    

Это примерно означает, что сервер Tomcat должен создать источник данных с именем JNDI jdbc/db с максимум 100 активными соединениями, максимум 30 простоями соединений и максимальным временем ожидания 10000 миллисекунд до того, как соединение должно (фактически: закрыто вашим приложением, поэтому ваше приложение имеет 10 секунд времени между приобретением соединения и закрытием соединения). Остальные настройки должны быть знакомы и достаточно объяснять вам; это настройки JDBC.

Наконец, в вашем веб-проекте отредактируйте файл /WEB-INF/web.xml, чтобы добавить следующую запись:


    jdbc/db
    javax.sql.DataSource

Это примерно означает, что веб-приложение должно использовать предоставленный сервером источник данных с помощью имя jdbc/db.

Затем измените свой диспетчер подключений на что-то вроде этого:

private DataSource dataSource;

public Database(String jndiname) {
    try {
        dataSource = (DataSource) new InitialContext().lookup("java:comp/env/" + jndiname);
    } catch (NamingException e) {
        // Handle error that it's not configured in JNDI.
        throw new IllegalStateException(jndiname + " is missing in JNDI!", e);
    }
}

public Connection getConnection() {
    return dataSource.getConnection();
}

.. и замените все Class.forName(driver) вызовы на new Database("jdbc/db") и замените все DriverManager.getConnection() вызывает database.getConnection(). Вы можете при необходимости получить значение jdbc/db из некоторого файла конфигурации ( Файл свойств? ).

В качестве альтернативы введите DataSource через @Resource внутри управляемого контейнером артефакта, такого как класс сервлетов @WebServlet :

@Resource("jdbc/db")
private DataSource dataSource;

Это должно быть так. Просто разверните веб-приложение с указанными выше изменениями и запустите его. Не забудьте поместить драйвер JDBC базы данных в Tomcat/lib или добавить свой путь к свойству shared.loader в Tomcat/conf/catalina.properties, поскольку ответственность за загрузку драйвера JDBC теперь переносится из веб-приложения на сервер. Для получения дополнительных советов и других основных примеров JDBC / JNDI вы можете найти эту статью .

См. Также:

23
задан Esteban Küber 2 October 2009 в 14:54
поделиться

8 ответов

Вы не можете сделать этого надежно так или иначе. В Firefox перейдите к Настройкам, Содержанию, JavaScript / Усовершенствованный (я предполагаю подписи, никакой английский Firefox (;) для переопределения поведения контекстного меню и удара приложение больше не работает. Мое заявление на дистанционное банковское обслуживание сделало это в их старой версии, таким образом, я не мог сделать копии & вставка с мышью. Я ненавидел его, таким образом, я включил защиту в Firefox, и это работало. Отчасти. Их новая версия больше не делает таких плохих вещей.

Вместо этого используйте немного выпадающей стрелки, где контекстное меню необходимо, который может или быть нажат или просто колебался для показа меню. JetBrains веб-приложение TeamCity делает это очень хорошо.

35
ответ дан OregonGhost 29 November 2019 в 01:33
поделиться

Если Ваше приложение должно работать в интранет, возможно, аргументы разработчика UI допустимы: пока все пользователи приложения известны, и Вы хотите эмулировать некоторое Приложение Windows, я думаю, что нормально ограничивать щелчок правой кнопкой или любой другой вход, потому что это - просто требования этого приложения, как это было бы к любому другому приложению.

, Но если Ваше приложение должно работать в Интернете, отключая или заменяя щелчок правой кнопкой, очень плохая идея, и это только некоторые аргументы, о которых я напомнил:

  • , В первую очередь, изменяя поведение пользовательского интерфейса является агрессивным и раздражающим - никто не хочет привыкнуть к "новым средствам управления" только для доступа к сайту, и обычно люди очень не хотят оставить свою область комфорта. Я имею в виду, я знаю то, что делает мой щелчок правой кнопкой и я хочу, чтобы он всегда делал то же самое.

  • Люди могут понять различие между Приложениями Windows и веб-приложениями, таким образом, нет никакой потребности "эмулировать поведение Приложения Windows".

  • Не все используют Windows:-)

  • кроме того, это - innefective, шестерка, там несколько способов перезаписать это поведение, такое как настройки в Firefox или даже плагинах, которые отключают определенные инструкции JavaScript, такой как этот .

8
ответ дан Paulo Guedes 29 November 2019 в 01:33
поделиться

в зависимости от Вашей аудитории Вы получаете очень хорошую возможность, Ваши пользователи даже не ЗНАЮТ, что существует меню правой кнопки. Поэтому не делайте это единственной альтернативой

5
ответ дан Scott Evernden 29 November 2019 в 01:33
поделиться

Я лично полагаю, что необходимо оставить поведения браузера по умолчанию в покое... пользователи привыкли к ним, таким образом, никакая потребность привыкнуть их для Ваш способ сделать вещи.

Однако, если Вы создаете интранет (вместо общедоступного сайта), тогда я для тонкой настройки как можно больше для улучшения удобства использования.

1
ответ дан Seb 29 November 2019 в 01:33
поделиться

, потому что он хочет, чтобы веб-приложение больше было похоже на наше (существующее) Приложение Windows

, я думаю, щелкают правой кнопкой в Приложении Windows, плохая идея.

В веб-браузере это - бедствие UI, потому что никто не будет ожидать это.

1
ответ дан Jimmy J 29 November 2019 в 01:33
поделиться

Аргумент я использовал бы (в кавычках для сильного воздействия):

Отсутствие непротиворечивости & уменьшенная функциональность по сравнению с другими беспрепятственными веб-интерфейсами приведет к потере пользовательская уверенность - который является нежелательным по меньшей мере.

, Конечно, если многие или большинство пользователей веб-приложения уже знакомы с или обычные пользователи Приложения Windows, разработчик UI мог быть на правильном пути и , непротиворечивость с Приложением Windows могла быть победителем.

Тем не менее, по-моему, трудно сделать пользовательское контекстное меню в веб-странице интуитивным, и в то время как некоторые пользователи могли бы воодушевиться до него, я предполагаю, больше всего никогда не будет, вероятно, использовать его.

1
ответ дан karim79 29 November 2019 в 01:33
поделиться

Я думаю, что это зависит от того, чувствуете ли Вы контекстное меню как часть хрома браузеров или нет. Если Вы делаете (и я приписываю этому представлению), то это должно быть от цели, но иначе это - хорошее место для добавления некоторого удобства использования к Вашему приложению.

0
ответ дан troelskn 29 November 2019 в 01:33
поделиться

Замена браузера щелкает правой кнопкой по контекстному меню для определенных областей Вашего GUI из Вашего веб-приложения, может быть довольно полезным. Выполнение этого только для отключения контекстного меню будет раздражать пользователей, которые могут попытаться найти путь вокруг этого. Кроме того, удаление или замена браузера щелкают правой кнопкой по контекстному меню от всей области Вашего применения, обычно будет раздражающим и может сделать более трудным отладить.

, К сожалению, я не могу больше предлагать твердые аргументы, и я точно не беру ни одну сторону аргумента, но я думал, что обменяюсь своим опытом и как разработчик веб-приложения и как интернет-пользователь.

0
ответ дан Eddie 29 November 2019 в 01:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: