JSP学习

JSP页面

  • JSP的全称是Java Server Pages,即Java的服务器页面

  • JSP的主要作用是代替Servlet程序回传HTML页面的数据

  • JSP页面包含指令标识,HTML代码,Java代码,注释等

指令标识

  • jsp指令标识语法
 <%@ 指令名 属性 = "属性值"%>
  • 指令名:包括page,include,taglib

  • 属性:用于指定属性名称,一个指令中可存在多个属性,用逗号或空格分隔

  • 属性值:指定属性值

  • JSP指令标准(IDEA)

  <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  • page指令(共包含15个)
  1. language属性:用于设置1JSP页面使用语言,目前只支持Java
    <%@ page language="java" %>
  1. extends属性:用于设置JSP页面继承的Java类,所有JSP页面执行前都会被服务器解析为Servlet,且Servlet由Java类定义的(不常用,有可能影响服务器性能)

  2. import属性:用于设置JSP导入的类包,JSP页面可写Java代码,执行代码要导入API时用此属性

       <%@ page import="java.util.*"%>
  1. pageEncoding属性:用于定义JSP页面的编码格式,指定文件编码
       <%@ page pageEncoding="GB18030"%>
  1. contentType属性:用于设置JSP页面的MIME码和字符编码
      <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  1. session属性:设定JSP页面是否用HTTP页面的session对话对象,属性值是true和false
       <%@ page session="true"%>
  1. buffer属性:用于设置JSP的out输出对象的缓冲区大小,默认为8KB,一般用8KB的倍数为属性值:如16KB,128KB等
      <%@ page buffer="128KB"%>
  1. autoFlush属性:用于设置JSP页面缓存满时是否自动刷新,属性值是true和false
       <%@ page autoFlush="true"%>
  1. isErrorPage属性:将当前JSP页面设置为错误处理页面,如doGet和doPost的效果,属性值是true和false
      <%@ page isErrorPage="true"%>

10.errorPage属性:用于指定当前JSP处理异常的另一个JSP页面,另一个JSP页面的isErrorPage属性一定得是true,出现错误时会优先处理当前属性指定的错误页面。

    <%@ page errorPage="error/loginErrorPage.jsp"%>
  • include指令:可在一个JSP页面中包含另一个JSP页面,静态包含

    • 该属性大大提高代码的重用性,方便维护升级

    • 语法格式

    <%@ include file="path"%>
- file属性用于指定要包含文件的路径。
  • taglib指令:该属性用于声明该页中所使用的标签库

    • 语法格式
    <%@ taglib prefix="tagPrefix" uri="tagURI"%>
- prefix:用于指定标签的前缀
- uri:用于指定标签库文件存放的位置

脚本标识

  • JSP脚本标识包括:JSP表达式(Expression) , 声明标识(Declarction)和脚本程序(Scriptlet)
  • 意义:通过标识可使JSP像Java代码一样用于声明变量,定义函数和进行各种表达式运算
  1. JSP表达式

    • 语法格式
     <%= 表达式%>

表达式可以是任何Java语言完整表达式,最终运算结果会被转换成字符串。不仅可放到网页的文本中,用于输出内容。还可插到HTML标记中,用于动态设置属性值

       <% String manager = "Anton";%>
       管理员:<%= mangaer%> :Anton
       <%= 1+2%>     :3
       <img src="images/<%= url%>">    :<img src="images/123456.jpg">
  1. 声明标识:用于在JSP页面中定义全局的变量或方法,该变量可被整个JSP页面使用;生命周期从创建开始到服务器关闭结束。

    • 语法格式
     <%! 声明的变量或方法%>
  • 例子
     <%!
         int number = 0;  全局变量
     	int count(){     全局方法
             number++;
             return number;
         }
     %>
     调用方式: <%= count()%>
  1. 代码片段:在JSP页面中加入Java代码或脚本代码。Java可用于实现定义变量或是流程控制等;脚本代码可应用JSP内置对象在页面输出内容,处理请求和响应,访问session会话等。生命周期从创建开始到页面关闭即销毁。

    • 语法格式
     <% Java代码或是脚本代码 %>
  • 例子:输出乘法表
     <body>
         <%
         String str = "";               //用字符串的形式声明并保存
         for(int i = 1;i <= 9;i++){
             for(int j = 1;j <= i;j++){
           		str += j + "*" + i "=" j * i
                 str += "&nbsp;"
             }
             str += "<br>"
         }
         %>
         <table width = "440" height = "85" border = "1" cellpadding = "0"
                cellspacing = "0" style = "font:9pt" bordercolordark = "#666666"
                bordercolorlight = "#FFFFFF" bordercolor = "#FFFFFF">
             <tr>
                 <td height = "30" align = "center">九九乘法表</td>
                
             </tr>
             <tr>
                 <td style = "padding:3pt">
                     <%= str %>
                 </td>
             </tr>
         </table>
     </body>
                 
  1. JSP注释

    • HTML注释:
     //单行注释
  • JSP表达式注释
     //单行注释
     /*多行注释*/
     /** 
     	提示文档注释
     */
  • 隐藏注释:在浏览器看源码时不显示,安全性高
     <%-- 注释 --%>
  • 动态注释:由于HTML注释对JSP嵌入的代码不起作用,可利用它们构成动态的HTML注释文本
    <!-- <%= new Date()%>-->   将时间和日期作为HTML的注释文本
  1. 动作标识

    • 包含文件标识<jsp:include>

用于向当前页面包含其他文件,被包含文件可以说静态,也可是动态

语法格式

       1.<jsp:include page = "url" flush = "true|false"/>
       2.<jsp:include page = "url" flush = "true|false">
       	子动作标识<jsp:param>
       </jsp:include>
       参数:page:用于指定被包含文件的相对路径
            flush:设置是否刷新缓冲区
            <jsp:param>:向被包含的动态页面传递参数
       注:被包含页面建议删除<html></html>,<body></body>等标记。
  • 请求转发标识<jsp:forward>

    • 该指令可以将请求转发到其他Web资源去执行

    • 语法格式

      1.<jsp:forward page="url"/>
      2.<jsp:forward page="url">
      	子动作标识<jsp:param>
      </jsp:forward>
      参数:page:用于指定请求转发的页面目标
           <jsp:param>:向被包含的动态页面传递参数
  • 传递参数标识<jsp:param>

    • 可作为其他标识的子标识,用于传递参数

    • 语法格式

       <jsp:param name = "参数名" value = "参数值"/>
       参数:
       name:用于指定参数名称
       value:用于设置对应的参数值
 - 例子
      <jsp:forward page = "index.jsp">
      	<jsp:param name = "userId" value = "10">
      </jsp:forward>
 - **作用等同于文件名后面加: ?Key = Value**

JSP内置对象

  • 实质:为了减去Java脚本中实例化对象的繁琐,提供内置对象来实现应用。这些对象不需要定义,可直接使用。

  • 一共有九个这样的内置对象

    1. request
    2. response
    3. session
    4. application
    5. out
    6. pageContext
    7. config
    8. page
    9. exception
  • request : 封装了由客户端生成的HTTP请求的所有细节。包括HTTP头信息,系统信息,请求方式和请求参数。可提供方法处理客户端浏览器提交的HTTP请求中的各项参数

    • 例:发一个请求到delete.jsp页面中,附带一个id参数,name参数
   <a href = "delete.jsp?id = 1 & name = 张三">删除</a>
**getParameter():**在delete.jsp页面中,获取参数
    <% request.getParameter("id","name")%>
  • 例:转发时把数据传递到转发后的页面并处理,使用setAttribute方法将数据保存到Request范围内的变量中
    request。setAttribute(String name,Object obj);
    name:Key,通过这个Key来获取Value
    获取该变量的值
    request.getAttribute(String name);
  • 获取cookie : cookie指小段的文本信息,在服务器上生成,发送给浏览器。浏览器将以key / value保存到指定的目录中

    • 作用:可用于标识客户身份,记录用户名和密码,跟踪重复用户等
    • 例子:通cookie保存并读取用户登录信息
  • 解决中文乱码问题

    • 所有的request请求编码模式都是ISO-8859-1,页面一般采用UTF-8编码模式。

      解决方式:在解析时重新构造一个对象并指定为ISO-8859-1编码即可

    • 例:在index.jsp页面中,用超链接传两个中文参数

      <body>
          <a href = "show.jsp?name = 张三 & sex = 男">解决中文乱码</a>
      </body>
  在show.jsp中进行编码转换
     <body>
         name参数值:<%= new String(request.getParameter("name").getBytes("ISO-8859-1"),UTF-8)%>
         sex参数值:<%= new String(request.getParameter("sex").getBytes("ISO-8859-1"),UTF-8)%>
     </body>
  • 获取客户端信息

    • 通过request相应方法获取客户端信息
  • 显示国际化信息:浏览器可通过accept-language的HTTP头报向Web指定它的本地语言

    request的getLocale()和getLocales()方法允许JSP开发人员获取。

    开发者可使用java.util.Local对象封装对应国家的语言

     <%
     java.util.Locale locale = request.getLocale();
     String str = "";
     if(locale.equals(java.util.Locale.US)){
         str = "Welcome to access our company's web!"
     }
     if(locale.equals(java.util.Locale.CHINA)){
         str = "欢迎访问"
     }
     %>
     <%=str%>
  • response : 用于响应客户端请求,向客户端输出信。它封装了JSP产生的响应,并发送到客户端以响应客户端请求。

    • 作用范围:JSP页面内。
    • 作用:
    1. 重新定向网页:sendRedirect()方法

      • 使用该方法可将网页重新定向到另一个页面。(重定向)

      • 语法格式

       response.sendRedwirect(String Path)
       参数:Path:路径,也可以是URL地址
 - 例:重定向到login.jsp页面
       response.sendRedirect("login.jsp")
  1. 处理HTTP头文件

    • 可进行禁用缓存,设置页面自动刷新,定时跳转页面等操作.

    • 禁用缓存:默认情况,浏览器会对显示的网页进行缓存,再次访问同样的网页时,会直接显示缓存内容,提高显示速度。但对于安全性较高的网站,一般要禁用缓存。

       <%
       response.setHeader("Cache-Control-stone");
       response.setDateHeader("Expirse",0);
       %>
 - 自动刷新
      <%
      response.setHeader("refresh",10);
      %>
 - 定时跳转页面
       <%
       response.setHeader("refresh","10");
       %>
  1. 设置输出缓冲

    • 通常,服务器输出到客户端会先写入一个缓冲区,加强效率。以下三种情况会把缓冲区的内容送到客户端。

      • JSP页面的输出信息已全部写入了缓冲区
      • 缓冲区已满
      • jsp页面在,调用了response的flushBuffer方法或out对象的flush方法
    • response对象提供了以下对缓冲区进行配置的方法

      • flushBuffer:强制将缓冲区的内容输出到客户端
      • getBufferSize:获取响应所使用的缓冲区实际大小
      • setBufferSize(int size):设置缓冲区大小
      • reset:清楚缓冲区内容。同时清楚状态码和报头
      • isCommitted:检查服务器是否把数据写入到了客户端
    • 例:设置一个大小为32KB的缓冲区

       response.setBufferSize(32);   
       可设置缓冲区为0,表示不缓冲
  1. session对象

    • session:会话。通过session可在应用程序的Web页面间进行跳转时,保存用户状态,使会话一直存在。一般,Tomcat在30分钟不向服务器发出请求,session就会消失。

    • 作用范围大于request对象。

    • 创建,获取,移除及销毁客户的会话

      • 通过session对象可储存或读取客户信息。通过setAttribute方法和getAttribute方法实现
         将信息保存在session范围内
         seesion.setAttribute(String name,Object obj)
         参数:name:用于指定作用域在session范围内的变量名
         	 obj:保存在session访问内的对象
         例:session.setAttribute("username","root")
        将session范围内保存的信息读出
        getAttribute(String name)
        参数:name:session范围内保存时使用的关键字
        例:session.getAttribute("username")
        取出:
        String username = (String)session.getAttribute("username")
         将会话中指定的绑定对象移除
         removeAttribute(String name)
         参数:name:session范围内保存时使用的关键字
         例:<% session.removeAttribute("username")%>
        销毁session
        session.invalidate();
   - 会话超时管理:以下设置会话生命周期的方法

     - getLastAccessedTime() : 客户端最后一次会话的时间

     - getMaxInactiveInterval() : 以秒为单位返回两个请求最大的时间间隔

     - setMaxInactiveInterval() : 以秒为单位设置session的有效时间
          例:设置有效时间为10000秒
          session.setMaxInactiveInterval(10000);
  1. applicationd对象

    • application对象用于保存所有应用程序中的共有数据。
     存入数据:
     <context-param>
     	<param-name>username</param-name>
         <param-value>root</param-value>
     </context-param>
     取出数据:
     application.getInitParameter("username");
  1. out对象

    • 用于在Web浏览器内输出信息,并管理服务器上的输出缓冲区

    • 输出数据:

      out.print("Hello world!")
 - 管理缓冲区
      out.clear()              清除缓冲区中的内容
      out.clearBuffer()        清除当前缓冲区中的内容
      out.flush()              刷新流
      out.isAutoFlush          检查缓冲区满时自动情空,抛出异常
      out.getBufferSize()      设置缓冲区大小
  1. pageContext对象

    • 可用于获取JSP页面内的一些对象

EL表达式

  • 主要作用
    1. 从某域中取数据(1.pageContet 2.request 3.session 4.application)
    2. 将取出数据转为字符串
    3. 将字符串输出到浏览器
 <%= request.getAttribute("vjnek") ? "" : request.getAttribute("vjnek")%>>
 使用EL表达式为:${vjnek}
 如结果无法变量时,EL表达式进行了空操作,不会输出null,会输出空
  • 禁用EL方式

    1. 单行禁用:在EL前加斜杠
     /${表达式}
  1. 忽略page中的EL:使用page的isELIgnored属性
     <%@page isELIgnoerd = "true"%>
  1. 禁用web应用中所有JSP页面中的EL:在web.xml文件中配置
     <jsp-config>
     	<jsp-property-group>
         	<url-pattern>*.jsp</url-pattern>
             <el-ignored>true</el-ignored>
         </jsp-property-group>
     </jsp-config>
  • 通过EL访问数据

    • 使用"[]“和”."运算符访问数据,通常两符号作用相等
    ${user.id} == ${user["id"]}
  • 当出现特殊符号时,如(-或.),使用"[]"符号
  • 访问四大作用域(1.pageContet 2.request 3.session 4.application 从小到大)内的隐含对象时

    EL提供了四个用于访问作用域范围的隐式对象

    <%--EL表达式中内置了4个隐含的隐式对象与四个域一一对应--%>
    ${pageScope.data}<br>
    ${requestScope.data}<br>
    ${sessionScope.data}<br>
    ${applicationScope.data}<br>
出现key相同时,可加隐式对象加以区分;若没有key相同时,可省略
  • 使用EL从Map中取出数据
  <%
      Map<String,String> map = new HashMap<>();
      map.put("useranme","zhangsan");
      map.put("password","111111");
      request.setAttribute("mapObj",map);
  %>
  ${mapObj.username}<br>
  ${mapObj["password"]}<br>
  • 使用EL从数组中取数据
 <%
     String[] strings = {"zhangsan","lisi","wangwu"};
     request.setAttribute("strObj",strings);
 %>
 ${strObj[0]}<br>
 ${strObj[1]}<br>
 ${strObj[2]}<br>
 <%--越界就显示空--%>
 ${strObj[100]}<br>
  • 在EL中判断对象是否为空:使用empty运算符
 ${empty 表达式}
 例:<%request.setAttribute("id","")%>
 ${empty id}              //返回true
 ${not empty id}          //返回false
  • EL环境信息的隐含对象

    1. pageContext
     应用的根路径${pageContext.request.contextPath}<br>
  1. param
    <%--获取文本框中的第一个值--%>
    <%--等同于:<%=request.getParameter("key")%>--%>
    ${param.key}
  1. paramValues
    <%--获取一个请求参数名对应的多个值--%>
    <%--等同于:<%=request.getParameterValues("aihao")%>--%>
    ${paramValues.aihao[0]}${paramValues.aihao[1]}
  1. InitParam
    <%--获取web应用初始化参数的值--%>
    <%--等同于:<%=application.getInitParameter("author")%>--%>
    ${initParam.author}

JSTL标签库

  • 标准标签库:由5个功能不同的标签库组成。

  • 使用时通<%@ taglib%>指定标签库和访问前缀

    1. <%--核心标签库--%>
      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
      
    2. <%--格式化标签库--%>
      <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
      
    3. <%--sql标签库--%>
      <%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
      
    4. <%--xml标签库--%>
      <%@taglib prefix="xml" uri="http://java.sun.com/jsp/jstl/xml" %>
      
    5. <%--函数标签库--%>
      <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
      
  1. 核心标签库:主要用于完成JSP页面的常用功能

    • 表达式标签:包括4个
     <c:out></c:out>            将表达式值输出到JSP页面中,相当于<%=%>
     <c:set></c:set>            在指定范围中定义变量,或为指定对象设置属性值
     <c:remove></c:remove>      在指定的JSP范围中移除指定变量
     <c:catch></c:catch>        捕捉程序异常,相当于try...catch
  • URL标签:包括4个
     <c:import></c:import>      导入站内或其他网站的资源
     <c:redirect></c:redirect>  向客户端发出的request请求重定向到其他URL服务
     <c:url></c:url>            使用正确的URL重写构造规划员工URL
     <c:param></c:param>        为其他标签提供参数信息,等同于:request.setParameter("")
  • 流程控制标签
     <c:if></c:if>              根据条件处理不同业务,类似if
     <c:choose></c:choose>      
     <c:when></c:when>和<c:otherwise></c:otherwise>
     联合使用,类似if...else if...else
  • 循环标签
     <c:forEcsh></c:forEcsh>    根据条件,遍历数组,类似foreash
     <c:forTokens></c:forTokens>迭代字符串中由分隔符分割的各成员
  1. 格式标签库:提供了一个简单的国际化标签,称为II8N标签库。

    用于处理国际化相关问题,还提供了格式化数字和日期显示格式的标签

  2. SQL标签库:提供了基本的访问类型数据的能力

  3. XML标签:可处理和生产XML标记

  4. 函数标签库:提供了一系列字符串操做函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Servlet和JSP学习指南PDF是一本关于JavaWeb开发的指南,旨在帮助学习者深入理解和掌握Servlet和JSP技术。 Servlet是Java Web开发中常用的一种技术,用于处理Web请求和响应。它基于Java语言,提供了一组用于处理HTTP通信的类和接口。通过Servlet,我们可以实现动态的Web应用程序,与数据库进行交互,处理用户的请求,并生成响应结果。Servlet的学习指南将介绍Servlet的工作原理、使用方法和常见的应用场景,帮助学习者快速上手并掌握这项技术。 JSP(Java Server Pages)是一种基于Java的动态网页技术,用于在Web服务器上生成动态网页。与Servlet相比,JSP更加注重于网页的内容展示和页面的设计。它允许开发者在HTML文档中嵌入Java代码,通过特殊的标签和表达式,动态生成所需的HTML内容。JSP学习指南将介绍JSP的语法、标签和表达式的使用,以及JSP与Servlet之间的关联和数据传递方式,帮助学习者全面了解和掌握这项技术。 Servlet和JSP学习指南PDF提供了详细的实例代码和案例,让学习者可以通过实践来理解和掌握这两项技术。此外,学习指南还介绍了常见的开发工具和调试技巧,以及一些常见问题的解决方法。通过学习这本指南,学习者可以建立起对Servlet和JSP技术的整体认识和理解,为进一步的Web开发打下坚实的基础。 综上所述,Servlet和JSP学习指南PDF是一本宝贵的学习资料,它能够帮助人们系统地学习和掌握Servlet和JSP技术,在JavaWeb开发中大放异彩。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值