JspBean.java:
package jspproject;/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2011</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class JspBean {
private String[] type = new String[]{"jsp", "jdbc", "ejb"};
public String[] getType() {
return this.type;
}
public void setType(String[] type) {
this.type = type;
}
public String getType(int index) {
return this.type[index];
}
public void setType(int index, String value) {
this.type[index] = value;
}
}
JspTest.jsp:
<%@ page contentType="text/html; charset=gb2312" %><jsp:useBean id="user" scope="page" class="jspproject.JspBean" /><%
String[] str = {"a", "b", "c", "d", "e", "f"};
%><html>
<head>
<title>JspTest</title>
</head>
<body bgcolor="#ffffff">
<%
user.setType(str);
out.println(user.getType());
user.setType(3, "d");
out.println(user.getType(3));
%>
</body>
</html>
为什么运行显示: The server encountered an internal error () that prevented it from fulfilling this request.
exception org.apache.jasper.JasperException: 3
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:370)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.ArrayIndexOutOfBoundsException: 3
jspproject.JspBean.setType(JspBean.java:34)
org.apache.jsp.JspTest_jsp._jspService(org.apache.jsp.JspTest_jsp:69)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)??
package jspproject;/**
* <p>Title: </p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2011</p>
*
* <p>Company: </p>
*
* @author not attributable
* @version 1.0
*/
public class JspBean {
private String[] type = new String[]{"jsp", "jdbc", "ejb"};
public String[] getType() {
return this.type;
}
public void setType(String[] type) {
this.type = type;
}
public String getType(int index) {
return this.type[index];
}
public void setType(int index, String value) {
this.type[index] = value;
}
}
JspTest.jsp:
<%@ page contentType="text/html; charset=gb2312" %><jsp:useBean id="user" scope="page" class="jspproject.JspBean" /><%
String[] str = {"a", "b", "c", "d", "e", "f"};
%><html>
<head>
<title>JspTest</title>
</head>
<body bgcolor="#ffffff">
<%
user.setType(str);
out.println(user.getType());
user.setType(3, "d");
out.println(user.getType(3));
%>
</body>
</html>
为什么运行显示: The server encountered an internal error () that prevented it from fulfilling this request.
exception org.apache.jasper.JasperException: 3
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:370)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.ArrayIndexOutOfBoundsException: 3
jspproject.JspBean.setType(JspBean.java:34)
org.apache.jsp.JspTest_jsp._jspService(org.apache.jsp.JspTest_jsp:69)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)??
但若是String[] str = {"a", "b", "c", "d", "e", "f"};设为String[] str = {"a", "b", "c"};就会显示The server encountered an internal error () that prevented it from fulfilling this request.错误,为什么呢?
错的原因在这两句
user.setType(3, "d");
out.println(user.getType(3));
数组的长度是3,而你想存和取第4个的值,当然就报错了