美文网首页
JavaWeb编程实战宝典(3)___ 第3章 JSP技术

JavaWeb编程实战宝典(3)___ 第3章 JSP技术

作者: 岁月静好浅笑安然 | 来源:发表于2019-10-31 15:35 被阅读0次

    第3章 JSP技术

    3.1 第一个jsp程序(MyEclipse)

    3.1.1 实例:编写显示服务器当前时间的jsp

    abc.jsp

    <%@page import="java.util.Date"%>
    <%@page import="java.text.SimpleDateFormat"%>
    <%@ 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>显示服务器的当前时间</title>
    </head>
    <body>
    <font color="red">
    <%
        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        out.println(format.format(new Date()));
     %>
     </font>
    </body>
    </html>
    

    部署后,运行,显示当前时间

    http://localhost:8080/JspTest/abc.jsp

    3.1.2 调试JSP程序

    3.1.3 改变JSP的访问路径和扩展名

    web.xml中配置

    <servlet>
      <servlet-name>jsp</servlet-name>
      <jsp-file>/abc.jsp</jsp-file>
      </servlet>
      <servlet-mapping>
      <servlet-name>jsp</servlet-name>
      <url-pattern>/abc.html</url-pattern>
      </servlet-mapping>
    

    部署后,运行,显示当前时间

    http://localhost:8080/JspTest/abc.html

    3.1.4 手动发布JSP程序

    3.2 了解JSP运行原理

    3.2.1 了解tomcat处理jsp页过程

    3.2.2 分析由jsp产生的servlet代码

    3.3 学习JSP基本语法

    3.3.1 学习JSP表达式

        <%=  jsp表达式%>
    

    3.3.2 实现在JSP页面嵌套代码

    <%@page import="java.util.Date"%>
    <%@page import="java.text.SimpleDateFormat"%>
    <%@ 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>显示服务器的当前时间</title>
    </head>
    <body>
    <font color="red">
    <%
        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        out.println(format.format(new Date()));
     %>
     </font>
    </body>
    </html>
    
    • 一个jsp页面中可以再任何位置使用<%...%>插入java代码,<%...%>可以有任意多个
    • 每一个<%...%>中的代码可以不完整,但是这个<%...%>中的内容和jsp页面中的一个或多个<%...%>中的内容组合起来必须完整

    3.3.3 学习JSP声明

    3.3.4 学习JSP表达式(EL)

    3.3.5 实例:利用EL函数替换HTML中的特殊字符

    3.3.6 学习JSP页面中的注释

    3.4 学习JSP指令

    3.4.1 了解JSP指令

    语法

        <%@指令 属性名="值"%>
    

    示例

        <%@ page contentType="text/html" %>
        <%@ page pageEncoding="UTF-8"%>
    

    也可写成一条指令

        <% page contentType="text/html"  pageEncoding="UTF-8" %>
    

    3.4.2 JSP指令page

    page指令用于设置jsp页面的全局属性,大多数jsp页面中都含义page指令,page指令在JSP2.0规范中的定义如下

    <%@ page---------%>使用方式
    1、属性:language = "javaScriptLanuage" 默认为Java
    2、属性:extends ="ClassName" 主要定义此JSP网页产生的Servlet是继承哪一个父类
    3、属性:import = "importList" 主要定义此JSP网页使用那些JAVA API
    4、属性:session="true|false" 决定JSP网页是否使用session对象
    5、属性:buffer="none | size in kb " 决定输出流(output stream)是否有缓冲区,默认为8KB
    6、属性:autoFlush="true | false" 决定输出流的缓冲区是否要自动清除,缓冲区满了会产生异常Exception。默认值为true
    7、属性:isThreadSafe ="true | false" 决定是否JSP网页只能请求一个处理SingleThreadModel
    8、属性:info = "text" 主要表示此JSP网页的相关信息
    9、属性:errorPage = ”error_url“ 表示如果发生异常错误时,网页会被重新指向一个错误页面URL
    10、属性:isErrorPage ="true | false" 表示此JSP Page是否处理异常错误的网页
    11、属性:contentType ="ctinfo" 表示MIME类型和JSP网页的编码方式
    12、属性:pageEncoding ="ctinfo" 表示JSP网页的编码方式
    13、属性:isELlgnored ="true | false" 表示是否此JSP网页忽略EL表达式,true将忽视

    3.4.3 JSP指令include

    语法格式

        <% include file="URL"%>
    

    3.5 学习JSP内置对象

    3.5.1 内置对象out

    用于向客户端输出文本形式的数据
    新建out.jsp

    <%@page import="java.io.PrintWriter"%>
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page buffer="1kb" %>    
    <!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>out对象测试</title>
    </head>
    <body>
    <%
        out.clear(); //清除out对象缓冲区的内容
        //根据请求参数count的值生成"1",以使其占满缓冲区
        int count =Integer.parseInt(request.getParameter("count"));
        for(int i=0;i<count;i++){
        //通过内置对象out(实际是JspWriter对象)将数据输出到客户端
        out.write("1");
        }
        //通过对象将数据输出到客户端
        PrintWriter writer=pageContext.getResponse().getWriter();
        writer.write("使用PrintWriter输出对象");
     %>
    </body>
    </html>
    

    项目运行部署后,浏览器访问

    http://localhost:8080/JspDemo/out.jsp?count=10

    浏览器输出

    使用PrintWriter输出对象1111111111

    3.5.2 内置对象pageContext

    • abstract public Exception getException();
    • abstract public Object getPage();
    • abstract public ServletRequest getRequest();
    • abstract public ServletResponse getResponse();
    • abstract public ServletConfig getServletConfig();
    • abstract public ServletContext getServletContext();
    • abstract public HttpSession getSession();
    • abstract public JspWriter getOut();
    • void include(String path)和void include(String path,boolean flush)
    • void forward(path)

    3.5.3 其他内置对象

    • 1.request、response和session对象
    • 2.page对象
    • 3.exception对象,只有当page指令isErrorPage为true时,才会创建exception对象,通过这个对象可以获得异常的相关信息
    • 4.cofig对象,配置相关即获取web.xml文件中与当前jsp页面相关的配置
    • 5.application对象
      testApplication.jsp
    <%@ 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>
    全局初始化参数值:
    <%= application.getInitParameter("globalArg")%>
    <br>
    获取绝对路径:
    <%= application.getRealPath("testApplication.jsp")%>
    <br>
    获取版本号:
    <%= application.getMajorVersion()%>
    <br>
    web工程路径:
    <%= application.getContextPath()%>
    </body>
    </html>
    

    全局参数在web.xml中配置

     <context-param>
      <param-name>globalArg</param-name>
      <param-value>我是值</param-value>
      </context-param>
    

    浏览器输入

    http://localhost:8080/JspDemo/testApplication.jsp

    运行后输出,如下

    全局初始化参数值: 我是值
    获取绝对路径: D:\tomcat-8.5.41\apache-tomcat-8.5.41\webapps\JspDemo\testApplication.jsp
    获取版本号: 3
    web工程路径: /JspDemo

    3.6 学习JSP标签

    3.6.1 包含标签<jsp:include>

    <jsp:include>标签用于将另外一个静态或动态资源插入到当前的jsp页面中,插入过程是动态的,也就是说只有当前jsp页面运行到了<jsp:include>指令时才执行插入动作
    语法格式

        <jsp:include page="URL" flush="true|false"/>
    

    3.6.2 转发标签<jsp:forward>

    此标签主要用于将当前请求转发其他的静态资源、jsp页面或servlet,语法格式如下

        //语法格式1:
        <jsp:forwrd page="url| <%= expression%>" />
        //语法格式2:
        <jsp:forwrd page="url| <%= expression%>" >
            {<jsp:param .../>}
        </jsp:forwrd>
    

    3.6.3 传参标签<jsp:param>

    语法格式

        <jsp:param name="name" value="value" |<%=expreesion %>/>
    

    3.6.4 创建Bean标签<jsp:useBean>

    • 1.最简单的用法
        <jsp:useBean id="myDate" class="java.util.Date">
    

    等价于

    <%
        java.util.Date myDate=new java.util.Date();
    %>  
    
    • 2.使用class和type
        <jsp:usebean id="myDate" class="java.util.Date" type="Object">
    

    等价于

        <%
            Object myDate=new java.util.Date();
        %>
    
    • 3.使用beanName和type
        <jsp:useBean id="myDate" type="Object" beanName="java.util.Date">
    

    等价于

        <%
            Object myDate=(Object)java.beans.Beans.instantiate(this.getClass().getClassLoader("java.util.Date"));
        %>
    

    3.6.5 设置属性标签<jsp:setProperty>

    3.6.6 获取属性标签<jsp:getProperty>

    语法格式

        <jsp:getPropety  name="name" property="propertyName"/>
    

    3.7 学习JSP的标准标签库(JSTL)

    3.7.1 了解 JSTL

    需要使用taglib指令引入JSTL

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

    uri:JSTL的标签库的唯一标识,可以是任意字符串
    prefix :JSTL中的标签库前缀,目的是为了区分其他同名的标签,prefix的作用类似java中的包名

    3.7.2 JSTL中的条件标签

    • 1.<c:if>标签
    • 2.<c:choose>、<c:when>和<c:otherwise>标签

    <c:choose>相当于jaba中的switch语句、<c:when>相当于java中case关键字、<c:otherwise>相当于default关键字

    3.7.3 JSTL中的循环标签

    • 1.<c:forEach>标签
    • 2.<c:forTokens>标签

    3.8 实战练习

    相关文章

      网友评论

          本文标题:JavaWeb编程实战宝典(3)___ 第3章 JSP技术

          本文链接:https://www.haomeiwen.com/subject/bwctbctx.html