Здесь я передаю значение цвета со страницы HTML, которое не устанавливается моей программой сервлета - PullRequest
0 голосов
/ 13 октября 2018

Из моего анализа, значение цвета отправляется сервлету, поскольку ответ html не меняет свой цвет.

Первый файл Color.html

<html>
<body bgcolor="pink">
    <center>
        <h1>RainBow Colors</h1>
        <h2>Choose a color to see Magic</h2>
        <form action="./display" method="GET">
            <B>Color:</B>
            <select name="color" size="2">
            <option value="Violet">Violet</option>
            <option value="Indigo">Indigo</option>
            <option value="Orange">Orange</option>
            <option value="Blue">Blue</option>
            <option value="Green">Green</option>
            <option value="Yellow">Yellow</option>
            </select>
            <br><br>
            <input type=submit value="MAGIC">
        </form>
    </center>
</body>

Java-программа DisplayColors.java

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class DisplayColors extends HttpServlet {
 public void doGet(HttpServletRequest req, HttpServletResponse res) throws 
  ServletException, IOException {
String Color = req.getParameter("color");
PrintWriter pw = res.getWriter();
pw.println("<p>Color::" + Color + "</p>");
pw.println("<html>");
pw.println("<body bgcolor='Color'>");
pw.println("<marquee><h1>HAVE A GREAT TIME AHEAD</h1></marquee>");
pw.println("</body>");
pw.println("</html>");
pw.close();
}
}

Файл web.xml из webapps

<web-app>
<servlet>
    <servlet-name>DS</servlet-name>
    <servlet-class>DisplayColors</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>DS</servlet-name>
    <url-pattern>/display</url-pattern>
</servlet-mapping>

<welcome-file-list>
    <welcome-file>Color.html</welcome-file>
</welcome-file-list>

Я запускаю эту программу на локальном хосте сервера Tomcat9.Для большей ясности см. Прикрепленные снимки экрана. enter image description here

Проблема здесь в том, что даже если я выберу зеленый цвет во входном файле colors.html, показанный выходной цвет будет синим или другим цветоминогда.Пожалуйста, дайте мне знать технику, где сервлет будет правильно подбирать цвета.Нет проблем при передаче данных из метода get.

1 Ответ

0 голосов
/ 13 октября 2018

, как вы, наверное, заметили, первая строка вашего выходного HTML-кода печатает правильный цвет («Цвет: зеленый»).

Однако причина, по которой фон имеет какой-то другой забавный цвет (в вашем случае он синий, мой браузер показывает его красным), заключается в том, что в строке, где выводится тег <body>, не происходит конкатенации строк.

В настоящее время: pw.println("<body bgcolor='Color'>");

попробуйте изменить его на: pw.println("<body bgcolor='"+Color+"'>");

Справочная информация о том, что в текущем коде Java не будет обрабатывать Color как переменную,потому что это часть строки.Поэтому он просто записывает «Color» вместо содержимого переменной Color.

Показанное выше исправление оставляет контекст строки и склеивает его с фактическим содержимым переменной.

Поскольку «Цвет» не является на самом деле приемлемым цветом, ваш браузер выберет то, что он считает наиболее близким к вашему вводу.Каким бы ни был этот цвет, зависит от используемого вами браузера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...