构建基本Web应用程序时的JSP异常

时间:2014-10-23 06:29:48

标签: jsp servlets model-view-controller web.xml servlet-3.0

我正在建立一个简单的网络应用程序,它采用啤酒的颜色并显示建议..(实际上运用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>

1 个答案:

答案 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");