JavaWeb-JSP

一、概述
  1. JSP原理:JSP就是Servlet。
  2. JSP这门技术的最大的特点在于,写jsp就像在写html,但它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。
  3. 为什么JSP技术也是一种动态web资源的开发技术?
    1. 因为JSP技术允许在页面中嵌套java代码,以产生动态数据,并且web服务器在执行jsp时,web服务器会传递web开发相关的对象给jsp,jsp通过这些对象,可以与浏览器进行交互,所以jsp当然也是一种动态web资源开发技术
  4. 一个浏览器访问网页,这些网页有可能是一个html页面(即静态web资源),也有可能是一个动态web资源(即servlet或jsp程序输出的)。
二、问题
  1. 一定要记住JSP中的东东会出现在Servlet的什么地方?
    1. JSP中的java脚本出现在Tomcat的work目录下,包含一个servlet文件和一个编译好的类文件。
  2. IE浏览器访问JSP页面时,Web服务器是如何调用并执行一个jsp页面的?
    1. 通过调用Servlet
  3. Web服务器在执行jsp页面时,是如何把Jsp页面中的html排版标签发送到客户端的?
    1. 通过JspWriter一行一行写出去。
  4. Jsp页面中的java代码服务器是如何执行的?
    1. Jsp页面中的java代码直接放入对应的servlet中去
  5. Web服务器在调用jsp时,会给jsp提供一些什么java对象?
    1. request和response,jsp中的java代码全包含在它对应的servlet中的service方法中。
三、JSP的执行过程

四、JSP最佳实现在长期的软件实践中,
  1. 人们逐渐把servlet作为web应用中的控制器组件来使用,而把JSP技术作为数据显示模板来使用

  2. 缺点:
  3. 其原因为,程序的数据通常要美化后再输出:
  4. 让JSP既用java代码产生动态数据,又做美化会导致页面难以维护。
  5. 让servlet既产生数据,又在里面嵌套html代码美化数据,同样也会导致程序可读性差,难以维护。

  6. 结论:
  7. 因此最好的办法就是根据这两门技术的特点,让它们各自负责各得,servlet只负责响应请求产生数据,并把数据通过转发技术带给jsp,数据的显示jsp来做。
五、JSP语法
  1. 模板元素:JSP页面中的HTML内容。
    1. JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观。
  2. JSP脚本表达式 
    1. JSP脚本表达式(expression)用于将程序数据输出到客户端
    2. 语法:<%= 变量或表达式 %>
    3. “java表达式”会原封不动的出现在JSP对应的Servlet的service方法中的out.print(java表达式);参数中
      1. JSP引擎在翻译脚本表达式时,会将程序数据转成字符串,然后在相应位置用out.print(…) 将数据输给客户端。
      2. java表达式后面不能有分号。
  3. JSP脚本片段
    1. 作用:在JSP中嵌入多行java代码。
    2. 语法:
    3. <%
    4. 多行java代码
    5. %>

    6. 多行java代码,会原封不动地出现在对应Serlvet的service方法中。
  4. JSP声明
    1. 作用:定义成员。
    2. 语法:<%! 你的成员%>
    3. 声明代码会出现在对应的类中。
  5. JSP中注释
    1. 语法:<%--这是注释--%>
六、JSP的指令
  1. 作用:给JSP引擎用的(Tomcat)。不产生任何输出。
  2. 语法:<%@ 指令名称 指令属性1="值1" ...%>
    1. page指令
      • 属性:
      • language:指示使用脚本语言。默认是java,目前只支持java。
      • extends:指示JSP对应的Servlet的父类是谁。不要修改。
      • *import:导入JSP中的java脚本中用到的类。
      • *session:指示当前页面支不支持会话(拿不到HttpSession对象的引用session)。默认值是true。可选值true|false.
      • buffer:字符输出流的缓存。默认值是8Kb。可选值none|8Kb|sizeKb
      • autoFlush:自动刷新缓存。
      • isThreadSafe:指示JSP对应的Servlet是否实现SingleThreadModel这个废物。false是实现,true是不安全的。默认是true。
      • *errorPage:(转发技术)指示提示错误的页面的路径。如果以"/"开头表示绝对路径。
      • 配置全局错误提示页面:
      • web.xml
      • <error-page>
      • <exception-type>java.lang.Exception</exception-type>
      • <location>/error.jsp</location>
      • </error-page>
      • <error-page>
      • <error-code>404</error-code>
      • <location>/404.jsp</location>
      • </error-page>
      • *isErrorPage:指示是否产生exception对象的引用。true|false.默认值是false
      • *contentType:response.setContentType("text/html;charset=UTF-8");
      • *pageEncoding:指示翻译JSP时查的码表。比 contentType更强大
    2. include指令:(能用静态不用动态)
      1. 属性:file,目标资源的路径。如果以"/"开头表示绝对路径。
      2. 静态包含:include指令就是静态包含。
      3. 动态包含:<jsp:include page=""/>
    3. taglib指令
      1. 作用:引入外部的标签
      2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值