zoukankan      html  css  js  c++  java
  • 2018/1/3 JSP

    1、Jsp的执行过程
    问题: 访问http://localhost:8080/day12/hello.jsp 如何显示效果?

    1)访问到01.hello.jsp页面,tomcat扫描到jsp文件,在%tomcat%/work把jsp文件翻译成java源文件
    (01.hello.jsp -> _01_hello_jsp.java) (翻译)
    2)tomcat服务器把java源文件编译成class字节码文件 (编译)
    (_01_hello_jsp.java -> _01_hello_jsp.class)
    3)tomcat服务器构造_01_hello_jsp类对象
    4)tomcat服务器调用_01_hello_jsp类里面方法,返回内容显示到浏览器。

    第一次访问jsp:
    走(1)(2)(3)(4)
    第n次访问jsp:
    走(4)

    注意:
    1)jsp文件修改了或jsp的临时文件被删除了,要重新走翻译(1)和编译(2)的过程
    2、(1)Jsp语法:
    1)jsp表达式:<%=变量或表达式%> 向浏览器输出变量或表达式计算的结果
    2)jsp脚本: <% java代码 %> 执行java代码 原理:翻译到_jspService()方法中
    3)jsp声明: <%! 变量或方法 %> 声明jsp的成员变量或成员方法
    4)jsp注释: <%!-- jsp注释 --%> 用于注释jsp代码,不会翻译到java文件中,也不会执行。

    (2)jsp的三大指令
    include指令:用于包含其他页面。原理:先合并再翻译,叫静态包含
    page指令:告诉tomcat服务器如何把jsp文件翻译成java文件
    language: 翻译的动态语言。
    import: 类导入
    jsp文件编码问题:
    pageEncoding: 告诉tomcat服务器使用什么编码翻译jsp文件(jsp->java文件)
    contentType: tomcat服务器发送给浏览器的数据编码(tomcat服务器->浏览器)

    异常错误相关的:
    errorPage: 指定当前jsp页面的错误处理页面。
    isErorrPage: 指定当前页面是否为错误处理页面。false,不是错误处理页面,则不能使用 exception内置对象;true,是错误处理页面,可以使用exception内置对象。

    配置全局的错误处理页面:

    <!-- 全局错误处理页面配置 -->
    <error-page>
    <error-code>500</error-code>
    <location>/common/500.jsp</location>
    </error-page>
    <error-page>
    <error-code>404</error-code>
    <location>/common/404.html</location>
    </error-page>

    session: 是否开启session功能。false,不能用session内置对象;true,可以使用session内 置对象。
    buffer: jsp页面的缓存区大小。
    isELIgnore: 是否忽略EL表达式
    3、9大内置对象
    内置对象名 类型
    request HttpServletRequest
    response HttpServletResponse
    config ServletConfig
    application ServletContext
    session HttpSession
    exception Throwable
    page Object(this)
    out JspWriter
    pageContext PageContext
    4、(1)Jsp的4个域对象
    request
    session
    application
    pageContext

    作用范围:
    pageContext : 处于当前jsp页面中有效的!!
    request: 处于同一个请求中有效的!!
    session: 处于同一个会话中有效的!
    application: 处于同一个web应用中有效的!

    2)EL表达式
    替代jsp表达式,用于向浏览器输出域对象中的变量值和表达式计算的结果。

    语法:
    ${变量}
    3.1 输出普通字符串: ${name}
    3.2 输出对象属性: ${student.name} 注意: .name 相当于 .getName()方法
    3.3 输出List集合: ${list[0].name } 注意: [0] 相当于 get(下标)方法
    3.4 输出map集合: ${map[key].name} 注意: [key]相当于get(key)方法

    3)jsp标签 替代jsp脚本,用于在jsp页面中执行java代码

    内置标签:
    <jsp:foward/> request.getRequesetDipsacher("/路径").foward(request,response);
    <jsp:param/> 参数标签 ?name=eric
    <jsp:include/> 包含其他页面 ,动态包含
    静态包含: 先合并再翻译。不能传递参数
    动态包含: 先翻译再合并。可以传递参数

    jstl标签库 (java标准标签库)
    使用步骤:
    1)确保jstl支持的jar包存在于项目中
    2)在jsp页面中导入标签库
    <%@taglib uri="标签库声明文件tld文件的标记" prefix="前缀"%>
    3)使用标签库中的标签

    核心标签库:
    <c:set /> 保存数据到域对象中
    <c:out/> 从域中取出数据
    <c:if/> 单条件判断
    <c:choose/> + <c:when/> + <c:otherwise/> 多条件判断
    <c:forEach /> 遍历数据
    <c:forTokens/> 遍历特殊字符串
    <c:redirect/> 重定向
    5、自定义标签&编码实战
    1)自定义标签步骤:
    编写标签处理器类,继承SimpleTagSupport类,覆盖doTag方法
    在WEB-INF目录下建立tld文件,在tld配置标签
    在jsp页面导入标签库,使用taglib指令
    在jsp页面中使用标签库中的标签
    2)自定义标签生命周期:
    SimpleTag接口:
    setJspContext(JspContext context) --传入pagContext对象
    setParent(JspTag tag) --传入父标签对象
    setXXX(参数) --给属性赋值
    setJspBody(JspFrament jspBody) --传入标签体内容
    doTag() --执行标签
    3)自定义标签的作用:
    控制是否输出标签体内容
    输出: this.getJspBody().invoke(null)
    不输出: 不调用invoke(null)方法
    控制标签余下内容是否输出
    输出: 什么不都做!
    不输出: 抛出SkipPageException异常
    重复输出标签体内容
    重复调用: this.getJspBody().invoke(null)
    修改标签体内容
    StringWriter sw = new StringWriter();
    this.getJspBody().invoke(sw);
    String content = sw.toString();
    //修改内容
    //手动输出到浏览器
    this.getJspContext().getOut().writer(修改过的内容);
    带属性的标签
    a)在标签处理器类中声明成员变量和setter方法,用于给属性变量赋值。
    b)在tld文件中声明属性
    c) 使用属性
    4)JavaBean规范
    必须要有无参的构造方法
    所有成员属性必须私有化 (private)
    必须提供公开的getter和setter方法
    5)MVC开发模式
    MVC就是servlet+jsp+javabean的开发模式
    M,Model,javabean实现,封装业务数据
    V,View,jsp实现,显示数据
    C,Controller,servlet实现,接收参数,调用业务逻辑,跳转视图
    6)三层结构开发
    dao层: 数据访问对象。实现对数据的操作相关的方法
    service层: 业务逻辑对象。实现对项目的业逻辑处理相关的方法
    web层: 表现层。处理和用户直接相关的,接收参数,处理参数,跳转视图,展示数据。
    6、

  • 相关阅读:
    ZW网络团队及资源简介
    ZW云推客即将登场
    “4K云字库”基本框架图
    Sketch 55 Beta版本探秘,看看都有什么新功能
    产品经理有哪些类型?
    电影票APP原型设计分享– Movie Booking
    旅游类App的原型制作分享-Klook
    UI行业发展预测 & 系列规划的调整
    原来这就是 UI 设计师的门槛
    摹客PS插件全新改版!—— 智能检测不对应的设计稿
  • 原文地址:https://www.cnblogs.com/loong996/p/8185658.html
Copyright © 2011-2022 走看看