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>
原文地址:https://www.cnblogs.com/wy1290939507/p/4569081.html