发表于: 2017-11-18 22:35:22

1 609


今天完成的事情

讲小课堂,c标签和el表达式

jsp的常用标签,可以简单的理解为JSTL
JSTL是Java中的一个定制标记库集,所谓的定制标记库集,就是标记库不用自己去编写,是Java已经提供给我们,已经做好的一个标记库集
为什么要使用JSTL
1.实现了JSP页面中的代码复用
基于标签库的原理,重复率较高的代码块支持复用,提高效率
2.书写JSTL页面时,可读性更强
需要添加JAR包:
  1. <dependency>  
  2.            <groupId>jstl</groupId>  
  3.            <artifactId>jstl</artifactId>  
  4.            <version>1.1.2</version>  
  5.        </dependency>  
  6.          
  7.        <dependency>  
  8.            <groupId>taglibs</groupId>  
  9.            <artifactId>standard</artifactId>  
  10.            <version>1.1.2</version>  
  11.        </dependency> 


JSTL的四大分类

1.核心标签,最常用,最重要
2.格式化标签
3.SQL标签
4.XML标签


EL表达式,Expression Language,用于变量的获取,经常于JSTL配合使用,使得JSP页面更直观,写法更简单

EL表达式的格式:用美元符号  $  定界,内容包括在花括号中  {  },如:${表达式}
关于    "  .   "与  "  [   ]  "  运算符,通常情况下是通用的,如${user.sex}   和    ${user["sex"]}
[ ]  还可以用来进行集合元素中的定位,如${booklist[0].price }标识取第一个对象
不过有两种情况不能通用,只能用 [  ] :
1.包含特殊字符,要用中括号
2.通过变量动态取值,取传入的参数
JSP内置对象:Page,Request,Session,Application分别对应于EL中的PageScope,RequestScope,SessionScope,ApplicationScope,也就是说,JSP的内置对象,要在EL中使用,需要在后面加上Scope
如果没有做限定,EL会先在Page中找,然后是Request,然后是Session,最后是Application
如果都没有,EL会进行优化,本来是输出null,EL会输出为空的字符串。
EL会进行自动的类型转换,只需要直接写,如:$ { param.count+20}
常用核心标签介绍
JSTL的核心标签共13个,从功能上可以分为4类
1.表达式控制标签,out    set   remove  catch
2.流程控制标签,if   choose   when   otherwise
3.循环标签,forEach  forTokens
4.URL操作标签,import  url  redirect
out 标签的用法
1.输出常量,
可在value属性中直接赋值
2.输出变量
变量不存在的时候可以配合default属性输出默认值,还可以通过escapeXML控制转移字符的输出方式


set标签的用法

1.存值到scope中,
可以将值以变量的形式存放在指定的范围中
2.存值到Javabean的属性中

需要配合target属性指定对象并且通过propety属性指定要赋值个对象中的哪个属性

remove标签的用法:去掉某个变量

catch标签的用法:catch标签中可以包含那些容易出错的JSTL标签,类似于try  catch语句


流程控制标签

if 标签的用法,同程序中的if作用相同,用来实现分支条件控制
test属性用于存放判断的条件,一般用EL表达式来编写
var指定名称用来存放判断的结果类型为true或false
scope用来存放var属性存放的范围


choose,when,otherwise标签的用法

通常这三个标签被放在一起配合使用
1.<c:choose>标签嵌套在<c:when>和<c:otherwise>标签的外面作为他们的付标签来使用
2.choose和when标签也可以一起组合使用
forEach标签的用法
根据循环条件遍历集合中的元素
1.var设定变量名用于存储从集合中取出的元素
2.items指定要遍历的集合
3.begin,end用于只当遍历的起始位置和终止位置
4.step指定循环的步长
5.varStatus通过index,count,first,last几个状态值,描述brgin和end子集中的元素的状态
forTokens标签的用法,用于浏览字符串,并根据指定的字符将字符串截取
items属性指定被迭代的字符串
delims属性指定使用的分隔符
var属性指定用来存放遍历到的成员
类似于forEach的操作


URL操作标签

import标签的用法
可以把其他静态或动态文件包含到本JSP页面
-同<jsp:include>的区别为:只能包含同一个web应用中的文件,而<c:import>可以包含其他web应用中的文件,甚至时网络上的资源url,被导入资源的URL路径如果是在相同服务器下的其他web工程,必须以"/"开头
var:以String类型存入被包含文件的内容
scope:var变量的JSP范围
charEncoding:被导入文件的编码格式
varRead:以Reader类型存储被包含文件内容


redirect标签的用法

该标签用来实现请求的重定向,同时可以在url中加入指定的参数
-url指定重定向页面的地址,可以是一个String类型的绝对地址或相对地址
-context用于导入其他web应用中的页面


url标签的用法

-该标签用于动态生成一个String类型的URL,可以同<c:param>标签共同使用,也可以使用html的<a>标签实现超链接

value:表示url路径值

var :将url路径存储在变量中

scope: var变量的范围


尝试用七牛云上传图片

先开通对象存储,新建一个存储空间,类似于阿里云的 Bucket 

添加依赖:

<dependency>
 <groupId>com.qiniu</groupId>
 <artifactId>qiniu-java-sdk</artifactId>
 <version>7.2.2</version>
</dependency>

参照官网的文档,写测试代码:

@org.junit.Test
   public void send1(){
//构造一个带指定Zone对象的配置类
       Configuration cfg = new Configuration(Zone.zone0());
//...其他参数参考类注释

       UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传
       String accessKey = "your access key";
       String secretKey = "your secret key";
       String bucket = "task7";
//如果是Windows情况下,格式是 D:\\qiniu\\test.png
       String localFilePath = "C:\\Users\\kelis\\Pictures\\Saved Pictures\\Z.jpg";
//默认不指定key的情况下,以文件内容的hash值作为文件名
       String key = null;

       Auth auth = Auth.create(accessKey, secretKey);
       String upToken = auth.uploadToken(bucket);

       try {
Response response = uploadManager.put(localFilePath, key, upToken);
           //解析上传成功的结果
           DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
           System.out.println(putRet.key);
           System.out.println(putRet.hash);
       } catch (QiniuException ex) {
Response r = ex.response;
           System.err.println(r.toString());
           try {
System.err.println(r.bodyString());
           } catch (QiniuException ex2) {
//ignore
           }
}
}

需要注意zone对象和区域的关系,也就是新建存储空间是选的区域,如华东的是Zone.zone0(),具体的可以在文档中查看

your access key和your secret key可以在个人面板->密钥管理中查看

执行结果:

测试成功


明天的计划

将各个功能整合进任务代码中


遇到的问题



收获

加深了对JSP的认识



返回列表 返回列表
评论

    分享到