Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
构建基本web应用程序时出现JSP异常_Jsp_Servlets_Model View Controller_Web.xml_Servlet 3.0 - Fatal编程技术网

构建基本web应用程序时出现JSP异常

构建基本web应用程序时出现JSP异常,jsp,servlets,model-view-controller,web.xml,servlet-3.0,Jsp,Servlets,Model View Controller,Web.xml,Servlet 3.0,我正在构建一个简单的web应用程序,它采用啤酒的颜色并显示建议…(实际上是使用MVC架构)。“form.html”页面正在加载..但在选择颜色并单击“提交”时..出现异常 我观察到的可能暗示 在日志的某个地方,result.jsp中的“Iterator it=list.Iterator()”行显示错误 <%@ page import="java.util.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transition

我正在构建一个简单的web应用程序,它采用啤酒的颜色并显示建议…(实际上是使用MVC架构)。“form.html”页面正在加载..但在选择颜色并单击“提交”时..出现异常

我观察到的可能暗示

在日志的某个地方,result.jsp中的“Iterator it=list.Iterator()”行显示错误

<%@ 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>
[提前感谢您的帮助]

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>

啤酒建议
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
啤酒
比尔塞特
啤酒
/选择啤酒
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);        
    }
}
import java.io.IOException;
导入java.util.ArrayList;
导入javax.servlet.RequestDispatcher;
导入javax.servlet.ServletException;
导入javax.servlet.annotation.WebServlet;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
@WebServlet(“/BeerSelect”)
公共类BeerSelect扩展了HttpServlet{
私有静态最终长serialVersionUID=1L;
受保护的void doPost(HttpServletRequest请求、HttpServletResponse响应)引发ServletException、IOException{
字符串c=request.getParameter(“颜色”);
BeerExpert be=新的BeerExpert();
ArrayList=新建ArrayList();
列表=be.getBrands(c);
/*PrintWriter=response.getWriter();
writer.println(“啤酒选择建议
”; writer.println(“
得到啤酒”
”; Iterator it=list.Iterator(); while(it.hasNext()){ writer.println(“
”+it.next()); } writer.println(“”)*/ setAttribute(“结果”,列表); RequestDispatcher视图=request.getRequestDispatcher(“result.jsp”); 视图。转发(请求、响应); } }
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;
    }
}
import java.util.ArrayList;
公共类啤酒{
公共阵列列表getBrands(字符串c){
ArrayList brands=新的ArrayList();
如果(c.等于(“琥珀色”))
品牌。添加(“Pata nai yaar”);
否则,如果(c.等于(“棕色”))
品牌。添加(“麦克道尔”);
否则,如果(c.等于(“光”)){
品牌。添加(“袋风笛手”);
品牌。添加(“山露”);
}
否则{
品牌。添加(“汽油”);
品牌。添加(“煤油”);
}
回归品牌;
}
}
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>

啤酒选择页面
选择啤酒特性

颜色: 光 琥珀色 棕色的 黑暗的


您在这里犯了一个错误

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");
这是一个例外:哪一个例外?发布堆栈跟踪。请不要使用scriptlet,也不要使用原始类型。我们不再是1999年了。