最近写jsp遇到一系列的低级错误,记录下来权当前车之鉴吧。
错误提示:
SEVERE: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: /jsp04/Zj04_sj_test1_1.jsp(2,1) Page directive must not have multiple occurrences of pageencoding
程序代码如下:
1 <%@ page language="java" import="java.util.*" pageEncoding="gbk"%> 2 <%@ page language="java" import="jsp04.*" pageEncoding="gbk"%> 3 <%@ page import="javax.servlet.jsp.jstl.sql.Result;"%> 4 <% 5 String path = request.getContextPath(); 6 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 7 %> 8 9 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 10 <html> 11 <head> 12 <base href="<%=basePath%>"> 13 14 <title>民意调查</title> 15 16 <meta http-equiv="pragma" content="no-cache"> 17 <meta http-equiv="cache-control" content="no-cache"> 18 <meta http-equiv="expires" content="0"> 19 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 20 <meta http-equiv="description" content="This is my page"> 21 <!-- 22 <link rel="stylesheet" type="text/css" href="styles.css"> 23 --> 24 25 </head> 26 27 <body> 28 <br> 29 在校大学生是否适合做兼职 <br> 30 <br> 31 <% 32 //构造sql语句,取出调查 33 String sql="select * from surveyItem where surveyID=1"; 34 Object params[]={}; 35 //获取调查项列表 36 Result result=DBHelp.runSelectSql(sql,params); 37 Map[] rows=result.getRows(); 38 //循环访问每一个调查项 39 for(int i=0;i<rows.length;i++){ 40 //得到调查项目的ID 41 int id=Integer.parseInt(rows[i].get("id").toString()); 42 //得到调查项 43 String item=rows[i].get("item").toString(); 44 %> 45 <input type="radio" name="radsurver" value="<%=id %>"><%=item %> 46 <% 47 } 48 %><br> 49 <input type="submie" name="Submit" value="提交"> 50 <input type="reset" name="Submit2" value="重置"> 51 </body> 52 </html>
首先,org.apache.jasper.JasperException 中的JasperException
这个异常时jsp引擎解析jsp页面生成servlet时产生的,故错误是在转译阶段,应该是页面的语法有问题,而不是执行阶段出错
然后,检查一下配置,发现页面编码设置了两次,虽然是一样的编码,但还是不被允许的
最后,第二行改为:
<%@ page import="jsp04.*" %>
OK !