zoukankan      html  css  js  c++  java
  • jsp基础

    jsp

    基本概念

    1  jsp动态网页编程技术,是javaweb服务端的动态资源

    2  jsp的本质就是servlet,服务器会将jsp编译为servlet形式的java文件传输给客户端

    3  通常将把 servlet 作为 web 应用中的控制器组件来使用,

          JSP 技术作为数据显示模板来使用,一般编辑在WebContent中

           4  jsp的页面格式与html一致,区别只在于其上设置了page指令标签

     

    一 jsp在eclipse中的配置

           window –preferrnces—搜索jsp

    修改编码格式

                  JSP File 修改编码格式为UTF-8

           修改默认格式

                  JSP File—Editor—Templates—选择New JSP File(html)—编辑

                  删除html4的声明

    PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"

    二 注释

           1显示注释

                  继承html风格,在网页中可见    可能出现失效

                  <!-- 这是HTML的注释 -->

           2 隐式注释 网页中不可见

                  jsp注释

                  <%-- jsp注释    --> 建议使用这个,不易出错

                  继承java注释 使用在Scriptlet中  可能出现失效

                  <%    // 单行注释     /* 多行注释 */    %>

          

    三 Scriptlet脚本小程序

           java代码必须要Scriptlet标记出来

           1 脚本段

    <%    java代码,局部变量声明    %>

                  内容实际是写在servlet的service方法中,变量是方法内的局部变量

           2 声明全局变量

                  <%!  声明全局变量,方法,类       %>

                  内容实际是写在servlet类中, service方法外

           3 输出表达式

                  <%=( 输出内容,变量或表达式)%>

                  直接向页面输出内容

                  相当于service中写入 out.print( 输出内容 );

                  等同于脚本段<% out.print(输出内容);  %>

     

    四 Page指令标签

           <%@ page  属性名1="属性值1"  属性名2="属性值2%>

           设置在首行用于对jsp进行属性声明,错误会导致浏览器不识别而执行下载

           属性

                  language:当前语言,目前只支持java

                  contentType:设置响应类型及编码格式(text/html; charset=UTF-8)

                  pageEncoding:编码格式(UTF-8)

                         编码格式优先级依次为contentType, pageEncoding,默认ISO-8859-1

                         若未设置依次向后参照

                  import 导包信息,可以多次设置 或者一个import指定多个导入值

                  isErrorPage:是否是处理错误的页面,默认false

    true表示当前页面用来处理报错的,就是可被errorPage指向的页面

                  errorPage:指定错误跳转页面,值为错误处理页面的相对url

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*" isErrorPage="false" errorPage="error.jsp"%>

           指令集标签还具备静态包含和导入taglib标签库的作用

     

    五 inclide静态包含

           <%@incloude file=”资源相对url”%>             单标签

           将所需要的html资源或jsp资源加载进来

           服务器将资源中的内容以复制粘贴的形式全部复制到jsp文件中

           两者不能不能有同名变量,否则会报错

           只生成了一个源码文件

           优缺点:运行效率稍高,但耦合度高,不灵活

     

    六 incloud动态包含

    <jsp:include page=”资源路径相对url”></jsp:include>      双标签

    将所需资源加载到页面中,实质上是通过引用进行资源加载

       1 实际操作中将页面工具栏、头部信息、尾部信息都分成各个独立的文件

    使用时直接动态导入.

    2 动态包含在代码的编译阶段,包含和被包含部分是两个独立的部分

    只有运行时,才会动态包含进来,好比方法的调用。

    3 源文件和资源文件可以具备同名变量

    参数传递

    动态包含是双标签,双标签中间不能加任何内容/空格/换行

    双标签之间只能设置动态参数传递

           <jsp:param value=”参数值” name=”参数名”/>

           name不支持表达式,name支持表达式

    参数是通过gerParmetrt(“name属性”)进行获取 四大jsp域对象都能调用

     

    动作标签

           动态包含属于动作标签

           <jsp:动作标签 …></jsp: 动作标签>

           动作标签会被编译为java代码,执行具体的操作,是有服务器解释执行的

     

    七 jsp九大内置对象

    已经被jsp包装了的对象

    四大域对象

           requset  session  application(应用域对象)  

    pageContext(页面域对象)  jsp的页面容器

    用于获取页面中的其他对象pageContext.getRequest(“”)

                 

                  域对象属性范围

                         pageContext当前页面保存属性,跳转后无效

    request一次请求中有效,服务器跳转后任然有效(请求转发有效)

    session  当前会话中有效

    application 服务器有用用户共享参数

    上述域对象均包括对参数进行操作方法

                  getAttribute(“name”);获取

                  setAttribute(“name”,Object o);设置,创建

                  removeAttribute(“name”);删除

           Scriptlet中获取参数,能够指定属性范围

                  pageContext.PAGE_SCOPE (次数只是说明其范围在页面中,与page对象无关)

    pageContext.REQUEST_SCOPE

    pageContext.SESSION_SCOPE

    pageContext.APPLICATION_SCOPE

                  使用例子

                  <%=pageContext. getAttribute(“a”, pageContext.get.PAGE_SCOPE)>

    两个响应对象

           response      response.getWriter( ) 获取输出对象

    out               out.writer(“   ”);   直接进行输出

    页面对象      

    page对象 代表jsp页面本身  相当于this指针 page.getClass()

    表示该页面的servlet实例 object对象,

    page并非域对象,与pageContext无关,page只是能够被pageContext获取到

    配置对象      

    config   能够调用配置方法 取得初始化参数

    异常对象      

    exception 只有在错误页面中才起作用

     

    八   EL表达式

    用于获取域对象中的值,或者域对象中的值的运算结果 直接写在jsp中

           el表达式只能对域对象中的值和字面常量值进行操作,但无法对变量进行操作

           基本格式是${    }

    el表达式中的取值从从小范围找到大范围(从page到application)

           若需要获取对指定范围的属性值

    使用pageScope、requestScope、sessionScope、applicatonScope进行获取

    注:为了便于获取,域对象中的key通常设不同的值,避免范围导致的问题

    1 值的获取方式

           ${key }                        直接通过key取值

           ${范围对象.key}          指定范围对象和key取值

    pageScope、requestScope、sessionScope、applicatonScope

    ${ pageScope.key}

           ${ 10 }                         直面常量,一般jsp中直接写,html直接显示

    若key对应的是javabean对象,可以获取javabean内部的属性

           ${key.属性名  }   这种取值方式,需要javabean中预设了该属性的get方法

                                       实际上与 ${key.getUname() } 一样

    若key对应的是集合对象,可以获取集合中的值

           ${key[索引] }       

    若值为javabean对象,可进一步获取属性${key[索引].属性 } 

                  获取集合长度      ${key.getsize() }

    若key对应的是map对象,可以获取map中的值

           ${key[“mapkey”]}  或者  ${key.mapkey }   mapkey为

     

    2 字符串方法

           获取子串的索引   ${str.indexOf("a") }

           字符串截取          ${str.substring(0,2) } 前闭后开

    3 非空判断

           ${empty 域变量 }        为空返回true    可以取反${!empty 域变量} 

    字符串  空串和null均为true  

    容器       空集合和null均为true

           与${str != null && str != "" }效果相同

    4  运算

           +-*/

    加法:${num1 + num2 }

    减法:${num1 - num2 }

    乘法:${num1 * num2 }

    除法:${num1 / num2 } -- ${num1 div num2 }

           大小比较

                  ${num1 > num2 }

    ${num1 >10 }

    ${(num1+num2) <= 10 }

           等值判断   注意el表达式存在默认转型

                  ${aa == ab } -- ${aa eq ac }

           逻辑判断      

    ${(num1+num2) > 10 && aa == ab }

    ${(num1+num2) > 10 || aa == ab }

  • 相关阅读:
    Python安装
    php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法
    关闭sublime自动检测更新提示
    Linux系统基本命令操作汇总
    jQuery各版本CDN
    【分享】每个 Web 开发者在 2021 年必须拥有 15 个 VSCode 扩展
    React & Redux 实战 Reminder Pro 项目 免费视频教程(5 个视频)
    Redux 入门教程(React 进阶)(20 个视频)
    Nodejs + Express + MongoDB 基础篇(17 个视频)
    轻松学 nodejs
  • 原文地址:https://www.cnblogs.com/javaxiaobu/p/11173895.html
Copyright © 2011-2022 走看看