构建基本web应用程序时出现JSP异常
我正在构建一个简单的web应用程序,它采用啤酒的颜色并显示建议…(实际上是使用MVC架构)。“form.html”页面正在加载..但在选择颜色并单击“提交”时..出现异常 我观察到的可能暗示 在日志的某个地方,result.jsp中的“Iterator it=list.Iterator()”行显示错误构建基本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
<%@ 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年了。