使用Java/JSP对表单结果重新排序
我对Java和JSP缺乏经验。我创建了一个表单,它按照预期的方式工作,但我想从中获得一些乐趣,并让它在表单提交后重新排序结果。我将包括一些图片来说明我的意思。我很难找到我想要的,也不知道从哪里开始。任何帮助都将不胜感激 以下是表格页: 以下是结果:使用Java/JSP对表单结果重新排序,java,html,jsp,Java,Html,Jsp,我对Java和JSP缺乏经验。我创建了一个表单,它按照预期的方式工作,但我想从中获得一些乐趣,并让它在表单提交后重新排序结果。我将包括一些图片来说明我的意思。我很难找到我想要的,也不知道从哪里开始。任何帮助都将不胜感激 以下是表格页: 以下是结果: 下面是我希望结果的样子(注意“last”从2变为3,“middle”从3变为5,“item”从4变为2,“address”从5变为4): Java文件 import java.io.*; import javax.servlet.*; impo
下面是我希望结果的样子(注意“last”从2变为3,“middle”从3变为5,“item”从4变为2,“address”从5变为4): 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);
}
}
import java.io.*;
导入javax.servlet.*;
导入javax.servlet.http.*;
导入java.util.*;
公共类ShowParameters扩展了HttpServlet{
私有静态最终长serialVersionUID=1L;
public void doGet(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
response.setContentType(“text/html”);
PrintWriter out=response.getWriter();
字符串docType=
“\n”;
String title=“读取所有请求参数”;
out.println(docType+
“\n”+
“”+标题+“\n”+
“\n”+
“”+标题+“\n”+
“\n”+
“\n”+
“参数名称参数值”;
枚举paramNames=request.getParameterNames();
while(paramNames.hasMoreElements()){
字符串paramName=(字符串)paramNames.nextElement();
out.print(“+paramName+”\n”);
字符串[]参数值=
request.getParameterValues(paramName);
如果(paramValues.length==1){
字符串paramValue=paramValues[0];
if(paramValue.length()==0)
out.println(“无价值”);
其他的
out.println(参数值);
}否则{
out.println(“”);
对于(int i=0;i而不是通过
请求获取参数的枚举。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>");
}
String[]paramNames={“item”、“last”、“first”};
对于(inti=0;i,不要在servlet中创建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
}
在servlet中,创建Person类的实例并设置值,然后简单地将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>
参数名
参数值
第一${person.firstName}
项目${person.item}
last${person.midleName}
地址${person.address}
中间${person.lastName}
cardType${person.cardType}
cardNum${person.cardNumber}
好处:
- 在html中,可以根据需要轻松更改顺序。(只需移动
元素)
- 不需要回路
- 遵循面向对象编程(OOP)的编程风格
那么我应该删除哪一段代码?只删除“Enumeration paramNames=request.getParameterNames();”这一行?或者我应该删除紧跟在这一行之后的while循环吗?另外,我应该用什么替换“…”的两行吗?
<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>