суббота, 26 ноября 2016 г.

JSTL: Пример обработки двух кнопок одной формы

index.jsp:
<form method="post" action="checkbox.jsp">
<P>Включите одну или несколько галочек:</p>

<P>Галочка 1
<input type="checkbox" name="mychkbox" value="Галочка 1"/></p>
<P>Галочка 2
<input type="checkbox" name="mychkbox" value="Галочка 2"/></p>
<P>Галочка 3
<input type="checkbox" name="mychkbox" value="Галочка 3"/></p>
<P>Галочка 4
<input type="checkbox" name="mychkbox" value="Галочка 4"/></p>

<P><input type="submit" name="button1" value="Кнопка 1" /></p>
<P><input type="submit" name="button2" value="Кнопка 2" /></p>
</form>

checkbox.jsp:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<c:choose>
<c:when test="${not empty paramValues.button1}">
<% // Проверяем, была ли нажата кнопка "Кнопка 1" %>
Вы нажали кнопку "Кнопка 1"
<c:choose>
<c:when test="${not empty paramValues.mychkbox}">
<% // Проверяем, были ли включены чекбоксы %>
и выбрали галочки:
<c:forEach items="${paramValues.mychkbox}" var="myvar">
<br><c:out value="${myvar}"/>
</c:forEach>
</c:when>
<c:otherwise>
, но не включили ни одной галочки.
</c:otherwise>
</c:choose>
</c:when>
<c:when test="${not empty paramValues.button2}">
<% // Проверяем, была ли нажата кнопка "Кнопка 2" %>
Вы нажали кнопку "Кнопка 2".
</c:when>
<c:otherwise>
<% // Заглушка на невозможный случай %>
Что-то не так. Если вы видите этот текст, обратитесь к администратору.
</c:otherwise>
</c:choose>


отсюда

четверг, 17 ноября 2016 г.

Получение значения из SQL-запроса с вычисляемым наименованием колонки

/* Пример блочного выполнения PL/SQL с вычисляемым наименованием колонки в переменной myCOLUMN и запоминанием результата такого запроса в переменной myRESULT */
DECLARE
    myRESULT varchar(255);
    myCOLUMN varchar(255) := 'user_id';
BEGIN
    execute immediate 'select '||myCOLUMN||' from dba_users where rownum = 1' into myRESULT;
    dbms_output.put_line(myRESULT);
END;

Для сравнения
Тот же пример, но без вычисляемого наименования колонки, т.е. без "execute immediate":
DECLARE
    myRESULT varchar(255);
BEGIN
    select user_id into myRESULT from dba_users where rownum = 1;
    dbms_output.put_line(myRESULT);
END;

Вызов хранимой PL/SQL-процедуры с помощью JSTL

В базу была добавлена хранимая процедура:
"create or replace procedure VACUUM as begin ... end"

Ее вызов из WEB-приложения организован следующим образом:

index.jsp (кроме остальной части) есть кнопка вызова страницы, вызывающей хранимую процедуру:
<form action="vacuum.jsp" method="POST">
<input type="submit" style="width:150px" value="Актуализировать" title="Убрать &quot;мертвые души&quot;">
</form>

vacuum.jsp:
<%@ page contentType="text/html; charset=utf-8" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<%//Антикракозябриковая кодировка
request.setCharacterEncoding("UTF-8");%>
<sql:update dataSource="${dbConnection}">
begin VACUUM; end;
</sql:update>
<%response.sendRedirect("index.jsp");%>

Архив