- •Отчет по лабораторной работе «Система учета прохода в здание»
- •Инструкция для администратора:
- •Запуск административной web-консоли GlassFish
- •Регистрация источника данных в jndi
- •Books.Java
- •LibrarySession.Java
- •Add_authors.Jsp
- •Add_books.Jsp
- •Index.Jsp
- •Return_b.Jsp
- •All_books.Jsp
- •Return_book.Jsp
- •Search_b.Jsp
- •Search_books.Jsp
- •Take_b.Jsp
- •Take_book.Jsp
- •Тестирование
- •Выводы:
Search_books.Jsp
<%@page contentType="text/html" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Поиск книги</title>
</head>
<body>
<h1>Поиск книги</h1>
<form action="search_b.jsp" method="POST">
<p>Название: <input type="text" name="name"></p>
<p>Автор: <input type="text" name="author"></p>
<p><input type="submit" value="Поиск"></p>
</form>
<p><a href="index.jsp">Return</a></p>
</body>
</html>
Take_b.Jsp
<%@page contentType="text/html" pageEncoding="utf-8"%>
<%@page import="javax.naming.*, library.*" %>
<%!
librarySessionRemote ejbRef;
%>
<%
InitialContext ic = new InitialContext();
ejbRef = (librarySessionRemote)ic.lookup("library.librarySessionRemote");
ejbRef.takeBook( Integer.parseInt(request.getParameter("book")) );
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Книга взята</title>
</head>
<body>
<h1>Книга взята</h1>
<p><a href="index.jsp">Return</a></p>
</body>
</html>
Take_book.Jsp
<%@page contentType="text/html" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Взять книгу</title>
</head>
<body>
<h1>Взять книгу</h1>
<%@page import="javax.naming.*, java.util.List, library.*" %>
<%!
librarySessionRemote ejbRef;
%>
<%
InitialContext ic = new InitialContext();
ejbRef = (librarySessionRemote)ic.lookup("library.librarySessionRemote");
List books = ejbRef.getBooks();
Books book;
String select = "";
int size = books.size(), sht;
if( size > 0 ) {
select += "<select name='book'>";
for(int i=0; i < size; i++) {
book = ((Books)books.get(i));
sht = book.getCnt() - book.getTohand();
if( sht > 0 )
select += "<option value='"+book.getId()+"'>"+book.getName()+" (осталось "+sht+" шт.)</option>";
}
select += "</select>";
}
%>
<form action="take_b.jsp" method="POST">
<p>Название книги: <%=select%> <input type="submit" value="Взять"></p>
</form>
<p><a href="index.jsp">Return</a></p>
</body>
</html>
Тестирование
В ходе тестировании мы проходим по все станицам и пытаемся ввести всевозможную информацию. Возможно с заранее некорректными данными.
В разделе «Добавление авторов книг» мы можем добавить только автора и т.к. это строка то любое значение является правильным, но если сделать строчку слушком большой, то вылетает сам браузер. Хотя я думаю, что можно подобрать такую строку, которую можно передать и которая будет слишком длинная для вставки в базу. Ещё, если не заполнить поле, то NetBeans выдаёт ошибку. Эти ошибки относятся ко всем полям строкового и числового типа, во всех разделах данного приложения. Не смотря на это, приложение выдаёт предсказуемый результат добавления книги в базу.
В разделе «Добавление новой книги» находится поле, где мы указываем число «Количество копий». И если это не так, то на экран выводится ошибка. Остальные поля строковые и являются обязательными, иначе вылетает ошибка, что некоторые поля пустые. Если все поля заполнены, то страница выдает предсказуемый результат.
В разделах «Взять книгу» и «Вернуть книгу» перед нами только выпадающие списки. Т.к. список отсылает id книги, то у нас всегда один результат.
На странице «Список книг» мы вообще ничего не вводим. И тут могут быть ошибки, только если NetBeans не отвечает, или не подключена база.
