Harrix Блог

  • Списки статей
    • Все статьи
    • IT
    • Qt
    • C++
    • Сложение двух чисел
    • Web программированиe
    • FAQ
    • Latex
    • Установка программ
    • Мифы
    • Видео
    • Про фото
  • Проекты
  • Harrix.org
  • RSS
  • Контакты

Сложение двух чисел на JAVA с передачей параметров через GET (серверное приложение)

Пример сервлета, который складывает два числа.

04.05.2017 1 Comment 7 496 просмотров

Рассмотрен пример сервлета на Java, который делает то же самое, что и PHP скрипт: складывает два числа, которые пришли из клиента.

Эта статья из цикла статей Клиент-серверные приложения.

Статья из цикла «Сложение двух чисел». Для меня минимальное освоение любой системы программирования начинается с возможности создания такой программы. Если можно написать приложение, в которой пользователь может ввести два числа, считать их, провести с ними какие-то действия, а потом вывести результат, то, значит, базовое владение имеется. И много задач именно из области программирования, алгоритмики можно будет решать, зная, как в конкретной системе программирования запрограммировать такую программу.

В статье показан сервлет, который работает также, но с параметрами, переданными через POST.

Содержание

  • Приготовления
  • Постановка задачи
  • Java сервлет
  • Сборка сервлета
  • Проверка работы

Приготовления

В статье Простейшее web-приложение на Java на сервере Tomcat рассмотрен пример простейшего сервлета с инструкцией по установке и поднятии сервера Tomcat. Поэтому в этой статье я не буду рассматривать подробно процесс компилирования java файлов в class файлы, создание папок для нашего приложения. Для этого обратитесь в вышеприведенную статью.

Постановка задачи

На сервер поступает HTTP запрос с двумя переменными a и b. Сервер должен считать два числа, сложить их и вернуть эту сумму клиенту. Переменные a и b передаются через GET параметры, то есть через адресную строку. Пример такого запроса:

http://[путь с скрипту]?a=2&b=3

Если данные не переданы или переданы с ошибкой, то должно вывестись слово error.

Java сервлет

Общий вид Java сервлета TestServlet.java приведен ниже.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.example;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TestServlet extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter pw = resp.getWriter();
        
        Integer a = 0, b = 0, c = 0;
        Boolean Error = false;
        
        String param_a = req.getParameter("a");
        String param_b = req.getParameter("b");
        
        try {
            a = Integer.parseInt(param_a);
            b = Integer.parseInt(param_b);
        }
        catch (NumberFormatException e) {
            Error = true;
        }
            
        if (Error) {
pw.println("error");
}
else {
c = a + b;
        
pw.println(c);
}
    }
}

Разберем код.

В нашем главном методе doGet() есть два параметра: HttpServletRequest req — запрос от клиента, HttpServletResponse resp ответ клиенту. Поэтому мы в переменную resp будем записывать результат, а из переменной req вытаскивать данные.

И следующие строчки вытаскивают GET параметры a и b в виде строковых переменных.

1
2
String param_a = req.getParameter("a");
String param_b = req.getParameter("b");

Потом пытаемся перевести эти строки в числа. Но так как мало ли что было передано в качестве параметров (а может вообще ничего от клиента в этих параметрах не пришло), то обрамляем процесс перевода в конструкцию try catch.

1
2
3
4
5
6
7
try {
    a = Integer.parseInt(param_a);
    b = Integer.parseInt(param_b);
}
catch (NumberFormatException e) {
    Error = true;
}

Если в процессе получения значений a и b произошли проблемы, то выводим error, иначе сумму двух чисел.

1
2
3
4
5
6
7
8
if (Error) {
     pw.println("error");
}
else {
    c = a + b;
 
    pw.println(c);
}

Сборка сервлета

Создадим где-нибудь папку [папка]. У меня это testapp на рабочем столе с полным путем C:\Users\User\Desktop\testapp.

В ней должны быть такие два файла.

[папка]\com\example\TestServlet.java

[папка]\servlet-api.jar

В командной строке переходим в папку командой

1
cd [полный путь к папке]

У меня это

1
cd C:\Users\User\Desktop\testapp

Собираем TestServlet.class командой.

1
javac -encoding UTF-8 -cp .;servlet-api.jar com\example\*.java

В папке [папка]\com\example\ должен появится файл TestServlet.class.

В папке Tomcat (у меня это C:\Program Files\Apache Software Foundation\Tomcat 9.0) переходим в папку webapps.

В ней создаем папку с названием вашего web приложения, например, testingapp.

В этой папке должны быть два файла.

…\WEB-INF\classes\com\example\TestServlet.class

…\WEB-INF\web.xml

Файл web.xml будет вот с таким, например, содержимым.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD
  Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'>
<web-app>
  <servlet>
    <servlet-name>test</servlet-name>
    <servlet-class>com.example.TestServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>/test</url-pattern>
  </servlet-mapping>
</web-app>

Перезапускаем сервер Tomcat.

Если что-то пошло не так или какой-то шаг непонятен, то читаем статью.

Проверка работы

Рассмотрим работу скрипта на тестовом примере, когда Tomcat был поднят на локальном компьютере.

При вызове http://localhost:8080/testingapp/test мы получим error, так как данные не переданы.

При вызове http://localhost:8080/testingapp/test?a=2 мы получим error, так как переменная b не передана.

При вызове http://localhost:8080/testingapp/test?a=2&b=99 мы получим 101.

При вызове http://localhost:8080/testingapp/test?a=harrix&b=99 мы получим error, так как строка harrix не может быть переведена в число.

В статье рассмотрен пример web приложения на PHP, который делает тоже самое.


Статьи по теме:

  1. Простейшее web-приложение на Java на сервере Tomcat
  2. Сложение двух чисел на JAVA с передачей параметров через POST (серверное приложение)
  3. Сложение двух чисел в Android Studio с использованием HttpURLConnection (клиент-серверное приложение)
  4. Сложение двух чисел в Android Studio с использованием Retrofit (клиент-серверное приложение)

Web программирование Java, Tomcat, Программа сложения двух чисел, Сервер, Сервлет

© 2014 Harrix