zoukankan      html  css  js  c++  java
  • [Jsp] JSP的三个编译指令和七个动作指令


    一、概述
    编译指令是通知Servlet引擎的处理消息,在将JSP编译成Servlet时起作用。
    动作指令只是运行时的动作,通常可以替代JSP脚本,是JSP脚本的标准化写法。


    二、三个编译指令

    ① page
    常用的page指令标签
    <%@ page contentType="text/html;charset=GBK" language="java" pageEncoding="GBK"%>
    <%@ page import="package.className"%>


    ② include
    <%@ include file="file path"%>
    注意:如果两个页面的编译指令冲突,那么页面就会出错。因为这里的include是静态包含,是全部集中了之后,再一次编译成一个Servlet。


    ③ taglib:自定义标签,使用标签。


    三、七个动作指令

    第一种页面的参数传递(forward指令)
    ① jsp:forward
    <jsp:forward page="forward-result.jsp">
       <jsp:param name="age" value="29">
    </jsp:forward>

    另一个页面使用request.getparameter("age")接收此参数

    第二种页面的参数传递(Form表单转发)
    <form method="post" action="jsp-forward.jsp">
    <input type="text" name="username">

    另一个页面使用request.getparameter("username")接收此参数

    ② jsp:param
    param指令用于设置参数值,指令不能单独使用,可与以下三个指令结合使用。
    jsp:include
    jsp:forword
    jsp:plugin

    语法:<jsp:param name="paramName" value="paramValue">

    ③ jsp:include
    <jsp:include page="待导入的页面路径">
    这是动态包含,是先将待导入的页面编译成Servlet,再将多个Servlet整合在一起。

    ④ jsp:useBean
    <jsp:useBean id="name" class="className Path" scope="page|request|session|application">


    ⑤ jsp:setProperty
    <jsp:setProperty name="BeanName" property="propertyName" value="value" />


    ⑥ jsp:getProperty
    <jsp:getProperty name="BeanName" property="PropertyName" />


    举例:
    先编写一个PersonBean.java(在WEB-INF\src\lee包中)
    public class PersonBean{
     private String name;
     private int age;

     public Person(){
     }

     public Person(String name,int age){
       this.name=name;
       this.age=age;
     }
     setters and getters...
    }

    再编写一个BeanTest.jsp页面
    <jsp:useBean id="p1" class="lee.PersonBean" scope="page" />
    <jsp:setProperty name="p1" property="name" value="yeqing" />
    <jsp:getProperty name="p1" property="name" />
    <jsp:setProperty name="p1" property="age" value="23" />
    <jsp:getProperty name="p1" property="age" />

    注:
    1)这里取得的name age就是在PersonBean中定义的私有属性,是利用了反射机制。
    2)PersonBean.java放在了src文件夹中,实际上Java源文件对Web应用不起作用,
       所以我们使用Ant等来编译得到二进制文件,然后放入WEB-INF/classes路径下。
       而且,在为Web应用提供了新的class文件后,必须重启该应用,让它可以重新加载这些新的class文件
    3) 二进制文件就是使用记事本等程序打开后是乱码的文件
    4) 上面的三个标签实现的功能在jsp页面可以用以下的代替

    <%
    PersonBean p1=new PersonBean();
    pageContext.setAttribute("p1",p1);
    //request.setAttribute("p1",p1);
    //session.setAttribute("p1",p1);
    //application.setAttribute("p1",p1);
    p1.setName("yeqing");
    p1.setAge(21);
    %>

    <%=p1.getName()%>
    <%=p1.getAge()%>

    ⑦ jsp:plugin

    用于下载服务器端的JavaBean或Applet到客户端执行。

  • 相关阅读:
    bzoj-2748 2748: [HAOI2012]音量调节(dp)
    bzoj-2338 2338: [HNOI2011]数矩形(计算几何)
    bzoj-3444 3444: 最后的晚餐(组合数学)
    codeforces 709E E. Centroids(树形dp)
    codeforces 709D D. Recover the String(构造)
    codeforces 709C C. Letters Cyclic Shift(贪心)
    codeforces 709B B. Checkpoints(水题)
    codeforces 709A A. Juicer(水题)
    Repeat Number
    hdu 1003 Max Sum (动态规划)
  • 原文地址:https://www.cnblogs.com/avivaye/p/2660507.html
Copyright © 2011-2022 走看看