jsp入门

 

 

1 什么是JSP

HTML + java代码 + jsp动态标签  ==  JSP(Java Server Pages)

在静态页面上添加动态信息就可以了,如果是Servlet还需要一行一行的输出。

通常在前台开发人员给出静态页面后,后台开发人员只需在静态页面中添加动态信息即可,而不用再使用Servlet一行一行的去输出了。

2 JSP"真身":Servlet

当客户请求的jsp页面时服务器会查看jsp对应的Servlet是否存在,(就是在Tomcat解压包下面的workCatalinalocalhost工程名orgapachejsps是否生成对应的xxx_jsp.java和xxx_jsp.class这两个文件。)如果存在,那么直接调用Servletservice()方法来处理请求。如果不存在,那么服务器会先把JSP编译成.java,再把.java编译成.class,然后调用service()方法。当这个JSP页面,第二处理请求时,就直接调用直身的service()方法了。

在workCatalinalocalhost工程名orgapachejsp下生成xxx_jsp.java和xxx_jsp.class这两个文件

从上面的代码中,我们可以看出,xxx_jsp.java是继承于HttpJspBase,而HttpJapBase又继承于HttpServlet

启动服务器,没访问jsp之前work工程名里面没有内容。

JSPServletJSP与我们编写的Servlet有什么不同呢?

 通常我们编写的Servlet就不需要输出HTML代码了,而是转发到JSP页面。

  即Servlet不再负责显示页面,而由JSP来完成!而Servlet专注与控制层内容!

  在“真身”中,所有的静态内容会被输出。例如<html>就是静态内容,它对应“真身”中的out.write(“<html>”)

3 jsp中的java代码块

JSP中的java代码块就是最常见的动态信息。它分为三种:

<%...%>:代码片段。代码片段会原封不动的出现在真身中(xxx_jsp.java中)。正常的Java代码都可以在代码片段中出现;

<%=...%>:表达式。表达式会在“真身”中输出,例如:<%=a%>,对应真身中的out.print(a)。

  只能出现常量、变量,以及有返回值的方法调用,而且不能出现分别!即在out.println()的合法参数都可以!

   <%=a%>对应out.println(a)

   <%=”a”%>对应out.println(“a”)

   <%=fun()%>对应out.println(fun())

   <%=a;%>对应out.println(a;);,所以出错;

   <%=System.out.println(“hello”)%>对应out.println(System.out.println(“hello”)),所以出错。

<%!...%>:声明。声明对应“真身”中的属性和方法!例如<%! int serverInstanceVariable = 1; %>

  静态的数据成员也可以如此定义。

另外一种理解(百度百科)

有三个基本的脚本元素,作用是使JAVA代码可以直接插入servlet.
  • 一种是声明标签,在JAVA SERVLET的类体中放入一个变量的定义。静态的数据成员也可以如此定义。
    • <%! int serverInstanceVariable = 1; %>
  • 一种是脚本标签,在JAVA SERVLET的类的_jspService()方法中放入所包含的语句。
    • <% int localStackBasedVariable = 1; out.println(localStackBasedVariable); %>
  • 一种是表达式标签,在JAVA SERVLET的类中放入待赋值的表达式,表达式注意不能以分号结尾。
    • <%= "expanded inline data " + 1 %>(表达式会在JAVA SERVLET中输出)


4 JSP的两种注解

 

其中JSP只有一种注释:<%-- … --%>,注释中的内容会被JSP编译系统忽略!

HTML的注释:<!-- … -->,因为最终向客户端响应的内容还是HTML,所以在HTML注释中的内容还是看不到的。

但是可以通过在浏览器中右键à查看源代码,查看<!-- … -->中的内容。

1 <!-- <%=String.format("%tF %<tT"new Date())%> -->(xxx.jsp)

(xxx_jsp.java)

(源码)

2 <%-- <%=String.format("%tF %<tT", new Date())%> --%>

<%-- … --%>,注释中的内容会被JSP编译系统忽略,不编译

原文地址:https://www.cnblogs.com/kingxiaozi/p/3483991.html