servlet中读取参数问题相关
各位大侠,小弟刚接触servlet,试着写了个session管理的小例子实现购物功能(无数据库)
以下是页面提交后调用的servlet代码,简单点就是显示下刚才选中的物品名称和数量,数量可以自己修改,可奇怪的是我每次只能修改表格中第一行商品的数量,其他的都修改不了
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
import tool.ServletUtilities;
/**
* @author zhang
* @Copyright
* @2005-3-28
*/
public class order extends HttpServlet{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException,ServletException{
response.setContentType("text/html");
PrintWriter out=response.getWriter();
HttpSession session=request.getSession();
shoppingcart cart;
synchronized(this)
{
cart=(shoppingcart)session.getAttribute("shoppingcart");
if(cart==null)
{
cart=new shoppingcart();
session.setAttribute("shoppingcart",cart);
}
String itemid=request.getParameter("itemid");
if(itemid!=null)
{
String itemnum=request.getParameter("itemnum");//itemnum为物品数量的参数名
int nownum=0;
if(itemnum==null)
{
cart.additem(itemid);
}
else //获取顾客想修改的值
{
try{
nownum=Integer.parseInt(itemnum);
}catch(NumberFormatException nue){
nue.printStackTrace();
}
cart.setItemnum(itemid,nownum);
}
} // end of if
} //end of synchronized
//print started
itemorder noworder;
Stack itemordered=cart.getOrderedItem();
out.println(ServletUtilities.DOCTYPE+ServletUtilities.headWithTitle("ShoppingCart"));
out.println("<BODY BGCOLOR=\"#FDF5E6\"> \n"+
"<CENTER>\n"+
"<H3> ITEMS IN YOUR CART</H3>\n"+
"<TABLE BORDER=1>\n"+
"<TR BGCOLOR=\"#FFAD00\">\n" +
"<TH> BOOK ID <TH>BOOK NAME <TH>PRICE <TH>NUM <TH>TOTALCOST \n");
for(int i=0; i<itemordered.size(); i++)
{
noworder = (itemorder)itemordered.get(i);
out.println("<TR>\n" +
" <TD>" + noworder.getItemid()+"\n"+
" <TD>" + noworder.getName() + "\n" +
" <TD>" + noworder.getPercost() + "\n" +
" <TD>" +
"<FORM>\n" +
"<INPUT TYPE=\"HIDDEN\" NAME=\"itemid\"\n" +
" VALUE=\"" + noworder.getItemid() + "\">\n" +
"<INPUT TYPE=\"TEXT\" NAME=\"itemnum\"\n" +
" SIZE=2 VALUE=\"" + noworder.getItemnum() + "\">\n" +
"<INPUT TYPE=\"SUBMIT\"\n "+
"VALUE=\"Change Number\">\n" +
"</FORM>\n" +
" <TD>" + noworder.getTotalCost() + "\n");
}
out.println("</TABLE><br>");
out.print("<a href=\"viewitem\">BACK</a>");
out.println("</CENTER></BODY>");
} // end of doGet
}