Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Лабораторная работа №5: Технология JSP.
Цель: изучить теоретические основы разработки приложений с применением jsp страниц и сервлетов. Применить полученные знания на практике при создании автоматизированной системы работы с базой данных.
Простой, объектно-ориентированный, интерпретируемый язык JAVA был создан с использованием концепций, заимствованных из других языков, таких как С, С++, Smalltalk, objective и других. С использованием JAVA можно создавать следующие типы приложений:
Апплеты мини приложения, выполняемые в среде Java совместимого браузера, например Netscape, Microsoft Explorer, Hot Java и др.
Приложения программы, выполняющиеся на локальном компьютере с помощью его операционной системы, подобно приложениям на других языках программирования.
Сервлеты это маленькие программы, которые выполняются на серверной стороне Web-соединения.
JSP страницы (java server pages) представляют собой комбинацию кода, написанного на html и java. В процессе обращения к jsp странице web-сервер преобразует ее в сервлет. Одним из таких серверов является Tomcat.
Точно так же, как апплеты динамически расширяют функциональные возможности Web-браузера, сервлеты динамически расширяют функциональные возможности Web-сервера.
Стандартные библиотеки Java значительно расширены и включают мощные функции поддержки сетевых соединений. Это позволяет легко создавать средствами Java приложения для Internet.
Рассмотрим пример создания приложения с использование jsp страниц и сервлетов.
Задание: разработать автоматизированную систему хранения данных о преподавателях. Работа с системой осуществляется через Web-интерфейс. Вход в систему производится путем ввода логина и пароля.
Для инсталляции Java на компьютер необходимо запустить файл установки, например, jdk-1_5_0-windows-i586.exe и далее выполнить инструкции мастера.
Рабочий каталог для своих собственных программ можно разместить в любом месте, поэтому, чтобы не приходилось каждый раз при запуске указывать путь к утилитам JDK, необходимо указать в переменной PATH путь доступа к утилитам (к файлу bin).
1.3. Установка сервера Tomcat.
Для инсталляции Tomcat на компьютер необходимо запустить файл установки, например, jakarta-tomcat-5.0.27.exe (Tomcat 5.0) и далее выполнить инструкции мастера.
1.4. Установка среды разработки JCreator.
Для инсталляции JCreator на компьютер необходимо запустить файл установки setup.exe и далее выполнить инструкции мастера.
Для разработки базы данных (БД) можно воспользоваться продуктом компании Microsoft Access. В нашем случае БД university содержит 2 таблицы prepods и subjects. Ключевым является поле name.
Необходимым атрибутом является поле photo, в котором хранится имя файла с фотографией преподавателя.
Для получения доступа к БД из нашего приложения, необходимо зарегистрировать ее следующим образом: Пуск\Настройки\Панель управления\Администрирование\Источники данных (ODBC)\add\Driver do Microsoft Access\имя источника данных- university\БД-выбираем путь к нахождения нашей БД\Ok.
Для обеспечения интерфейса пользователя будем использовать jsp страницы. Все остальные операции, не требующие визуального представления, возложим на сервлет.
Вход в систему осуществляется посредством ввода логина и пароля. Для этого используем простой html файл index.html. Он реализует форму для ввода логина и пароля. После заполнения полей формы и нажатия кнопки «Подача запроса» браузер отправляет содержимое полей на сервер (в теге form содержится информация о получателе). Таковым в нашем случае будет сервлет Processor. Итак, рассмотрим его принцип работы. При первом обращении к сервлету, сервер вызывает метод сервлета init(). В нем устанавливается соединение с БД. Оно будет существовать на протяжении всего жизненного цикла сервлета.
Все формы, используемые в интерфейсе отправляют данные методом POST. Когда приходит запрос к сервлету, сервер вызывает у него метод doPost() и передает туда данные запроса через объект request, а посредством объекта response сервлет получает возможность отправлять данные клиенту. Т.к. сервлет обрабатывает запросы всех форм нашей системы, анализируем параметр action запроса (данный параметр существует в каждой форме нашего приложения и имеет атрибут hidden). Для удобства данный параметр содержит код операции. Каждый код соответствует константе, имя которой расшифровывает назначение операции.
При успешной регистрации в системе (введенные логин и пароль присутствуют в базе) извлекается имя пользователя, создается объект HttpSession, который реализует работу с сессией. Сессия существует на протяжении всего сеанса с клиентом. Соответственно, для каждого клиента создается свой объект HttpSession. Одним из полезных свойств сессии является возможность установки атрибутов. Для этого существует метод setAttribute(имя_атрибута, объект). Метод Object getAttribute(имя_атрибута) возвращает объект с соответствующим именем. Таким образом, данный объект можно получить из любого сервлета или jsp страницы нашего приложения.
Создав сессию, мы устанавливаем имя пользователя в качестве атрибута. Для того, чтобы jsp страницы могли читать данные из базы, устанавливаем атрибут сессии statement.
Исходный код сервлета приводится в приложении.
Рассмотрим jsp страницы нашей системы. Как уже было сказано ранее, jsp страницы представляют собой комбинацию кода, написанного на java и на html. В следствии этого содержимое, которое будет отображаться клиенту, можно формировать динамически.
Начало java кода обозначается <% , окончание %>. Если необходимо просто подставить значение какой-либо переменной, или результат работы метода, следует использовать <%= имя_переменной %>.
Т.к. jsp страница это фактически сервлет, то для обеспечения взаимодействия с системой существует список неявных объектов, которые доступны программному коду внутри страницы. Для работы с запросом применяется объект request (аналогичен параметру HttpRequest сервлета). При работе с сессией следует применять неявный объект session.
Рассмотрим ключевые моменты программы и некоторые особенности реализации.
Реализовано файлом index.html ввиду того, что нет необходимости формировать динамическое содержимое.
<form action="processor" method="post">
<h4>Enter your login and password:</h4>
login <input type="text" name="login" />
<br><br>
password <input type="text" name="password" />
<input type="hidden" name="action" value="0">
<input type="submit" name="enter">
</form>
Данные, введенные в поля формы, будут отправлены сервлету Processor. Как уже говорилось ранее, используем скрытый параметр action, в котором передаем код операции.
После успешной идентификации сервлет посылает редирект на manager.jsp, где происходит разделение на два фрейма. В пером постоянно отображается menu.jsp (реализует работу меню), а содержимое второго меняется в зависимости от выбранного пункта меню. По умолчанию вторым является main.jsp, отображающий информацию о текущем авторизированном пользователе системы.
Для редактирования информации существует форма, в которой необходимо выбрать в выпадающем списке название свойство, которое необходимо изменить. Затем в текстовое поле вводится новое значение и после нажатия кнопки Edit происходит отправка введенных данных на сервер к сервлету. Здесь так же применяется скрытый параметр action, сообщающий сервлету о том, что необходимо обновить личные данные пользователя.
При переходе к пункту меню My subjects отображается страница с информацией о предметах, которые связанны с пользователем. Внешний вид страницы следующий:
Информация о предметах отображается в виде таблицы.
Для проведения манипуляций с данными используются несколько форм. Каждая форма применяется для отдельного вида операции, код action принимает соответствующие значения. Сервлет производит обработку запросов, изменяет соответствующие поля в БД и на экран выводится обновленная информация.
Каждый авторизированный пользователь имеет возможность добавления новых пользователей. Для этого существует пункт меню Add new user.
Вводятся реквизиты нового пользователя, отправляются сервлету, после успешного добавления нового пользователя на экран выводится соответствующее сообщение.
В разделе меню Delete your account реализована возможность удаления всей информации, касающейся текущего пользователя.
По окончании работы с системой необходимо корректно завершить текущий сеанс путем выбора пункта меню Log out. Здесь происходит изменение атрибутов сессии в результате чего авторизация текущего пользователя отменяется. Это делает невозможным проникновение в систему незарегистрированного пользователя.
Если логин и пароль при авторизации введены не верно (пользователя с введенными реквизитами нет в базе) система выводит сообщение об отказе в доступе. То же самое происходит и при попытке незарегистрированного пользователя получить доступ к произвольной странице системы.
2.1. Структура взаимосвязи страниц.
Всё, что касается проекта (кроме сервлетов), необходимо поместить сюда: C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\ROOT\ (при условии что Tomcat установлен в C:\Program Files\Apache Software Foundation\Tomcat 5.0). Можно также внутри папки ROOT создать свою папку и поместить проект туда.
Для размещения сервлетов на сервере необходимо произвести компиляцию (jsp страницы не нуждаются в компиляции, этим занимается сервер). Полученные *.class файлы сервлетов помещаем по следующему пути: C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\ROOT\WEB-INF\classes\
Далее необходимо описать каждый сервлет в файле web.xml, который располагается C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\ROOT\WEB-INF\. Открываем его любым текстовым редактором. Находим открывающий и закрывающий теги <web-app> </web-app>. Размещаем между ними описание нашего сервлета согласно нижеописанному примеру.
<web-app>
<servlet>
<servlet-name>processor</servlet-name>
<servlet-class>Processor</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>processor</servlet-name>
<url-pattern>/project/processor</url-pattern>
</servlet-mapping>
</web-app>
<url-pattern>/project/processor</url-pattern> -- адрес, по которому будет доступен наш сервлет на сервере.
Теперь сервер готов к запуску. Идем по пути C:\Program Files\Apache Software Foundation\Tomcat 5.0\bin\ и запускаем там файл startup.bat.
Иногда для успешного запуска требуется вручную прописать системную переменную JAVA_HOME, указывающую путь к установленному jdk. Сделать это можно здесь: ПускНастройкаПанель управленияСистемаДополнительноПеременные средыПеременные среды пользователя. Пример содержимого переменной JAVA_HOME=C:\Program Files\Java\jdk1.5.0 Прописать переменную JAVA_HOME можно и в файле Catalina.bat папки bin сервера.
После успешного старта сервера запускаем Интернет браузер. В строке адреса набираем http://localhost:8080/ваша_папка/имя_главной_страницы_проекта. Если файлы проекта находятся непосредственно в папке ROOT, то ваша_папка/ указывать не следует.
Приложение:
index.html
<html>
<title>Authorization</title>
<body bgcolor="E0FFFF">
<center>
<form action="processor" method="post">
<h4>Enter your login and password:</h4>
<div style="text-align:center">
<span style="padding-left:30px;"> login <input type="text" name="login" /> </span>
<br><br>
<span> password <input type="text" name="password" /> </span>
</div>
<br>
<input type="hidden" name="action" value="0">
<input type="submit" name="enter">
</form>
</center>
</body>
</html>
manager.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Service page</title></head>
<% данный фрагмент присутствует на всех страничках. Здесь происходит проверка, авторизирован пользователь или нет. Для этого запрашиваем у сессии атрибут user
String user = (String) session.getAttribute("user");
if ((user != null)&&(user.compareTo("unauthorized") != 0))
{
%>
<frameset cols="25%,*"frameborder="2">
<frame name="one" src="../files/195/menu.jsp" frameborder="2" scrolling="no">
<frame name="two" src="../files/195/main.jsp" frameborder="2" scrolling="yes">
</frameset>
<% }
else
{
%>
<body bgcolor="E0FFFF">
<h1>Access denied!</h1><br>
<a href="index.html">Login</a>
</body>
<%}%>
</html>
menu.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body bgcolor="00FFFF">
<head><title>Menu page</title></head>
<%
String user = (String)session.getAttribute("user");
if ((user != null)&&(user.compareTo("unauthorized") != 0)){
%>
Welcome dear <%=user%>! Приветствуем текущего пользователя, обращаясь к нему по имени
<br><br><br><br>
<h4>MENU</h4>
<a href="main.jsp" target="two">Personal info</a><br>
<a href="subjects.jsp" target="two">My subjects</a><br>
<a href="new.jsp" target="two">Add new user</a><br>
<a href="delete.jsp" target="two">Delete your account</a><br>
<a href="logout.jsp" target="two">Log out</a><br>
<%
} else out.println("<h3>Access denied!</h3>");
%>
</body>
</html>
main.jsp
<%@ page import="java.sql.Statement"%> библеотеки, которые нам понадобятся
<%@ page import="java.sql.ResultSet"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Service page</title></head>
<body bgcolor="E0FFFF">
<%
String user = (String)session.getAttribute("user");
Получаем атрибут сессии user. Если он равен “unauthorized”, делаем вывод о том, что пользователь не прошел проверку логина и пароля.
if ((user != null)&&(user.compareTo("unauthorized") != 0))
{
try{ для работы с БД получаем у сессии объект statement
Statement sq = (Statement) session.getAttribute("statement");
Формируем запрос на выборку данных о текущем пользователе
String query = "SELECT * FROM prepods WHERE name='" + user+ "'";
ResultSet rs = sq.executeQuery(query);
if (rs.next())
{ читаем информацию из БД
String name = rs.getString("name");
String birthday = rs.getString("birthday");
String address = rs.getString("address");
String phone = rs.getString("phone");
String rate = rs.getString("rate");
if (birthday == null) birthday = "no information";
if (address == null) address = "no information";
if (phone == null) phone = "no information";
if (rate == null) rate = "no information";
%>
Подставляем значения прочитанных переменных
<img src="<%=rs.getString("photo")%>" alt="no photo">
<br>
name: <%=name%><br>
birthday: <%=birthday%><br>
address: <%=address%><br>
phone: <%=phone%><br>
rate: <%=rate%><br><br><br>
форма для изменения личной информации о преподавателе (выбираем поле, которое необходимо изменить и вводим новое значение)
<form action="processor" method="post">
Edit property: <br>
Property:
<select name="column">
<option>birthday</option>
<option>address</option>
<option>phone</option>
<option>rate</option>
<option>photo</option>
<option>name</option>
</select><br>
Value:<br>
<input type="text" name="value" value=""><br>
<input type="hidden" name="user" value="<%=user%>">
<input type="hidden" name="action" value="1">
<input type="submit" name="Edit" value="Edit">
</form>
<%
}
}catch(Exception e){ e.printStackTrace();}
} else out.println("<h3>Access denied!</h3>");
%>
</body>
</html>
subjects.jsp
<%@ page import="java.sql.*"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Subjects page</title></head>
<body bgcolor="E0FFFF">
<%
String user = (String)session.getAttribute("user");
if ((user != null)&&(user.compareTo("unauthorized") != 0)) {
Statement sq = (Statement) session.getAttribute("statement");
try { Запрашиваем из базы из таблицы subjects предметы, соответствующие текущему пользователю
ResultSet rs = sq.executeQuery("SELECT * FROM subjects WHERE name='" + user+ "'");
out.println("<center><h3>Here is your subjects:</h3><br>");
out.println("<table border=1>");
out.println("<tr>");
out.println("<td>subject</td>");
out.println("<td>duration</td>");
out.println("<td>faculty</td>");
out.println("<td>practical</td>");
out.println("</tr>");
while (rs.next()) {
Получаем прочитанные из БД данные и публикуем на страничке
String subject = rs.getString("subject");
String duration = rs.getString("duration");
String faculty = rs.getString("faculty");
String practical = rs.getString("practical");
if (duration == null) duration = "";
if (faculty == null) faculty = "";
if (practical == null) practical = "";
out.println("<tr>");
out.println("<td>" + subject + "</td>");
out.println("<td>" + duration + "</td>");
out.println("<td>" + faculty + "</td>");
out.println("<td>" + practical + "</td>");
out.println("</tr>");
}
out.println("</table>");
out.println("</center>");
} catch (SQLException e) {
e.printStackTrace();
}
%>
<br><br>
<form action="processor" method="post">
Delete subject: Форма удаления предмета по его названию
<input type="text" name="subject" value="">
<input type="hidden" name="action" value="4">
<input type="hidden" name="code" value="delete">
<input type="Submit" name="Delete" value="Delete">
</form>
<hr>
<br>
<form action="processor" method="post">
Add subject: Форма для добавления нового предмета.
<input type="text" name="subject" value="">
<input type="hidden" name="action" value="4">
<input type="hidden" name="code" value="add">
<input type="Submit" name="Add" value="Add">
</form>
<hr>
<br>
<form action="processor" method="post">
Set for subject: Пользователь указывает для какого предмета какое свойство необходимо изменить
<input type="text" name="subject" value=""><br><br>
Property:<select name="column">
<option>duration</option>
<option>faculty</option>
<option>practical</option>
</select><br><br>
value:<input type="text" name="value" value="">
<input type="hidden" name="action" value="4">
<input type="hidden" name="code" value="set">
<input type="Submit" name="Set" value="set">
</form><hr>
<%
} else out.println("<h3>Access denied!</h3>");
%>
</body>
</html>
new.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Adding a new user</title></head>
<body bgcolor="E0FFFF">
<%
String user = (String)session.getAttribute("user");
if ((user != null)&&(user.compareTo("unauthorized") != 0)) {
%>
<form action="processor" method="post">
Name:<br>
<input type="text" name="name" value=""><br>
Login:<br>
<input type="text" name="login" value=""> <br>
Password:<br>
<input type="text" name="password" value=""> <br>
<input type="hidden" name="action" value="3">
<input type="submit" name="submit" value="add">
</form>
</body>
<% } else out.println("<h3>Access denied!</h3>"); %>
</html>
delete.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Delete your account</title></head>
<body bgcolor="E0FFFF">
<%
String user = (String)session.getAttribute("user");
if ((user != null)&&(user.compareTo("unauthorized") != 0)) {
%>
<center>
<form action="processor" method="post">
Форма для подтверждения операции удаления
<h3>User <%=session.getAttribute("user")%> now will be deleted..</h3>
<br>
<input type="hidden" name="action" value="2">
<input type="submit" value="Delete">
</form>
</center>
<% } else out.println("<h3>Access denied!</h3>"); %>
</body>
</html>
logout.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Log out</title></head>
<body bgcolor="E0FFFF">
Прощаемся с пользователем, обращаясь к нему по имени
Bye, dear <%=session.getAttribute("user")%>
<%
Устанавливаем атрибут сессии с именем user в значение unauthorized
session.setAttribute("user", "unauthorized");
%>
</body>
</html>
Processor.java
import javax.servlet.http.HttpServlet; //стандартные функции сервлета
import javax.servlet.http.HttpServletRequest; //работа с пришедшим запросом
import javax.servlet.http.HttpServletResponse; //работа с ответом для клиента
import javax.servlet.http.HttpSession; //работа с сессией
import javax.servlet.ServletException; //исключительные ситуации
import java.sql.*; //работа с sql
import java.io.IOException; //ошибки ввода вывода
import java.io.PrintWriter; //печать в поток
public class Processor extends HttpServlet {
public void init() throws ServletException {
super.init();
//установка соединения с БД
String url="jdbc:odbc:university";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(Exception e) {
System.out.println("Classdefnotfound"+e);
}
try{
conn = DriverManager.getConnection(url);
sq = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
}catch(Exception e){ e.printStackTrace();}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int action = Integer.parseInt(request.getParameter("action"));
//анализируется код операции
switch (action) {
case LOGIN_ACTION : login(request, response); break;
case UPDATE_PREPOD_ACTION : updatePrepod(request, response); break;
case DELETE_PREPOD_ACTION : deletePrepod(request, response); break;
case ADD_PREPOD_ACTION : addPrepod(request, response); break;
case SUBJECT_ACTION : subjectAction(request, response); break;
}
}
private void login(HttpServletRequest request, HttpServletResponse response) {
String user = "unauthorized";
String login = request.getParameter("login");
String password = request.getParameter("password");
try {
HttpSession session = request.getSession();
Запрашиваем из базы данных преподавателей данные о пользователе с введенными реквизитами
ResultSet rs = sq.executeQuery("SELECT name FROM prepods WHERE login='" + login + "' AND password ='" + password+"'");
Если таковые есть, запоминаем имя пользователя и устанавливаем его в качестве атрибута сессии
if (rs.next()) user = rs.getString("name");
session.setAttribute("user", user);
session.setAttribute("statement", sq);
response.sendRedirect("manager.jsp");
} catch (Exception e) { e.printStackTrace(); }
}
private void updatePrepod(HttpServletRequest request, HttpServletResponse response) {
//обновление данных о преподавателе в БД
try{
String user = request.getParameter("user");
String column = request.getParameter("column");
String value = request.getParameter("value");
HttpSession session = request.getSession();
if ((column.compareTo("") != 0)&&(value.compareTo("") != 0)&&(user.compareTo("") != 0))
{ Если поля непустые, посылаем базе запрос на обновление соответствующих полей
sq.executeUpdate("UPDATE prepods SET " + column + "='"+ value +"' WHERE name='" + user + "'");
if (column.compareTo("name") == 0) {
Если изменения коснулись имени пользователя, меняем и атрибут сессии
sq.executeUpdate("UPDATE subjects SET " + column + "='"+ value +"' WHERE name='" + user + "'");
user = value;
session.setAttribute("user", user);
}
}
Перенаправляем пользователя на main.jsp
response.sendRedirect("main.jsp");
} catch (Exception e) {e.printStackTrace();}
}
private void deletePrepod(HttpServletRequest request, HttpServletResponse response) {
HttpSession session = request.getSession();
String name = (String)session.getAttribute("user");
Формируем два запроса на удаление данных о пользователе, один на удаление данных из таблицы преподавателей, другой из таблицы предметов. Критерий удаления имя пользователя
String query = "DELETE FROM prepods WHERE name='" + name + "'";
String query2 = "DELETE FROM subjects WHERE name='" + name + "'";
try {
sq.executeUpdate(query);
sq.executeUpdate(query2);
После удаления перенаправляем пользователя на выход из системы
response.sendRedirect("logout.jsp");
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private void addPrepod(HttpServletRequest request, HttpServletResponse response) {
String name = request.getParameter("name");
String login = request.getParameter("login");
String password = request.getParameter("password");
if ((name != null)&&(login != null)&&(password != null))
{ Проверяем корректность пришедших данных, если все ок, формируем запрос к базе на добавление
String query = "INSERT INTO prepods (name, login, password) VALUES('" + name +"', '" + login + "', '" + password +"')";
try {
sq.executeUpdate(query);
Выводим сообщение о успешном результате операции
PrintWriter out = response.getWriter();
out.println("<hmml><head><title>New user</title></head><body><h3>User " +
name + " added.</body></html>");
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void subjectAction(HttpServletRequest request, HttpServletResponse response) {
String code = request.getParameter("code");
HttpSession session = request.getSession();
String user = (String) session.getAttribute("user");
Анализируем запрос на изменение информации о предмете, при этом проверяя корректность пришедших данных. Информация о том, какую операцию произвести, хранится в параметре code. Формируем соответствующий запрос.
if (code.compareTo("") != 0)
try{
if ((code.compareTo("delete") == 0)&&(request.getParameter("subject").compareTo("") != 0)) {
sq.executeUpdate("DELETE FROM subjects WHERE subject='" + request.getParameter("subject") + "'");
}else if ((code.compareTo("add") == 0)&&(request.getParameter("subject").compareTo("") != 0)) {
String query = "INSERT INTO subjects (subject, name) VALUES ('" + request.getParameter("subject") + "', '" + user + "')";
sq.executeUpdate(query);
}else if ((code.compareTo("set") == 0)&&(request.getParameter("subject").compareTo("") != 0)) {
String column = request.getParameter("column");
String value = request.getParameter("value");
String query = "UPDATE subjects SET " + column + "='"+ value +"' WHERE subject='" + request.getParameter("subject") + "'";
sq.executeUpdate(query);
}
Редирект на эту же страницу, теперь она отобразится с новыми данными
response.sendRedirect("subjects.jsp");
} catch (Exception e) {e.printStackTrace();}
}
public void destroy() {
try {
sq.close();
conn.close();
} catch (Exception e) {e.printStackTrace();}
super.destroy();
}
private Connection conn;
private Statement sq;
private static final int LOGIN_ACTION = 0; Для удобства ставим в соответствие с кодом операции «говорящую» константу
private static final int UPDATE_PREPOD_ACTION = 1;
private static final int DELETE_PREPOD_ACTION = 2;
private static final int ADD_PREPOD_ACTION = 3;
private static final int SUBJECT_ACTION = 4;
}
Варианты индивидуальных заданий:
Разработать Web-приложение, позволяющее осуществлять взаимодействие с базой данных в соответствии с темой индивидуального задания. В приложении должны быть реализованы следующие функции:
Варианты индивидуальных заданий: Приложение должно быть основано на базе данных по учету:
Index.html
Logout.jsp
Processor
anager.jsp
menu.jsp
main.jsp
Sybjects.jsp
new.jsp
Delete.jsp
Processor
Processor
Processor
Processor