zoukankan      html  css  js  c++  java
  • JSP基本语法

    1.简介

    一种可以相应客户端请求,而动态生成HTML/XML格式的Web网页的技术标准。JSP在服务器端工作。

    JSP页面由HTML代码和迁入本器中的Java代码组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生产的HTML页面返回给客户端浏览器。

    JSP集成了Java语言的简单、安全、面向对象、跨平台等特性,JSP应用程序只要编写一次就可以在多个操作系统平台很好地运行,不用对应用程序代码做任何改动。

    而且JSP程序只在第一次请求时进行编译,从而大大提高了程序运行的速度。不像ASP等应用程序每次请求都需要编译器重新编译。

    2.JSP基本语法

    (1)模板元素: HTML或XML

    (2)注释:

    • HTML/XML注释:用于在客户端显示的一个注释,类似于HTML注释,不同的是这里可以使用表达式。

          <!--comment[<%=expression%>]-->

    • 隐藏注释:写在JSP程序中,但是不发给用户。

      <%--comment--%>

    • Scriptlets中的注释:写在JAVA代码中。

      //;  /**     */

    (3)脚本元素:

    • 声明:声明标记用于在JSP页面中声明成员变量。用来定义在产生的Servlet类中类的属性和方法,全局有效。语法格式:<%! declaration;declaration;...%>.
    <%! Int i=1;
    Context ctx=null;
    DataSource ds=null;
    java.sql.Connection con=null;
    %>
    • 表达式:表达式标记用于在JSP页面中使用Java表达式,语法格式:<%=expresion%>.所得结果转换成字符串并与模板元素结合在一起。
    <table>
    <tr>                                                            //一行
        <td><%=rs.getString(1) %></td>           //
        <td><%=rs.getString(2) %></td>
    </tr>
    </table>
    • Java脚本:<%...%>.

    (4)指令元素:

    • page指令:用于定义JSP程序的全局属性。除了import外,其他的页面指令不能重复。
    <%@ page
            language="Java"
            ContentType="text/html;charset=GBK''             
            import="javax.servlet.jsp.*"                        //导入JSP页面所需要用到的Java包列表
            isErrorPage="true"
            erroepage="error.jsp"
             buffer="8KB"                                                                                                       
             autoFlush="true"
    isThreadSafe="true"
    %>
    • include指令:用于通知容器,将当前JSP页面中指定位置上的资源内容包含进来。被包含的文件内容可以被JSP解析,这种解析发生在JSP文件的编译阶段,一经编译,内容就不可改变。可以将JSP文件、HTML文件、文本文件、inc文件等文件插入到JSP文件中,可以实现将一个复杂的JSP页面分成若干简单的部分。
    • taglib指令:允许页面使用者自定义标签。自定义标签是JSP开发中代码复用的一种方式。

    <%@taglib uri="taglibURI"prefix="tagPrefix"%>

    (5)动作元素:

    动作元素在请求处理阶段起作用。

    • jsp:param:以“名-值”对的形式为其他标签提供附加信息。和<jsp:include>、<jsp:forward>、<jsp:plugin>一起使用。

      <jsp:param name="paramName" value="paramValue"/>

    •  jsp:forward:允许将请求转发到另一个JSP、Servlet或静态资源文件。请求被转向到的资源必须位于与JSP发送请求相同的上下文环境之中。每当遇到此操作时,就停止执行当前的JSP,转而执行被转发的的资源。

      <jsp:forward page="uri">

          <jsp:param name="paramName" value="paramValue"/>

      ...

      </jsp:forward>

      例子:登录界面。首先在webcontent目录下面建立一个testlogin文件夹。在该文件夹下新建3个jsp文件:login.jsp、checklogin.jsp、success.jsp。

      login.jsp

    <%@ page language="java" contentType="text/html; charset=gb2312"
        import="java.util.Date"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
     <head>
       <title>JSP--Login</title>
       <form action="checklogin.jsp" method="get">
       <table>
       <tr><td>输入用户名:</td>
       <td><input type="text" name="username" value=<%=request.getParameter("username") %>></td>   
       </tr>
       <tr><td>输入密码:</td>
       <td><input type="password" name="password"%>></td>
       </tr>
       <tr colspan=2><td><input type="submit" value="login"></td></tr>
       </table>
       </form>
       </head>
       <body><center>
       <%=new Date() %>
       </center>
       </body>
    </html>

      checklogin.jsp

    <%@ page language="java" contentType="text/html; charset=gb2312"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>Insert title here</title>
    </head>
    <body>
        <%--进行登录检查 --%>>
        <%
            String name=request.getParameter("username");
            String password=request.getParameter("password");
            //if验证通过,forward-->success.jsp
            //else forward-->login.jsp
            if(name.equals("admin")&&password.equals("admin"))
            {
                %>
                <jsp:forward page="success.jsp">
                <jsp:param name="username" value="<%=name%>"/>
                </jsp:forward>
                <%
            }
            else
            {
                %>
                <jsp:forward page="login.jsp">
                <jsp:param name="username" value="<%=name%>"/>
                </jsp:forward>
                <%
            }
        %>
    </body>
    </html>

    success.jsp

    <%@ page language="java" contentType="text/html; charset=gb2312"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
        欢迎,<%=request.getParameter("username")%>
    </body>
    </html>

     几个要注意的地方:

    1. 绝对路径和相对路径问题。如果login.jsp文件放在testweb/webcontent/testlogin文件夹中,转向checklogin.jsp文件时,可以用“/testlogin/checklogin.jsp"来引用,"/"代表login.jsp文件的上下文路径。如果直接用“checklogin.jsp",代表的是当前路径。
    2. <form action="checklogin.jsp" method="get">为表单标签,action代表把数据传到哪一个文件当中去。
    • <jsp:include>:允许在请求时在现成的JSP页面里包含静态或动态资源。被包含的对象只有对JspWriter对象的访问权,并且它不能设置头或者Cookie。如果页面输出是缓冲的,那么缓冲区的刷新要优先于包含的刷新。执行效率比<@%page include%>低,但是可以动态增加内容。

      <jsp:include page="filename"flush="true">

      <jsp:param name="paramname"value="paramname"/>

      ...

      </jsp:include>

      include.jsp文件

    <%@ page language="java" contentType="text/html; charset=gb2312"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
        <% double i=Math.random(); %>
        <jsp:include page="come.jsp">
        <jsp:param name="number" value="<%=i%>"/>
        </jsp:include>
    </body>
    </html>

      come.jsp文件

    <%@ page language="java" contentType="text/html; charset=gb2312"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
        <%    String str=request.getParameter("number");
            double n=Double.parseDouble(str);
        %>
        <p> 您传过来的值是:<br>
        <%=n %>
    </body>
    </html>
    •  <jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>
    • <jsp:plugin>、<jsp:fallback>
  • 相关阅读:
    mac os x 之通过远程主机在nginx上部署web静态页面
    基于jQuery UI的调色板插件推荐colorpicker
    Mac 访问隐藏文件方法! 网上方法在我电脑上都不可用!
    JavaScript设计模式学习之单例模式
    由一篇博文做出的代码,不用Math.round()如何实现其功能
    mac os x之解决npm安装包失败,或者nodejs工程缺少依赖
    用nginx的反向代理机制解决前端跨域问题
    mac之os x系统下搭建nodejs+express4.x+mongodb+gruntjs整套前端工程
    sourcetree window10 闪退
    滚动条自定义样式
  • 原文地址:https://www.cnblogs.com/wy1290939507/p/4569081.html
Copyright © 2011-2022 走看看