我正在建立一个简单的网络应用程序,它采用啤酒的颜色并显示建议..(实际上运用MVC架构)。 " form.html"页面正在加载。但是选择颜色,然后单击提交..它正在提供异常
我观察到的可能提示,
日志中的某处错误显示在第34行; Iterator it = list.iterator()"在result.jsp
中[事先得到帮助]
result.jsp中
<%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<h1 align="center">Beer Recommedations JSP</h1>
<p>
<%
List list = (List)request.getAttribute("styles");
/*for(String s:list)
out.print("<br>try: "+s);*/
Iterator it = list.iterator();
while(it.hasNext()){
out.print("<br>try: "+it.next());
}
%>
</body>
</html>
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Beer Suggestion</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Beer</servlet-name>
<servlet-class>BeerSelect</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Beer</servlet-name>
<url-pattern>/SelectBeer.do</url-pattern>
</servlet-mapping>
</web-app>
BeerSelect.java
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/BeerSelect")
public class BeerSelect extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String c = request.getParameter("color");
BeerExpert be = new BeerExpert();
ArrayList<String> list = new ArrayList<String>();
list = be.getBrands(c);
/*PrintWriter writer = response.getWriter();
writer.println("<html><body>Beer Selection Advice<br>");
writer.println("<br>Got beer <br> <center>");
Iterator it = list.iterator();
while(it.hasNext()){
writer.println("<br>"+it.next());
}
writer.println("</body></html>");*/
request.setAttribute("result", list);
RequestDispatcher view = request.getRequestDispatcher("result.jsp");
view.forward(request, response);
}
}
BeerExpert.java
import java.util.ArrayList;
public class BeerExpert {
public ArrayList<String> getBrands(String c){
ArrayList<String> brands = new ArrayList<String>();
if(c.equals("amber"))
brands.add("Pata nai yaar");
else if(c.equals("brown"))
brands.add("McDowells");
else if(c.equals("light")){
brands.add("Bag Piper");
brands.add("Mountain Dew");
}
else{
brands.add("Petrol");
brands.add("Kerosene");
}
return brands;
}
}
form.html
<!DOCTYPE html>
<html>
<body>
<h1 align="center">Beer Selection Page</h1>
<form method="post" action="SelectBeer.do">
Select beer characteristics<br><br>
Color :
<select name="color" size="1">
<option value="light">light</option>
<option value="amber">amber</option>
<option value="brown">brown</option>
<option value="dark">dark</option>
</select>
<br><br>
<center>
<input type="Submit">
</center>
</form>
</body>
答案 0 :(得分:1)
你在这里犯了一个错误,
List list = (List)request.getAttribute("styles");
但实际上在请求中,您设置了
request.setAttribute("result", list);
RequestDispatcher view = request.getRequestDispatcher("/result.jsp");
view.forward(request, response);
所以这应该按预期工作,
List list = (List)request.getAttribute("result");