Как отправить значение сервлета в текстовое поле HTML? [Дубликат]

Некоторые статистические данные, связанные с этим известным вопросом с двойной точностью.

При добавлении всех значений ( a + b ) с шагом 0,1 (от 0,1 до 100) имеем ~ 15% вероятность ошибки точности. Обратите внимание, что ошибка может привести к несколько большим или меньшим значениям. Вот несколько примеров:

0.1 + 0.2 = 0.30000000000000004 (BIGGER)
0.1 + 0.7 = 0.7999999999999999 (SMALLER)
...
1.7 + 1.9 = 3.5999999999999996 (SMALLER)
1.7 + 2.2 = 3.9000000000000004 (BIGGER)
...
3.2 + 3.6 = 6.800000000000001 (BIGGER)
3.2 + 4.4 = 7.6000000000000005 (BIGGER)

При вычитании всех значений ( a - b , где a> b ) с шагом 0,1 (от 100 до 0,1), мы имеем вероятность 34% точности. Вот несколько примеров:

0.6 - 0.2 = 0.39999999999999997 (SMALLER)
0.5 - 0.4 = 0.09999999999999998 (SMALLER)
...
2.1 - 0.2 = 1.9000000000000001 (BIGGER)
2.0 - 1.9 = 0.10000000000000009 (BIGGER)
...
100 - 99.9 = 0.09999999999999432 (SMALLER)
100 - 99.8 = 0.20000000000000284 (BIGGER)

* 15% и 34% действительно огромны, поэтому всегда используйте BigDecimal, когда точность имеет большое значение. С 2 десятичными цифрами (шаг 0,01) ситуация несколько ухудшается (18% и 36%).

33
задан BalusC 8 February 2016 в 11:14
поделиться

4 ответа

Создайте класс, который расширяет HttpServlet и добавляет к нему аннотацию @WebServlet , содержащую требуемый URL-адрес сервлета, который должен прослушивать.

@WebServlet("/yourServletURL")
public class YourServlet extends HttpServlet {}

И просто позвольте <form action> указать на этот URL. Я также рекомендую использовать метод POST для неидемпотентных запросов. Вы должны убедиться, что вы указали атрибут name полей ввода формы HTML (<input>, <select>, <textarea> и <button>). Это представляет собой имя параметра запроса HTTP. Наконец, вы также должны убедиться, что интересующие поля ввода заключены внутри желаемой формы и, следовательно, не являются внешними.

Вот несколько примеров различных полей ввода формы HTML :

<form action="${pageContext.request.contextPath}/yourServletURL" method="post">
    <p>Normal text field.        
    <input type="text" name="name" /></p>

    <p>Secret text field.        
    <input type="password" name="pass" /></p>

    <p>Single-selection radiobuttons.        
    <input type="radio" name="gender" value="M" /> Male
    <input type="radio" name="gender" value="F" /> Female</p>

    <p>Single-selection checkbox.
    <input type="checkbox" name="agree" /> Agree?</p>

    <p>Multi-selection checkboxes.
    <input type="checkbox" name="role" value="USER" /> User
    <input type="checkbox" name="role" value="ADMIN" /> Admin</p>

    <p>Single-selection dropdown.
    <select name="countryCode">
        <option value="NL">Netherlands</option>
        <option value="US">United States</option>
    </select></p>

    <p>Multi-selection listbox.
    <select name="animalId" multiple="true" size="2">
        <option value="1">Cat</option>
        <option value="2">Dog</option>
    </select></p>

    <p>Text area.
    <textarea name="message"></textarea></p>

    <p>Submit button.
    <input type="submit" name="submit" value="submit" /></p>
</form>

Создайте метод doPost() в вашем сервлете, который захватывает представленные входные значения в качестве параметров запроса, введенных в поле ввода name (не id!) , Вы можете использовать request.getParameter() для получения переданного значения из полей с одним значением и request.getParameterValues() для получения переданных значений из полей с несколькими значениями.

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String name = request.getParameter("name");
    String pass = request.getParameter("pass");
    String gender = request.getParameter("gender");
    boolean agree = request.getParameter("agree") != null;
    String[] roles = request.getParameterValues("role");
    String countryCode = request.getParameter("countryCode");
    String[] animalIds = request.getParameterValues("animalId");
    String message = request.getParameter("message");
    boolean submitButtonPressed = request.getParameter("submit") != null;
    // ...
}

При необходимости необходимо выполнить проверку и, наконец, сохраняют его в БД обычным способом JDBC / DAO .

User user = new User(name, pass, roles);
userDAO.save(user);

См. также:

67
ответ дан Dave Smith 28 August 2018 в 02:28
поделиться

Ну, есть много обучающих программ для баз данных онлайн для java (то, что вы ищете, называется JDBC). Но если вы используете простые сервлеты, у вас будет класс, который расширяет HttpServlet, и внутри него вы будете иметь два метода, которые выглядят как

public void doPost(HttpServletRequest req, HttpServletResponse resp){

}

и

public void doGet(HttpServletRequest req, HttpServletResponse resp){

}

Один из них вызывается для обработки операций GET, а другой используется для обработки операций POST. Затем вы будете использовать объект HttpServletRequest, чтобы получить параметры, которые были переданы как часть формы следующим образом:

String name = req.getParameter("name");

Затем, как только у вас есть данные из формы, относительно легко добавить это в базу данных с помощью учебника JDBC, который широко доступен в Интернете. Я также предлагаю вам найти базовый учебник по сервлету Java, чтобы вы начали. Это очень просто, хотя есть несколько шагов, которые необходимо правильно настроить.

2
ответ дан Chris Thompson 28 August 2018 в 02:28
поделиться

сначала создайте файл jsp: и напишите текстовое поле, которое вы хотите для ex:

после этого создайте свой класс сервлета:

public class test{

protected void doGet(paramter , paramter){

String name  = request.getparameter("name");
 }

}
-1
ответ дан dnyaneshwar 28 August 2018 в 02:28
поделиться

http://oreilly.com/catalog/javacook/chapter/ch18.html

Искать:

"Проблема

Вы хотите обработать данные из HTML-формы в сервлете. "

0
ответ дан POSIX_ME_HARDER 28 August 2018 в 02:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: