java.lang.ClassCastException:java.lang.String无法强制转换为org.springframework.orm.hibernate3.HibernateTemplate

时间:2017-04-12 22:34:52

标签: java spring hibernate jsp

这是我正在编码的jsp页面: 我的要求是从sql数据库中显示一行。

    <%@page import="edu.mindscripts.BookAction"%>
    <%@page import="java.util.Iterator"%>
    <%@page import="edu.mindscripts.BookPojo"%>
    <%@page import="java.util.List"%>
    <%@page import="org.hibernate.Query"%>
    <%@page import="org.hibernate.Session"%>
    <%@page import="org.springframework.orm.hibernate3.HibernateTemplate"%>
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <%!Object o; %>
    <%
        //Object o = session.getAttribute("template");
        //HibernateTemplate template = (HibernateTemplate)o;
        Cookie c[]=request.getCookies();

        for(Cookie c1:c)
        {
           out.println(c1);
           out.println(c1.getValue());
           session.setAttribute("temp",c1.getValue());
                }

                out.println(session.getAttribute("temp"));

                Object o=session.getAttribute("temp");
                out.println(o);

                HibernateTemplate template=(HibernateTemplate)o;
                out.println(template);
        %>

cookie的输出很好,但是当我尝试使用HibernateTemplate时它会抛出异常

我在哪里做错了。 我有另一个设置,编码工作正常。

以下是例外

SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.ClassCastException: java.lang.String cannot be cast to 
org.springframework.orm.hibernate3.HibernateTemplate
    at org.apache.jsp.bookdetails_jsp._jspService(bookdetails_jsp.java:96)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at 


  org.apache.jasper.servlet.JspServletWrapper.
      service(JspServletWrapper.java:388)
       at org.apache.jasper.servlet.JspServlet.
   serviceJspFile(JspServlet.java:313)
        at org.apache.jasper.servlet.JspServlet.
  service(JspServlet.java:260)
      at javax.servlet.http.HttpServlet.
     service(HttpServlet.java:717)
        at 

提前致谢

2 个答案:

答案 0 :(得分:0)

错误告诉您session.getAttribute("temp")正在返回一个字符串,而不是HibernateTemplate。

查看代码中设置会话属性“temp”的所有区域,并确保在设置hibernate模板时没有设置字符串值。

答案 1 :(得分:0)

伙计,这是您网页中使用 Scriptlet 的问题,难以维护并且难以阅读。问题出在HibernateTemplate template=(HibernateTemplate)o;。你的 o 对象是一个字符串而不是 HibernateTemplate ,你必须调试你的控制器,看看你投入了什么&#39; temp&#39;变量。也许,请考虑使用 JSTL 而不是 Scriptlet 。祝你有个美好的一天。