Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> создание калькулятора, Калькулятор с отправкой на сервер 
:(
    Опции темы
AsyA777
Дата 9.5.2016, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 9.5.2016

Репутация: нет
Всего: нет



Нужно написать калькулятор, так чтобы данные отправлялись на сервер, там считывались и возвращались назад. Подскажите как это сделать?? Как это должно осуществляться? Такое задание, а как сделать непонятно! Помогите кто знает, объясните, пожалуйста!! (пишем в intelij idea java, html)
PM MAIL   Вверх
KIRINDORF
Дата 10.5.2016, 09:39 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 11.2.2011

Репутация: нет
Всего: 1



Есть технология асинхронных запросов к серверу, называется AJAX.
Посмотрите как она поддерживается вашей платформой.

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
CompWorm
Дата 11.5.2016, 04:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: 1
Всего: 31



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

если стыдно, качаем веб сервер: https://tomcat.apache.org/download-80.cgi
распаковываем.
- запускаем консоль, указываем путь к папке с томкетом в переменной окружения
set CATALINA_HOME=c:\your\path\here\apache-tomcat-8.0.33
и местоположение JRE:
set JRE_HOME=C:\jdk1.7.0_80\jre
можешь сохратить это в каком-нибудь скрипте или прям в настройке переменных операционки.
- стартуем веб-сервер:
  On Windows:
      %CATALINA_HOME%\bin\startup.bat
    or
      %CATALINA_HOME%\bin\catalina.bat start
  On *nix:
      $CATALINA_HOME/bin/startup.sh
    or
      $CATALINA_HOME/bin/catalina.sh start
заходим в браузер, смотрим работает ли:
http://localhost:8080/

intelij idea: создаём, веб-проект, добавляем сервлет... ну скажем
com.test.HelloWorld
Код

package com.test;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class HelloWorldServlet
 */
@WebServlet("/HelloWorldServlet")
public class HelloWorldServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloWorldServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter printWriter  = response.getWriter();
        printWriter.println("<h1>Hello World!</h1>");    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}


билдим, копируем веб-контент в 
томкет\webapps\HelloWorld:
|   
+---META-INF
|       MANIFEST.MF
|       
\---WEB-INF
    |   web.xml
    |   
    +---classes
    |   \---com
    |       \---test
    |               HelloWorldServlet.class
    |               
    \---lib
содержимое web.xml такое примерно:
Код

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>com.test.HelloWorldServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
  </servlet-mapping>
</web-app>

ты можешь выбрать, где указать адрес к сервлету - либу в коде, через аннотацию @WebServlet("/HelloWorldServlet") 
либо в web.xml (он же deployment descriptor) <servlet-mapping> ( '/hello' ).
я показал оба варианта, лишнее удали.

проверяем:
http://localhost:8080/HelloWorld/hello
или
http://localhost:8080/HelloWorld/HelloWorldServlet
должно отобразить то, что у тебя было в методе doGet().
собственно всё. нарисуй хтмл форму с текстовым окном и кнопкой. кнопка отправляет текст из поля на этот адрес.

doGet() ловит запрос, доступ к переданным данным в HttpServletRequest request. функция будет стрингой, поэтому её надо распарсить и посчитать. не знаю, какие функции ты собрался считать и знать не хочу. когда посчитал, запиши ответ в HttpServletResponse response тем же способом. 

Этот ответ добавлен с нового Винграда - http://vingrad.com

Это сообщение отредактировал(а) CompWorm - 11.5.2016, 04:43


--------------------
PM MAIL   Вверх
CompWorm
Дата 11.5.2016, 04:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: 1
Всего: 31



для решения уравнения  можешь вообще воспользоваться готовой либой, например вот:
http://projects.congrace.de/exp4j/index.html
и таких миллион
https://duckduckgo.com/?q=How+to+calculate+...java&t=ffsb

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
CompWorm
Дата 11.5.2016, 05:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Допеределыватель
***


Профиль
Группа: Участник Клуба
Сообщений: 1689
Регистрация: 6.12.2004
Где: /

Репутация: 1
Всего: 31



Код

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter printWriter  = response.getWriter();
        
        String formula = (String) request.getParameter("formula");
        if (formula != null && !formula.isEmpty()){
         String result = calculate(formula);
         printWriter.println ("Result of previous calculation is: " + result);
        }
             
        printWriter.println("<br><FORM METHOD=GET ACTION=\"" + request.getContextPath() + request.getServletPath() + "\">"
             + "input formula here: <INPUT NAME=\"formula\"><BR>"
             + "<INPUT TYPE=SUBMIT>"
             + "</FORM>");
     }
    
    protected String calculate(String formula){
        return "i'm too lazy to calculate [" + formula + "].";
    }

собственно осталось решить формулу в calculate() и готово.

кроме того ХТМЛ код обычно держат не в java файлах, а в jsp. 
если в кратце, рядом с WEB-INF и META-INF создай папку jsp, положи в неё test.jsp
Код

<html>
<head>
<title>Hello World JSP</title>
</head>
<body>
<% out.println("Hello World"); %>
</body>
</html> 

посмотри результат:
http://localhost:8080/HelloWorld/jsp/test.jsp
это позволит тебе писать хтмл в перемежку с ява, без перекомпиляции. 
то есть можно было не писать сервлет вовсе.
минус в том, что это очень чумазый код, в котором потом чёрт ногу сломит.

Этот ответ добавлен с нового Винграда - http://vingrad.com

Это сообщение отредактировал(а) CompWorm - 11.5.2016, 05:37


--------------------
PM MAIL   Вверх
ZVano
Дата 3.6.2016, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 258
Регистрация: 11.12.2006
Где: Украина, Кривой Р ог

Репутация: нет
Всего: 4



Можно поискать готовые решения на github
Простая веб служба со встроенным Jetty (Сервлет-калькулятор)

PS: Чтобы правильно решить задачу нужно знать что преподавалось.
У меня сильное подозрение, что Ваша задача на умение работать с сокетами + все с этим связанное (потоки, синхронизация доступа, блокировки).

Это сообщение отредактировал(а) ZVano - 3.6.2016, 18:52


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.1314 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.