JSP四大作用域和九个内置对象

  四大作用域的作用是为了实现页面和服务器共享数据。

  1. page:设置的属性令在当前页面有效。实际开发中较少使用,作用域太小了。
  2. request:属性仅在本次请求有效。
  3. session:令在浏览器和服务进行本次会话有效,当和服务器断开后,属性失效。
  4. application:属性在整个WEB应用中都有效,直到服务器停止才失效。实际开发中几乎不使用,作用域太大了。

  四大作用域分别都有设置和获取属性的两个方法:setAttribute()getAttribute()

阅读更多

错误:jsp放在src/main/resources目录,SpringMVC反回视图正确,但浏览器报404

问题描述

  1. 个人学习临时搭的一个Maven管理的SpringMVC项目,试着把jsp文件放在src/main/resources/jsp/目录,Maven配置的是Tomcat7服务器插件,通过Maven build运行后,访问该项目,浏览器报404错误,但 SpringMVC没有报错,打印显示的映射路径和转发到的物理视图都无异常。 
  2. 项目打成war包布署到Tomcat7 和 8服务器上运行,浏览器或以正常访问到src/main/resources/jsp/目录下的jsp文件。
  3. jsp移到webapp/WEB-INF/jsp/目录下,修改视图的物理路径的前辍到该目录,使用Maven build运行,浏览器访问正常。

因素排除:

  1. 视图路径的前后辍配置确定正常。
  2. Controller层的映射路径正确。
  3. 浏览器访问的路径正确。

此问题还未找到具体原因,未能解决

阅读更多

Spring MVC报错:java.lang.NullPointerException at org.apache.jsp.WEB_002dINF.jsp.index_jsp._jspInit(index_jsp.java:31)

  报错:访问Maven管理的SpringMVC 项目jsp页面,错误:at org.apache.jsp.WEB_002dINF.jsp.index_jsp._jspInit(index_jsp.java:31)

  原因:是项目的servlet-apijsp-api两个jar包与Tomcat自带的包冲突导致。

  解决:在pom.xml文件,将这两个jar包添加<scope>provided</scope>控制,只在编译和测试有效。

阅读更多

JSP报错:According to TLD or attribute directive in tag file, attribute items does not accept any expressions

  JSP 在使用forEach标签时报错:According to TLD or attribute directive in tag file, attribute items does not accept any expressions。

原因:web.xmlweb-app_2_5.xsd版本大于2.3,需要使用jstl的扩展标签。
解决:jsp文件引用的jstl core标签库改为扩展标签库,
将:<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
替换成:<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
差异:2.5版本可以根据索引 ID 取出 List 里的单个值, 2.3版本就不行。

1
2
3
4
5
6
7
<body>
<!-- 从list集合中根据索引位取值 -->
<h3>${list[0] }</h3>
<h3>${list[1] }</h3>
<h3>${list[2] }</h3>
<h3>${list[3] }</h3>
</body>
阅读更多