09 Oct 2018 in JavaWeb

JSP学习笔记

项目创建与执行

在eclipse中,选择File–>New–>Dynamic Web Project 创建项目

配置完成后即可创建,注意勾选Generate web.xml deployment descriptor选项

各目录的含义是:

  • deployment descriptor:部署的描述
  • Web App Libraries: 放自己的包
  • build: 放编译之后的文件
  • WebContent: 放进写入的页面 运行一个hello world 文件的过程: 在WebContent下创建一个JSP文件,名为hello:
      <%@ page language="java" contentType="text/html; charset=UTF-8"
      pageEncoding="UTF-8"%>
      <!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=UTF-8">
      <title>Insert title here</title>
      </head>
      <body>
      <%
          out.println("hello world!");
      %>
      </body>
      </html>
    

    然后修改浏览器选项:

最后运行即可:

JSP语法

脚本程序

脚本程序可以包含任何Java语句、变量、方法或表达式:

    <% 代码 %>

与其等价的XML语句:

    <jsp:scriptlet>代码</jsp:scriptlet>

示例:

    <html>
    <head><title>Hello World</title></head>
    <body>
    Hello World!<br/>
    <%
        out.println("Your IP address is " + request.getRemoteAddr());
    %>
    </body>
    </html>

JSP声明

一个声明语句可以声明一个或者多个变量、方法,在JSP文件中必须先声明这些变量后才能使用它们:

    <%! declaration %>

等价的XML语句:

    <jsp:declaration>
        代码片段
    </jsp:declaration>

示例:

    <%! int i = 0; %> 
    <%! int a, b, c; %> 
    <%! Circle a = new Circle(2.0); %> 

JSP表达式

表达式中的值会先转化为String,然后插入到表达式出现的地方:

    <%= 表达式 %>

等价的XML语句:

    <jsp:expression>
        表达式
    </jsp:expression>

示例:

    <p>今天的日期是: <%= (new java.util.Date()).toLocaleString()%></p>

JSP注释

注释不会被发到浏览器所以从浏览器中看不到内容:

    <%--  注释  --%>

JSP指令

指令用来设置与整个页面的相关性:

    <%@ 指令 %>

指令标签种类:

  • Page指令 Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令。它的语法格式:
      <%@ page attribute="value" %>
    

    等价的XML格式:

      <jsp:directive.page attribute="value" />
    

    属性有: buffer: 指定out对象使用缓冲区的大小 autoFlush: 控制out对象的 缓存区 contentType: 指定当前JSP页面的MIME类型和字符编码 errorPage: 指定当JSP页面发生异常时需要转向的错误处理页面 isErrorPage: 指定当前页面是否可以作为另一个JSP页面的错误处理页面 extends: 指定servlet从哪一个类继承 import: 导入要使用的Java类 info: 定义JSP页面的描述信息 isThreadSafe: 指定对JSP页面的访问是否为线程安全 language: 定义JSP页面所用的脚本语言,默认是Java session: 指定JSP页面是否使用session isELIgnored: 指定是否执行EL表达式 isScriptingEnabled: 确定脚本元素能否被使用

  • Include指令 JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件,语法格式如下:
      <%@ include file="文件相对 url 地址" %>
    
  • Taglib指令 JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合,语法格式:
      <%@ taglib uri="uri" prefix="prefixOfTag" %>
    

    uri属性确定标签库的位置,prefix属性指定标签库的前缀。

JSP行为

JSP行为标签使用XML语法结构来控制servlet引擎。行为标签只有一种语法格式,它严格遵守XML标准:

    <jsp:action_name attribute="value" />

JSP隐含对象

  • request: HttpServletRequest类的实例response
  • out: PrintWriter类的实例,用于把结果输出至网页上
  • session: HttpSession类的实例
  • application: ServletContext类的实例,与应用上下文有关
  • config: ServletConfig类的实例
  • pageContext: PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
  • page: 类似于Java类中的this关键字
  • Exception: Exception类的对象,代表发生错误的JSP页面中对应的异常对象

控制流语句

  • 判断:
      <body>
      <h3>IF...ELSE 实例</h3>
      <% if (day == 1 | day == 7) { %>
      <p>今天是周末</p>
      <% } else { %>
      <p>今天不是周末</p>
      <% } %>
      </body> 
    
  • 选择:
      <body>
      <h3>SWITCH...CASE 实例</h3>
      <% 
      switch(day) {
      case 0:
      out.println("星期天");
      break;
      case 1:
      out.println("星期一");
      break;
      case 2:
      out.println("星期二");
      break;
      case 3:
      out.println("星期三");
      break;
      }
      %>
      </body> 
    
  • for 循环:
      <% for ( fontSize = 1; fontSize <= 3; fontSize++){ %>
      <font color="green" size="<%= fontSize %>">
          content
      </font><br />
      <% } %>
    
  • while 循环:
      <% while ( fontSize <= 3){ %>
      <font color="green" size="<%= fontSize %>"> 
      菜鸟教程
      </font><br />
      <% fontSize++; %>
    
Thank You For Reading