TODO
前言
对前端了解不多,在Web开发的学习中,时不时会遇到各种各样的前端语法的困扰,多种相似的表达式混用难免蛋疼。虽说已有各种框架解决了对这些前端脚本的解析,但本文旨在列举和梳理其中的知识体系,以免再混淆。
JSP语法与JSP脚本
此处参考了博客https://segmentfault.com/a/1190000013152739#articleHeader5
JSP(Java Server Page), Java服务器界面,是一种特殊的简化的Servlet,主要特点是JSP中java代码可以和页面html代码组合使用。此处不细讲其工作原理和内容。本文主要关注其语法与脚本书写。
JSP初印象
在最简单的Web开发中,IDE初始生成的JSP页面index.jsp,再页面中使用Java输出Hello World如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
String s = "HelloWorld";//此处为Java代码
out.println(s);
%>
</body>
</html>
JSP语法
从上面代码看到,JSP中包含了HTML代码和Java代码
JSP脚本
JSP中的Java代码就是JSP脚本,必须有<% %>
括起来,否则jsp会将其解析为HTML代码,出现解析偏差或出错。
1 | <% |
JSP内容输出表达式
<%= %>
用于在JSP中输出一个Java变量
1 | .... |
JSP内容定义表达式
<%! %>
JSP定义表达式,用于成员变量的定义,在Java代码块里的是局部变量。但已经没人用了
JSP注释
<%-- --%>
不起任何实际作用
还可以注释 <% %>
在java代码中依然可以使用java支持的注释:
1 | // |
JSP指令
JSP用于声明JSP页面的相关属性,语法为
1 | <%@指令 属性名="值" %> |
如在JSP初印象中,制定了JSP的语言,文档类型,编码类型
1 | <%@ page language="java" contentType="text/html; charset=utf-8" |
JSP指令还可用于在jsp中引入java类
1 | <%@page import="java.util.Random"%> |
EL表达式
EL(Expression Language)表达式语言,是为了使JSP写起来更加简单。不属于编程语言。用于查找作用域中的数据,然后对它们执行一些简单的操作,用于对jsp标签的属性赋值
在MVC模式中, JSP只充当视图,视图的任务就是显示响应,不需要在JSP中做任何关于程序控制和业务逻辑的事情。所以在JSP页面中应该尽可能少的、或者是完全不出现Java代码。来自百度百科
EL能干什么
可以从域对象(request, session, application, pageContext等)中取得数据。
无需导包,可直接在JSP中使用。
EL表达式语法结构
1 | ${expression} |
EL举例
1 | ${username} 取得request里面名字为username的属性值(如果不存在返回空字符串) |
运算符号最好在{}内部实现,比如${a.count*b.price},而不能写成${a.count}
*
${b.price}
JSTL
此处参考了博客https://blog.csdn.net/qq_42350238/article/details/88994988
JSTL(JavaServer Pages Standard Tag Library,JSP标准标签库)是一个不断完善的开源的JSP标签库,通常与EL表达式合作实现JSP页面的编写,让JSP写起来更加简单,优雅。可以让JSP页面在不写java代码的情况下实现取数据。
jstl是一个标签库,什么是标签库?可以只用一些自定义有自定义功能的标签。
其实EL+JSTL标签比java代码好用,就前端来说,而且它可以直接操作json类型,完美适应。
JSTL的引入
下载地址
http://tomcat.apache.org/taglibs/standard/
要使用jstl提供的标签,要先引入JSTL对应的标签库taglib
如何引入jstl标签库:(利用JSP指令的语法)
1 | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> |
就可以引入对应想要的标签库,其中
- uri:JSP标签的命名空间
- prefix:命名空间的前缀(简称)
JSTL的使用(常用标签举例)
跟数据存储相关: set, out, remove
1 | <c:set var="username" value="123" scope="request"></c:set> |
条件标签
if 语句
1 | <c:if test="${age>=19 }"> |
if else 语句
1 | <c:choose> |
循环标签
1 | <c:forEach items="${lists }" var="user"> |
JSON
JSON (JavaScript Object Notation, JS对象表达) 是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据. 详细介绍可参考http://www.json.org/json-zh.html
JSON只用于存储可被解析的数据,其本质是一个字符串
JSON出现之前,通常用XML来传递数据。XML也是一种纯文本格式,所以它适合在网络上交换数据,但由于XML规范繁琐复杂,
格式非常简单,有两种结构。
JSON两种结构
对象
对象结构以{
大括号开始,以}
大括号结束。内部由多个键值对构成,键值对之间由,
分隔:
1 | { |
相当于一个JavaBean,对象中包含了一个
数组
数组类型可以是对象类型,即元素是对象。由方括号[ ]
规定。
1 | [ |
JSON注意事项
JSON规定字符集必须是UTF-8。
为了统一解析,JSON的字符串规定必须用双引号
""
,Object的键也必须用双引号""
。
此处参考了廖雪峰的官方网站对JS的讲解
JSON字符串与JSON对象辨析
字符串:指使用“”双引号或’’单引号包括的字符。例如:var comStr = ‘this is string’;
json字符串:指的是符合json格式要求的js字符串。例如:var jsonStr = “{StudentID:’100’,Name:’tmac’,Hometown:’usa’}”;
json对象:指符合json格式要求的js对象。例如:var jsonObj = { StudentID: “100”, Name: “tmac”, Hometown: “usa” };
此处参考了mcgrady的博客
Ajax
Ajax, 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
最常用的应用就是在前端注册信息时,不刷新网页的情况下校验是否存在重复的用户名,或者校验输入的邮箱格式是否正确。
作用:在不进行页面跳转或者页面刷新的情况下,向服务器发起请求,并取得服务器响应的数据。
应用领域:数据校验
优点: ①用户体验比较好(不需要页面跳转,速度快) ②服务器压力比较小
jQuery发起Ajax请求
1 | $.ajax({ |
其他参数和用法http://api.jquery.com/jQuery.ajax/
JavaScript发起Ajax请求
1 | var xmlhttp = new XMLHttpRequest(); |
其他参数和用法http://www.w3school.com.cn/ajax/ajax_xmlhttprequest_send.asp