因为昨天把JavaMail的Java程序编好了,今天就来编JavaMail的JSP了,其中很多地方都是复制的Java程序里的。然后开启Tomcat,测试,却报了这样的错:Duplicate local variable session。我就纳闷啦,为什么Java程序运行得好好的,在JSP里就出错了呢,而且我也没有定义两个session啊,定义的时候我都指明了javax.mail.Session对象,但还是报错了。其实我们回忆一下就知道了,JSP中有9个隐含对象,分为4类:
1、输入输出对象 : HttpServletRequest的request, HttpServletResponse的response, JspWriter的out;
2、作用域通信对象 : HttpSession的session, ServletContext的application, PageContext的pageContext;
3、servlet对象 : Object的page, ServletConfig的config;
4、错误对象 : Throwable的exception;
而我在JSP里又定义了一个javax.mail.Session对象session,两个session相冲突了,难怪会报错呢。这时只要把新定义的session换个名字就OK了。。。
我的情况是Session session=HibernateUtils.openSession();
session被打上红色波浪线报错Duplicate local variable session。
解决办法:
将session改名为session1,红色报错消失了!!!
PS:<个人总结>session冲突问题解决了,又出现了这样的错误信息:
错误信息是:
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: 12 in the jsp file: /sendmail.jsp
Generated servlet error:
Session cannot be resolved to a type
An error occurred at line: 12 in the jsp file: /sendmail.jsp
Generated servlet error:
Transport cannot be resolved to a type
An error occurred at line: 12 in the jsp file: /sendmail.jsp
Generated servlet error:
Session cannot be resolved
An error occurred at line: 12 in the jsp file: /sendmail.jsp
Generated servlet error:
Message cannot be resolved to a type
An error occurred at line: 12 in the jsp file: /sendmail.jsp
Generated servlet error:
MimeMessage cannot be resolved to a type
An error occurred at line: 12 in the jsp file: /sendmail.jsp
Generated servlet error:
InternetAddress cannot be resolved to a type
An error occurred at line: 12 in the jsp file: /sendmail.jsp
Generated servlet error:
Message.RecipientType.TO cannot be resolved to a type
An error occurred at line: 12 in the jsp file: /sendmail.jsp
Generated servlet error:
InternetAddress cannot be resolved to a type
百度了一下,原来是Session Transport Message MimeMessage InternetAddress 这些都不是类型,也就是没有成功导入MAIL的包,可我明明在Build Path中添加了,为什么还会报错?原来是JSP用的是WEB-INF下的jar包,再复制一份就OK了