2014-09-05 2 views
0

Я не разбираюсь в Java и JSP. Я создал форму, и она работает так, как предполагается, но я хочу немного повеселиться с ней и изменить ее после отправки формы. Я включу некоторые изображения, чтобы показать, что я имею в виду. Мне трудно найти то, что я хочу, и не знаю, с чего начать. Любая помощь будет оценена.Результаты реорганизации формы с помощью Java/JSP

Вот страница формы: enter image description here

Вот результаты:
enter image description here

Вот что я хочу, чтобы результаты выглядеть (уведомление «последний» идет от 2 до 3, ' средний»от 3 до 5, 'элемент' от 4 до 2, и 'адрес' от 5 до 4): enter image description here

Java Файл

import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.util.*; 

public class ShowParameters extends HttpServlet { 

    private static final long serialVersionUID = 1L; 

    public void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 


     response.setContentType("text/html"); 
     PrintWriter out = response.getWriter(); 
     String docType = 
       "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " + 
       "Transitional//EN\">\n"; 
     String title = "Reading All Request Parameters"; 

     out.println(docType + 
       "<HTML>\n" + 
       "<HEAD><TITLE>" + title + "</TITLE></HEAD>\n" + 
       "<BODY BGCOLOR=\"#FDF5E6\">\n" + 
       "<H1 ALIGN=CENTER>" + title + "</H1>\n" + 
       "<TABLE BORDER=1 ALIGN=CENTER>\n" + 
       "<TR BGCOLOR=\"#FFAD00\">\n" + 
       "<TH>Parameter Name<TH>Parameter Value(s)"); 

     Enumeration paramNames = request.getParameterNames(); 
     while(paramNames.hasMoreElements()) { 
      String paramName = (String)paramNames.nextElement(); 
      out.print("<TR><TD>" + paramName + "\n<TD>"); 
      String[] paramValues = 
        request.getParameterValues(paramName); 
      if (paramValues.length == 1) { 
       String paramValue = paramValues[0]; 
       if (paramValue.length() == 0) 
        out.println("<I>No Value</I>"); 
       else 
        out.println(paramValue); 
      } else { 
       out.println("<UL>"); 
       for(int i=0; i<paramValues.length; i++) { 
        out.println("<LI>" + paramValues[i]); 
       } 
       out.println("</UL>"); 
      } 
     } 

     out.println("</TABLE>\n</BODY></HTML>"); 
    } 

    public void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     System.out.println("STOP1\n"); 
     doGet(request, response); 
    } 

} 

JSP файл

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Lab 3</title> 
<style type="text/css"> 
.address { 
height: 50px; 
} 
</style> 
</head> 
<body> 

<body BGCOLOR="#FF0000"> 

<h1 align="center">Basic FORM</h1> 
<form action="ShowParameters" method="post"> 
    First Name: <input type="text" name="first"> <br> 
    Last Name: <input type="text" name="last" value="$"> <hr/> 
    Middle Name: <input type="text" name="middle"> <br> 
    Item: <input type="text" name="item"> <br> 
    Address: <input type="text" name="address" class="address"> <br> 
    Credit Card: <br> 
    <input type="radio" name="cardType" value="Visa">Visa <br> 
    <input type="radio" name="cardType" value="MasterCard">MasterCard <br> 
    Credit Card Number: <input type="text" name="cardNum"> <br><br> 

    <center><input type="submit" value="Submit Order"></center> 
</form> 

</body> 
</html> 

ответ

1

вместо создания HTML в сервлет создать класс для хранения формы ввода информации, как:

public class Person { 

    private String firstName; 
    private String midlleName; 
    private String lastName; 
    private String item; 
    private String address; 
    private String cardType; 
    private String cardNumber; 

    //getters and setters 

} 

в сервлет создать экземпляр класса Person и заданных значений, то просто добавьте человека экземпляр запроса и вперед к JSP.

Person person = new Person(); 
    person.setFirstName(request.getParameter("first")); 
    //set other person values here 
    request.setAttribute("person", person); 
    request.getRequestDispatcher("filename.jsp").forward(request, response); 

в Jsp дисплей как:

<table border="2"> 
    <tr bgcolor="#FFAD00"> 
     <th>Parameter Name</th> 
     <th>Parameter Value(s)</th>  
    </tr> 
    <tr> 
     <td>first</td><td>${person.firstName}</td> 
    </tr> 
    <tr> 
     <td>item</td><td>${person.item}</td> 
    </tr> 
    <tr> 
     <td>last</td><td>${person.midlleName}</td> 
    </tr> 
    <tr> 
     <td>address</td><td>${person.address}</td> 
    </tr> 
    <tr> 
     <td>middle</td><td>${person.lastName}</td> 
    </tr> 
    <tr> 
     <td>cardType</td><td>${person.cardType}</td> 
    </tr> 
    <tr> 
     <td>cardNum</td><td>${person.cardNumber}</td> 
    </tr> 
</table> 

Преимущества:.

  • легко изменить порядок, как вам нравится в HTML (просто переместить <tr/> элементы)
  • Нет необходимости цикла.
  • Выполняется при программировании типа объектно-ориентированного программирования (ООП).
1

Вместо того, чтобы получать перечисление параметров с помощью request.getParameterNames вы могли бы иметь строковый массив имен всех параметров вы ожидаете с ними в порядке, вы хотите, и вы могли бы проходной, что массив так:

String[] paramNames = { "item", "last", "first" }; 
for(int i=0; i<paramNames.length; i++) 
{ 
    out.print("<tr>"); 
    out.print("<td>" + paramNames[i] + "</td>"); 
    out.print("<td>"); 
    String[] paramValues = request.getParameterValues(paramNames[i]); 
    ... 
    ... 
    out.print("</td>"); 
    out.print("</tr>"); 
} 

Пожалуйста, обратите внимание, что одна из вещей, которые вы не делаете в коде правильно закрывать клетки с </td> и строки с </tr>. Вы также должны закрыть LI с помощью </li>.

+0

Какой код я бы точно удалял? Просто строка, которая говорит «Перечисление paramNames = request.getParameterNames();»? Или я должен удалить цикл while сразу же после этой строки? – Brett

+0

Кроме того, следует ли мне заменять две строки «...» чем-то? – Brett

Смежные вопросы