欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JSP标签

程序员文章站 2022-06-08 22:18:10
...

1.简介:
JSP标签也称之为JSP Action(JSP动作)元素,它用于在JSP页面中提供业务逻辑功能,避免在JSP页面中直接编写Java代码,
造成JSP页面难以维护。JSP 动作元素与JSP指令元素不同的是,JSP动作元素在请求处理阶段起作用。JSP动作元素是用XML语法写成的。利用JSP动作可以动态地插入文件、重用JavaBean组件、把用户重定向到另外的页面、为Java插件生成HTML代码。动作元素只有一种语法,它符合XML标准:

    <jsp:action_name attribute="value" />   

2.指令

用法:

<jsp:include page="head.jsp"></jsp:include>
    <p style="color: red;">这里是主体</p>
<jsp:include page="foot.jsp"></jsp:include>

来说明一下动态包含和静态包含的区别:
1.动态包含使用的是JSP动作,指定包含页面的属性是page,静态包含使用的JSP指令,属性是file

2.原理不同:
a) 静态包含是直接将JSP的内容直接嵌入到访问的JSP页面。
将包含的页面的内容直接以out.write()的形式插入到service方法中。
注意:
1.编译出来的servlet只有一个。
2.静态包含是在编译时期将页面代码原封不动包含进来再运行的,所以如果页面之间相同标签的属性如果不同会起冲突,
同理,包含的jsp页面与被包含的jsp页面最好没有重复的html标签。否则会发生覆盖现象。

b) 动态包含是将两个JSP分别编译成不同的servlet,将被包含的servlet输出的
内容包含到自己的页面中,实际上还是在内部调用了include方法
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, “foot.jsp”, out, false);
原理是发送了一个请求给被包含的页面,获取到了响应的html(out.write()中的内容)并包含在自己的页面中。
通俗点说就是附加这个被包含的JSP经过编译后的效果,所以可以含有与当前JSP程序中重复的内容,因为在附加过来之前就会被解析掉。

include动作还可以传递参数到包含的页面中,用法:
        <jsp:include page="head.jsp">
            <jsp:param value="this is value" name="key"/>
        </jsp:include>
而后在接收的页面中使用request.getParameter的方式取出:
        <% String value = request.getParameter("key"); %>
        <%=value %>

3.

jsp:useBean动作用来装载一个将在JSP页面中使用的JavaBean。这个功能非常有用,因为它使得我们既可以发挥Java组件重用的优势,同时也避免了损失JSP区别于Servlet的方便性。jsp:useBean动作最简单的语法为:

<jsp:useBean id="name" class="package.class"  scope="page|request|session|application" />

如果不设置scope 默认为page 这里的page对象是内置对象中的pageContext对象,设置的值 可以通过表达式直接获取 <%=pageContext.getAttribute(“name”)%>

实例:

<jsp:useBean id="user1" class="bean.User" scope="session"></jsp:useBean>


<jsp:setProperty property="userID" name="user1" value="1"/>
<jsp:setProperty property="userName" name="user1" value="Harry"/>
<jsp:setProperty property="password" name="user1" value="password"/>

<%=session.getAttribute("user1") %>

注意:scope中的作用域对象之间的数据是不能共享的,如果是session,那么只有session的getAttribute才能够获取到。

4.
jsp:forward动作把请求转到另外的页面,其实就是请求转发。
jsp:forward标记只有一个属性page。语法格式如下所示:

    <jsp:forward page="请求转发的URL" /> 

    <jsp:forward page="jspb.jsp"></jsp:forward>