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 }

原文地址:https://www.cnblogs.com/javaxiaobu/p/11173895.html