“容器(Container)”指的是提供特定程序组件服务的标准化运行环境,通过这些组件可以在JavaEE平台上得到所期望的服务。容器的作用是为组件提供与部署、执行、生命周期管理、安全和其他组件需求相关的服务。

  EJB容器:为Enterprise JavaBean组件提供运行时环境,它对应于业务层和数据访问层,主要负责数据处理以及和数据库或其他Java程序的通信。

  Web容器:管理JSP和Servlet等Web组件的运行,主要负责Web应用和浏览器的通信,它对应于表示层。


 

  JSP全称Java Server Page,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。

  JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。

  JSP程序是在服务器端(JSP容器)运行的。服务器端的JSP引擎解释执行JSP代码,然后将结果以HTML页面形式发送到客户端。JSP的运行机制如下图:

怎么把容器中的java项目启动起来 javaweb容器_Java

图1 JSP运行原理

  当Web客户端发送过来一个页面请求时,Web服务器先判断是否为JSP页面请求。如果该页面只是一般的HTML/XML页面请求,则直接将HTML/XML页面代码传给Web浏览器端;如果请求的页面是JSP页面,则由JSP引擎检查该JSP页面,若该页面是第一次被请求,或者不是第一次被请求但已经被修改,则JSP引擎将此JSP页面代码转换为Servlet代码,然后,进行编译生成字节码(.class)文件,再执行并将结果传给Web浏览器端;如果该JSP页面不是第一次被请求,且没有被修改过,则直接由JSP引擎调用Java虚拟机执行已经编译过的字节码文件,然后根据字节码执行的结果,生成对应的纯HTML的字符串返回给浏览器,这样就可以把动态程序的结果展现给用户。


 

  静态包含和动态包含:  

  include指令:

<%@ include file="filename"%>

 

filename指被包含的文件名称(相对路径),被插入的文件必须与当前JSP页面在统一Web服务目录下。一个页面可以包含多个include指令。

  静态插入,这两个文件,在运行前(部署时),经编译合成一个*.class文件,运行时只执行这个class文件。

  <jsp:include>动作元素:

<jsp:include page="filename"/>

动态包含,即将当前JSP页面、被包含的文件各自独立编译为字节码文件。当执行到该动作标签处,才加载执行被包含文件的字节码。

不同点:静态包含不能传递参数,动态包含可以在两文件之间传递参数(通过<jsp:param name="变量名" value="变量值" />)。

  转发与重定向:

  <jsp:forward>转发:

<jsp:forward page="filename" />

用于停止执行当前页面,转向另一个HTML或JSP页面。浏览器地址栏中的地址不会发生变化。

   重定向:

response.sendRedirect("filename");

不同点:

  1. <jsp:forward>只能在本网站内跳转,而使用response.sendRedirect可以跳转到任意一个页面。
  2. <jsp:forward>带着request中的信息跳转,response.sendRedirect不带request信息跳转。