Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Архив1 / doc100 / отчет (6)

.doc
Скачиваний:
25
Добавлен:
01.08.2013
Размер:
131.07 Кб
Скачать

Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное

образовательное учреждение

высшего профессионального образования

«Владимирский государственный университет

имени Александра Григорьевича и Николая Григорьевича Столетовых»

(ВлГУ)

Кафедра «Вычислительная техника»

Лабораторная работа № 7

по дисциплине

«Компонентное программирование»

«Сервлеты и JavaServer Pages (JSP)»

Выполнил:

ст. гр. ВТ-109

Герасимов А. В.

Принял:

доц. Барков В.А.

Владимир 2012

Цель работы:

1. Придумать задачу для реализации ее в виде небольшого сервлета и реализовать его.

2. Разработать универсальный броузер БД для удаленного выполнения SQL-команд. Минимальный состав SQL-команд: INSERT, SELECT, DELETE, UPDATE.

Задание для реализации в виде сервлета: написать сервлет «решение линейного уравнения».

Листинг сервлета

Servlet1.java

package servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.*;

import javax.servlet.http.*;

public class Servlet1 extends HttpServlet {

private static final String CONTENT_TYPE = "text/html; charset=windows-1251";

public void init(ServletConfig config) throws ServletException {

super.init(config);

}

public void doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

response.setContentType(CONTENT_TYPE);

doPost(request, response);

}

public void doPost(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

PrintWriter out = response.getWriter();

String a=request.getParameter("a");;

String b=request.getParameter("b");;

String r="";

double aDouble = 0;

double bDouble = 0;

if ((a==null||a.length()==0) || (b==null|| b.length()==0))

r="Waiting for the correct data";

else {

try{

aDouble=Double.parseDouble(a);

bDouble=Double.parseDouble(b);

if (aDouble==0 && bDouble==0) r="0";

else {

if(aDouble==0) r="Zero divide";

else {

double x = -bDouble/aDouble;

r = Double.toString(x);

}

}

} catch (NumberFormatException e) {

r=e.toString();

}

}

out.println("<html>");

out.println("<head><title>The solution of the linear equation</title></head>");

out.println("<body>");

out.println("<h2>The solution of the linear equation<I> ax+b=0</I></h2><HR>");

out.println("<P><h3>Enter the coefficients a, b and c:</h3>");

out.println("<form method=\"post\" action=\"servlet1\">");

out.println("<h3><b>a=</b><input type=\"text\" name=\"a\" value=\"0\"></h3>");

out.println("<h3><b>b=</b><input type=\"text\" name=\"b\" value=\"0\"></h3>");

out.println("<input type=\"Submit\" value=\"Result\">\t");

out.println("<h3><P> Result is: " + r + "</P><h3>");

out.println("<input type=\"Reset\" value=\"Reset\"><BR>");

out.println("</body></html>");

out.close();

}

}

Листинг программы 'Универсальный броузер БД'

Browser.jsp

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

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

<%@ page contentType="text/html;charset=windows-1251"%>

<jsp:useBean id="JDBC" class="browser.JDBC" scope="session"/>

<% String command = request.getParameter("cmd");

String res = null;

if (command == null || command.trim().length() == 0)

res = "Quest not found";

else res=JDBC.startTransact(command);

%>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/>

<title>Browser</title>

</head>

<body>

<h3>Browser Data Base:</h3>

<form method="post" action="Browser.jsp">

Enter a database query (SELECT, INSERT, UPDATE, DELETE): <hr>

<textarea name="cmd" cols="50" rows="5"></textarea>

<input type="submit" value="Send"><BR>

<input type="submit" value="Reset"><BR>

<p><h3>Query result:</h3><BR> <%= res %> </p>

</form>

</body>

</html>

JDBC.java

package browser;

import java.sql.*;

import java.util.Locale;

import oracle.jdbc.pool.OracleDataSource;

public class JDBC {

final static String connString = "jdbc:oracle:thin:client/123@localhost:1521:XE";

public static Connection dbConnect() {

Connection conn = null;

Locale.setDefault( Locale.ENGLISH );

try {

OracleDataSource ods = new OracleDataSource();

ods.setURL(connString);

conn = ods.getConnection();

System.out.println("Connection string: \'" + connString + "\'");

} catch (Exception e) {

System.out.println("Any problem with driver: " + e);

System.exit(1);

}

return conn;

}

static String parsing(ResultSet rs) {

String result = "<TABLE FRAME=BORDER CELLPADDING=5> <CAPTION> Sampling result </CAPTION> <TR>";

String header = " ";

int columns = 0;

try {

ResultSetMetaData rsmd = rs.getMetaData();

columns = rsmd.getColumnCount();

for (int i=1; i<columns+1; i++) {

header = rsmd.getColumnName(i);

result += " <TH> " + header + " </TH> ";

}

result+= " </TR>";

while (rs.next()){

result+=" <TR> ";

for (int i=1; i<columns+1; i++) {

header = rs.getString(i);

result += " <TD> " + header + " </TD> ";

}

result += " </TR> ";

}

} catch (SQLException e){

System.out.println(e.toString() + columns + header);

}

result += "</TABLE>";

return result;

}

public static String startTransact(String cmd) throws SQLException {

String err = null;

String result = null;

try {

Connection conn = dbConnect();

Statement stat = conn.createStatement();

String idCmd = (cmd.substring(0,6)).toUpperCase();

ResultSet rs = null;

if (idCmd.equals("SELECT")) {

rs = stat.executeQuery(cmd);

result = parsing(rs);

} else {

int rowCount = stat.executeUpdate(cmd);

result = Integer.toString(rowCount) + " rows modified!";

}

stat.close();

conn.close();

} catch (SQLException e) {

err = "Cannot get info from tables";

System.out.println(err + e.toString());

}

return result;

}

}

Краткое описание программы 'Универсальный броузер БД'

Приложение визуализирует результаты удаленного исполнения следующего подмножества команд SQL: SELECT, INSERT, UPDATE, DELETE.

Код интерфейса реализован на языке JSP и находится в файле Browser.jsp.

Код JDBC.java отвечает за соединение с БД СУБД Oracle11gXE и формирование результатов запроса, подключается к jsp-странице как программный компонент.

Нажатие «Submit» вызывает метод startTransact объекта JDBC, что означает подключение к БД , обработку запроса и возврат его результатов.

Результаты запросов вида SELECT формируются в методе parsing объекта JDBC. Данный метод генерирует HTML код полученной таблицы. Для других команд в браузере отображается число модифицированных строк таблицы.

Примеры работы программ

Сервлет:

Браузер БД:

1) Вывести все книги с указанием издательства.

2) Удалить книги с ценой 50

3) Добавить книгу

4) Увеличить цену книг на 100

Результат:

Выводы: в ходе выполнения лабораторной работы было проведено знакомство с сервлетами языком JSP. Создан простой сервлет, а так же с применением JSP браузер удаленных SQL запросов к БД СУБД Oracle11XE.

8

Соседние файлы в папке doc100