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)??

解决方案 »

  1.   

    打错,应该是显示为[Ljava.lang.String;@30ae41 d 而且"@30ae41 d "每刷新一次都会变化但若是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.错误,为什么呢?
      

  2.   


    但若是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个的值,当然就报错了
      

  3.   

    设为String[] str = {"a", "b", "c"};就会显示The server encountered an internal error () that prevented it from fulfilling this request.setType(3, "d") ;  --越界了吧 ?你的数组只是 0、 1、2