JavaWeb 回顾总结(六)-jsp-三⼤常⽤标签
JSP 标签介绍 JSP 标签也称之为Jsp Action (
JSP 动作)元素,它⽤于在Jsp 页⾯中提供业务逻辑功能,避免在JSP 页⾯中直接编写java 代码,造成jsp 页⾯难以维护。 区分开 jsp 指令 , 不要发⽣混淆
JSP 常⽤标签
jsp 的常⽤标签有
<jsp:include>
<jsp:forward>
<jsp:param>
<jsp:include>标签
之前 在 指令 种 了解到过 ,这⾥ 单独简绍 ,重在使⽤ 动态引⼊ : <jsp:include>标签⽤于把 另外⼀个资源的输出内容 插⼊进当前 JSP 页⾯的输出内容之中,在 JSP页⾯执⾏时的引⼊ 语法: <jsp:include page=" relativeURL | <%=expression%> "
flush="true|false" /> page属性指定 被引⼊资源 的 相对路径,它也可以通过执⾏⼀个 表达式 来获得。 flush属性指定 在插⼊其他资源的 输出内容 时,是否先将当前 JSP页⾯的已输出的内容 刷新 到客户端。例:使⽤jsp:include 标签引⼊资源
<jsp:include>标签与include 指令的区别 <jsp:include>标签是 动态引⼊,<jsp:include>标签涉及到的2个JSP页⾯会被翻译成2个servlet,这2个servlet的内容在执⾏时进⾏合并。
动态包含就是指先将各个页⾯分别处理,处理完之后再将处理后的结果包含进来。 ⽽include 指令是
静态引⼊,涉及到的2个JSP页⾯会被翻译成⼀个servlet,其内容是在 源⽂件级别 进⾏合并。 不管是<jsp:include>标签,还是include 指令,它们都会把两个JSP 页⾯内容合并输出,所以这两个页⾯不要出现重复的HTML 全局架构标签,否则输出给客户端的内容将会是⼀个格式混乱的HTML ⽂档。
jstl常用标签有哪些*.jspf 扩展名⽂件在jsp:include 、@include 和:import 中的区别
<h1> ⽹页主题 </h1>
<jsp:include page ="/Jsp-Include/index.jsp" flush ="true">
JSP 规范建议使⽤.jspf (JSP fragments )作为 静态引⼊ ⽂件的扩展名。 ⼀个JSP⽂件命名为jspf扩展名,然后 include 到另⼀个jsp ⽂件中的,发现只有⽤ @include 指令的时候,jspf ⽂件的内容才会被解析并执⾏其中的 jsp指令 和 tag 使⽤jsp:include和JSTL 的:import都没有⽤,jspf⽂件被 当作 纯⽂本 ⽂件处理了。
jspf ⽂件 Tomcat 服务器 被当作 纯⽂本⽂件 处理了,没有当作jsp 页⾯来解析执⾏让 tomcat 服务器能够解析执⾏ *.jspf ⽂件中的 java 代码 和 标签
有如下的⼏种解决办法:
解决办法⼀:修改 l ⽂件,添加对扩展名为 *.jspf ⽂件的映射
如下所⽰:
上⾯的配置⽅式也可以简写成这样:
两种写法的效果都是⼀样的。添加这样的配置信息后,此时tomcat 服务器就可以正常解析执⾏*.jspf ⽂件了,如下所⽰:
解决办法⼆:修改 Tomcat 服务器的 l ⽂件,添加对扩展名为 *.jspf ⽂件的映射 到 tomcat 服务器的 l ⽂件,如下所⽰:
到名字为 jsp 的那个 Servlet ,如下所⽰:
然后根据Servlet 名到对应的servlet-mapping 配置
如下所⽰:
<!-- 让jspf 扩展名同样成为JSP Servlet 处理的⽂件。 -->
<servlet-mapping >
<servlet-name >jsp </servlet-name >
<url-pattern >*.jspf </url-pattern >
</servlet-mapping >
<!-- 让jsp 扩展名同样成为JSP Servlet 处理的⽂件。 -->
<servlet-mapping >
<servlet-name >jsp </servlet-name >
<url-pattern >*.jsp </url-pattern >
</servlet-mapping >
<servlet-mapping >
<servlet-name >jsp </servlet-name >
<url-pattern >*.jsp </url-pattern >
<!-- 让jspf 扩展名同样成为JSP Servlet 处理的⽂件。-->
<url-pattern >*.jspf </url-pattern >
</servlet-mapping >
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false </param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false </param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
在这⾥可以看到,名字为jsp 的那个Servlet 只⽀持*.jsp 和*.jspx 两种扩展名
因此可以在这个地⽅添加多⼀个<url-pattern>``*.jspf``</url-pattern>
经过这样的配置之后,Tomcat 服务器就可以正常 解析和执⾏ *.jspf ⽂件了。
<jsp:forward>标签
标签⽤于把请求转发给另外⼀个资源。 语法:
<jsp:forward page="relativeURL | <%=expression%>" />
page 属性 ⽤于指定请求转发到的资源的相对路径,它也可以通过执⾏⼀个表达式来获得。
使⽤<jsp:forward>标签跳转页⾯
注:
从页⾯的显⽰效果来看,页⾯已经完成了跳转,但地址栏没有变化,地址栏中显⽰的地址仍是源⽹址 ,但页⾯显⽰的内容却是forward 以后的内容。 因为此跳转属于服务器端跳转。 只要是服务器端跳转,则地址栏永远没有变化。
<jsp:param>标签
当使⽤<jsp:include>和<jsp:forward>标签 引⼊ 或将请求 转发 给其它资源时,可以使⽤<jsp:param>标签向这个资源传递参数。 语法1: <jsp:include page="relativeURL | <%=expression%>"> <jsp:param name="parameterName" value="parameterValue|<%=expression %>" /> </jsp:include> 语法2: <jsp:forward page="relativeURL | <%=expression%>"> <jsp:param
name="parameterName" value="parameterValue|<%= expression %>" /> </jsp:include>
注: <jsp:param>标签的name属性⽤于指定参数名,value属性⽤于指定参数值。 在<jsp:include>和<jsp:forward>标签中可以使⽤多个<jsp:param>标签来传递多个参数。
使⽤<jsp:param>标签向被包含的页⾯传递参数
<!-- The mappings for the JSP servlet -->
<servlet-mapping >
<servlet-name >jsp </servlet-name >
<url-pattern >*.jsp </url-pattern >
<url-pattern >*.jspx </url-pattern >
</servlet-mapping >
<!-- The mappings for the JSP servlet -->
<servlet-mapping >
<servlet-name >jsp </servlet-name >
<url-pattern >*.jsp </url-pattern >
<url-pattern
>*.jspx </url-pattern >
<url-pattern >*.jspf </url-pattern >
</servlet-mapping >
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%--使⽤<jsp:forward>标签跳转到02.jsp--%>
<jsp:forward page="/02.jsp"/>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<h1>参数传递</h1>
<hr />
<jsp:include page ="/jsp/Inc.jsp">
<jsp:param name ="parm1" value ="value1" />
<jsp:param name ="parm2" value ="value2" />
</jsp:include >
Inc.jsp 在03.jsp 页⾯中使⽤<jsp:include>标签将Inc.jsp 页⾯包含进来 使⽤<jsp:param/>标签向Inc.jsp 页⾯传递了两个参数parm1和parm2
例:
使⽤<jsp:param>标签向要跳转的页⾯传递参数 <%@ page language=
"java" import="java.util.*" pageEncoding="UTF-8"%> <h1>接收从03.jsp 页⾯中传递过来的参数:</h1>
<h2><%=Parameter("parm1")%></h2>
<h2><%=Parameter("parm2")%></h2>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%--使⽤<jsp:forward>标签跳转到04.jsp--%>
<%--使⽤<jsp:param>标签向04.jsp 传递参数--%>
<jsp:forward page="/04.jsp">
<jsp:param name="ref1" value="value1" />
<jsp:param name="ref2" value="value2" />
</jsp:forward>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <h1>跳转之后的页⾯!!</h1>
<h1>接收从forwarddemo03.jsp 传递过来的参数:</h1>
<h1>ref1:<%=Parameter("ref1")%></h1>
<h1>ref2:<%=Parameter("ref2")%></h1>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论