Java Web应用程序在JVM中的执行过程

Java Web 应用开发完成,编译打包后得到一个 War 包,将这个 war 放入到 Tomcat 容器路径下,启动 Tomcat 就可以通过 HTTP 访问这个 Web 应用了。

Java Web 应用是被 Tomcat 加载运行的,所以也称 Tomcat 为 Web 容器。

阅读更多

EL表达式与JSTL标签库

JSP 页面中经常用到EL表达式和JSTL标签库。

EL表达式主要作用:获取数据执行运算获取Web常用隐式对象

EL表达式以${}结构表示;取值从左到右,如果需要文件${,在前面加转义符\${

阅读更多

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>控制,只在编译和测试有效。

阅读更多

web.xml文件配置示例

web.xml文件配置:

  1. 配置默认首页。
  2. 配置编码过滤器和拦截路径。
  3. 加载springmvc.xml文件:配置监听器,指定文件路径。
  4. 配置前端控制器。
  5. 配置错误统一处理。
阅读更多

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>
阅读更多