美文网首页
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