分析出现no Session错误的原因以及给出解决方案:

   使用SpringMVC + JSON数据返回时,经常会出现no Session的错误:

  报错原因:因为懒加载在提取关联对象的属性值的时候发现EntityManager已经被关闭,就报no session错误。

  控制器类中的方法上添加了@ResporseBody注解,将方法的返回值利用jackson包自动转化为JSON字符串,然后放入响应消息体中,最后发送到浏览器;

  然而jackson包都会自动调用对象的属性的get方法来获取属性的值拼接成JSON字符串,而调用get方法就需要自动发送SQL语句去查询关联对象的数据,结果发现EntityManager对象已经关闭了,已经无法在通过EntityManager对象去查询关联对象的get方法,所以就会报 no session异常。

  解决办法:让关闭EntityManager对象的动作延后到提取懒加载对象的数据之后再关闭。

  具体做法:在web.xml中添加一个过滤器OpenEntityManagerInViewFilter,使EntityManager对象的开启和关闭在视图层发生。

<!-- 解决no session问题 -->
<filter>
<filter-name>noSessionFilter</filter-name>
<filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>noSessionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

HTTP Status 500 - Could not write content: could not initialize proxy - no Session的更多相关文章

  1. 【FAQ】【JSP】HTTP Status 500 - Summary(问题排查时候应该仔细分析所有的错误打印说明)

    Question 1.HTTP Status 500 - Unable to compile class for JSP:'***' cannot be resolved to a type 原因分析 ...

  2. HTTP Status 500 - javax.servlet.ServletException: java.lang.NoClassDefFoundError: junit/framework/Test解决方法

    java代码 package webViewer; import java.io.*; import junit.framework.Test; import com.aspose.words.*; ...

  3. Tomcat连HBase报错: HTTP Status 500 - java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext

    Tomcat中连接HBase数据库,启动的时候报错: HTTP Status 500 - java.lang.AbstractMethodError: javax.servlet.jsp.JspFac ...

  4. HTTP Status 500 ? Internal Server Error

    getWriter()和getOutputStream()不能同时调用 HTTP Status 500 ? Internal Server Error Type Exception Report Me ...

  5. Exception:HTTP Status 500 - org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)

    主要错误信息如下: HTTP Status 500 - org.apache.ibatis.binding.BindingException: Invalid bound statement (not ...

  6. HTTP Status 500 - org.apache.jasper.JasperException: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException

    HTTP Status 500 - org.apache.jasper.JasperException: com.sun.org.apache.xerces.internal.impl.io.Malf ...

  7. web项目引用Java项目,连接报错error HTTP Status 500 - Servlet execution threw an exception

    错误信息 项目背景: 一个web项目引用一个java Project,项目中添加了引用,但是打开页面访问,总报500错误.提示:servlet初始化错误. 环境:Eclipse luna JDK: 1 ...

  8. 【ERROR】使用jquery的ajax出现error:readyState=4,status=500

    使用jquery的ajax出现error:readyState=4,status=500,ajax代码如下: $.ajax({ url : "../toBeFinMisManage/show ...

  9. HTTP Status 500 - An exception occurred processing at line 35

    HTTP Status 500 - An exception occurred processing JSP page /manage/addCategory.jsp at line 35 type ...

随机推荐

  1. C#创建excel并释放资源

    using System; using Microsoft.Office.Interop.Excel; using Excel = Microsoft.Office.Interop.Excel; us ...

  2. 九度oj 题目1089:数字反转

    题目1089:数字反转 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3531 解决:1935 题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任 ...

  3. HDU 1573 解同余模线性方程组

    题目意思很直接就是一道裸的解线性同余模方程组的题目 #include <cstdio> #include <cstring> using namespace std; #def ...

  4. VScode输出中文乱码的解决方法------测试过可以用

    用python写个爬虫,配置个VScode环境,发现输出都是乱码,翻阅网站后发现一个简单有效的方法,在此谢过网络上的大牛们的无私分享,我也在此记录一下,以备后用: 文件---->首选项----& ...

  5. vue.js嵌套路由-------由浅入深

    嵌套路由就是路由里面嵌套他的子路由 子路由关键属性children 每一个子路由里面可以嵌套多个组件 子组件又有路由导航和路由容器 <router-link to="/父路由的地址名字 ...

  6. 给nginx生成自签名证书

    https://blog.csdn.net/qq_26819733/article/details/53431662 https://www.liaoxuefeng.com/article/00141 ...

  7. B. Code For 1 分治

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  8. JVM内存分布和垃圾回收

    内存区域划分   程序计数器(Program counter Register) 描述  程序计数器(Program Counter Register)是一块较小的内存空间.它可以看作是当前线程执行的 ...

  9. Oracle Multitenant Environment (五) Create PDB

    Creating and Removing PDBs with SQL*Plus This chapter contains the following topics: About Creating ...

  10. Chrome 如何查看/修改Cookie