浅谈JSP及实战

浅谈JSP及实战(一)

JSP(Java Server Pages),和Servlet技术一样,是SUN公司定义的用于开发动态web资源的技术。写JSP就像是在写html,JSP允许在页面中嵌入java代码,并且可以在页面中获取request、response等web对象,实现与浏览器的交互。

JSP语法

  1. JSP页面包含模板元素、表达式、脚本片段、声明、注释、指令、标签、内置对象。

  2. JSP页面中的html内容称为JSP模板元素,模板元素定义了网页的基本骨架,即页面的结构和外观。

  3. 脚本表达式将程序数据输出到客户端,JSP引擎在翻译脚本表达式时会把数据转换成字符串,然后在相应的位置使用out.print()方法把数据输出客户端。out.print()out.write()的区别是前者中调用了后者,当数据为空时,前者可以输出空,后者什么也不输出。表达式中的变量或表达式后面不能有分号。

<%= 变量或表达式 %>
<%= new java.util.Date() %>
  1. 脚本片段用于在JSP页面中书写多行的java代码,脚本片段中只能出现java代码,不能出现其他的模板元素,JSP引擎解析页面是,会将脚本片段中的代码放到Servlet的_jspService方法中。每行语句后面需要用分号结束。一个页面中可以有多个脚本片段,多个脚本片段中的代码可以相互访问,就像把所有的代码放在一个脚本片段中。单个脚本片段中的java语句可以是不完整的,但是多个脚本片段组合后的结果必须是完整的java语句。
<% 多行java代码 %>
  1. JSP声明用来定义JSP页面转换成的Servlet程序的静态代码块、成员变量和方法。JSP中编写的代码默认会翻译到Servlet的service方法中,而JSP声明中的代码会翻译到_jspService方法的外面。在JSP声明中不能使用隐式对象。
<%! java代码 %>
  1. JSP引擎把页面翻译成Servlet程序是会忽略JSP注释内容。
<%-- 注释信息 --%>
  1. JSP指令有page、include、taglib,如果一个指令有多个属性,可以写在一个指令中,也可以分开写。
<%@指令 属性名="值" %>
<%@ page contentType="text/html;charset=UTF-8" import="java.util.Date" %>
  • page指令用于定义各种属性,作用域是整个页面,最好放在页面的起始位置。
<%@ page	
    [language="java"]
    [extends="package.class"]
    <%-- import属性可以引入多个以逗号分隔的类或包 --%>
    [import={package.class|package.*},...]
    [session="true|false"]
    [buffer="none|比如8kb"]
    [autoFlush="true|false"]
    [isThreadSafe="true|false"]
    [info="text"]
    <%-- 必须使用相对路径,如果以/开头,表示相对于当前web应用的根目录,否则表示相对于当前页面 --%>
	<%-- 可以在web.xml中设置<error-page>元素为整个应用设置错误处理页面 --%>
    [errorPage="relative_url"]
    [isErrorPage="true|false"]
    <%-- JSP引擎会根据此配置调用reponse.setContentType()方法 --%>
    [contentType="mimeType"]
    [pageEncoding="字符集比如utf8"]
    [isELIgnored="true|false"]
%>
  • include指令用静态于引入其他JSP页面。
<%@ include file="relativeURL" %>
  • taglib指令用于在JSP页面中导入标签库。
  1. JSP运行原理
  • 每个JSP页面第一次被访问时,web容器把请求请求交给JSP引擎去处理,把JSP翻译成_jspServlet,然后调用servlet。
  1. JSP内置对象
  • request:HttpServletRequest

  • respone: HttpServletResponse

  • session: HttpSession

  • config: ServletConfig

  • application: ServletContext

  • page: this

  • exception

  • out: JspWriter

    out隐式对象用于向客户端发送文本数据,通过调用pageContext对象的getOut()返回的。JspWriter是带缓存的PrintWriter,设置JSP页面的page指令的buffer属性可以调整缓存大小。

  • pageContext对象代表JSP页面的运行环境,封装了对其他隐式对象的引用,还是一个域对象可以用来保存数据。PageContext类定义了一个forward方法和include方法。

  1. JSP标签用于在JSP页面中提供业务逻辑功能,避免在JSP页面中直接写java代码,造成页面难以维护。常用标签有<jsp:include>、<jsp:forward>、<jsp:param>
<%-- 动态引用:把另一个资源的输出内容插入到当前页面的输出内容之中 --%>
<jsp:include page="relativeURL|<%=expression%>" flush="true|false"/>
<%-- 把请求转发给另一个资源 --%>
<jsp:forward page="relativeURL|<%=expression%>"/>    
<jsp:include page="relativeURL|<%=expression%>">
    <%-- name属性指定参数名,value指定参数值 --%>
    <jsp:param name="parameterName" value="value|<%=expression%>">
</jsp:include>    
  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐江小鱼

知识创造财富,余额还是小数

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值