【发布时间】:2024-04-23 14:20:02
【问题描述】:
症状:
项目中的任何 JSP 页面都会产生如下错误消息:
org.apache.jasper.JasperException:无法为 JSP 编译类 在 jsp 文件中的第 5 行发生错误:/check.jspf 生成的 servlet 错误: *重复的局部变量 usr* 在 jsp 文件中的第 5 行发生错误:/check.jspf 生成的 servlet 错误: *重复的局部变量路径* 在 jsp 文件中的第 5 行发生错误:/check.jspf 生成的 servlet 错误: *重复的局部变量pos* 在 jsp 文件中的第 5 行发生错误:/check.jspf 生成的 servlet 错误: *重复的局部变量hSession* 在 jsp 文件中的第 5 行发生错误:/check.jspf 生成的 servlet 错误: *重复的局部变量testRegister* org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:512) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) com.byinsight.logic.EncodingFilter.doFilter(EncodingFilter.java:22)开发环境:
- JDK 1.5
- Tomcat 5.0
- IDE Eclipse 3.3
原因:
我使用jsp-config 在每个 JSP 文件中包含一个 JSPF。 web.xml 如下:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<include-prelude>/check.jspf</include-prelude>
</jsp-property-group>
</jsp-config>
包含的文件是check.jspf。 JSPF中的代码如下:
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="com.byinsight.model.User"%>
<%@page import="javax.servlet.http.HttpSession"%>
<%
//String str = (String)session.getAttribute("login");
User usr = (User)session.getAttribute("user");
String path = request.getServletPath();
int pos = path.indexOf("index.jsp");
HttpSession hSession = request.getSession(false);
String testRegister = (String)hSession.getAttribute("register");
if (-1 == pos) {
if ((null == usr) && (!testRegister.equals("login"))) {
throw new RuntimeException("you have to login first ");
}
}
%>
该项目在 Eclipse 中运行良好,但是当我将 WAR 部署到产品系统中时,出现错误。我不明白错误消息是什么意思,这里没有重复的变量!有人知道吗?非常感谢!
【问题讨论】: