JSP
什么是JSP(JSP就是Servlet)
java service page :java服务(动态)网页
JSP就是Java中用来做动态网页的技术
Servlet : JAVA代码(主) + HTML代码
JSP : JAVA代码 + HTML代码(主)
以后我们会慢慢的达到一个目标:servlet里面不要写HTML代码,jsp里面不要写java
JAVA就是Servlet
JSP的语法
注释:
<!-- 我是一个HTML的注释 -->
<%-- 我是一个JSP的注释 --%>
HTML的注释用户可以查看到(将注释直接打印在页面)
JSP注释用户看不到(在JSP翻译成Servlet的时候注释就已经没有了)
语法:<%=表达式%>
作用:输出数据到页面上(实际上就是调用输出流打印到页面上) out.print(表达式);
语法: <% 这里面写代码 %>
作用:它会翻译到service方法里面
语法:<%!Java代码 %>
作用:它会把代码翻译到这个Servlet类里面
JSP三大指令(考点)
<%@ 指令名称 key="value" key="value" ... >
Page : 页面指令
Include : 包含指令
-------------------------------
Taglib:标签指令
Page :页面指令
language:语言(这个页面所使用是什么语言)
contentType:设置页面输出的类型(里面还可以把编码写进去)
pageEncoding:页面编码(备胎)
当contentType没有编码的时候,就使用pageEncoding的编码
import :相当于导包
errorPage="/myerror.jsp" :如果当前页面出错,就跳转到对应的页面
isErrorPage="true" :这个页面是否是错误页面(当我们要在页面上直接使用exception的时候就可以加上它)
出错之后跳转到某个页面(这个我们以后会用到):
web.xml中去配置错误信息
<error-page>
<error-code>404</error-code>
<location>/myerror.jsp</location>
</error-page>
Include :包含指令
特点:将整个页面的所有内容全部拷贝到一个文件中
问题:拷贝的内容中是包含有网页的结构
包含的文件中,可以不写结构
动态包含:jsp中的动作<jsp:include>
<jsp:include>
特点:
不会将包含的内容拷贝到一个文件
而且会将包含的内容单独进行编译生成
内省
获取某个对象中存在的方法、属性等信息
introspecter
JavaBean:从GUI编程中来的概念
web开发中不同的技术,JAVABean标准是不一样的
POJO:
1.可序列化
2.公共无参的构造
3.get/set
A类继承了B类继承Object
getBeanInfo(A.class):可以获取到继承的父对象中可以被继承的属性、方法
getBeanInfo(A.class,Object.class)
属性:其实就是类中声明的字段,而且必须有get/set方法
BeanInfo对象中可以获取到方法的信息、属性的信息
getMethodDescriptors,返回一个MethodDescriptors[]
getMethod
getPropertyDescriptors
getReadMethod:获取get方法
getWriteMethod:获取set方法
A类去调用A中的方法
A a=new A()
a.方法();
B类中调用B中的方法:
B b=new B();
b.方法();
反射就可以把步骤抽取出来:
1.获取字节码对象
2.创建对象
3.获取方法对象
4.调用方法
public Object executeMethod(Class<T> t,String methodName){
1.获取字节码对象
2.创建对象
3.获取方法对象
4.调用方法
}
get方法有返回值而且是无参
set方法无返回值而且是有参
EL表达式+JSTL标签
EL表达式:<%= %>数据来源主要是从域对象中来
EL语法:
${ 数据名称 }:如果获取pageContext中的数据
问题:不同域对象中存在相同的数据名称
${ 数据名称 }:pageContext>request>session>application【servletContext】
${ 域对象Scope.数据名称 }
问题:数据名称中有.怎么获取?
JSTL标签
第三方开源的标签库
导包 jstl.jar&standar.jar
1.页面先引入jstl的引用
<c:if test="条件">相当于后台中if(条件)
可以在标签之间嵌套,还可以在标签内嵌套
<c:choose> 相当于if-else、switch
<c:foreach>遍历,根据属性不一样确定遍历的方式不一样
for(int i=0;i<5;i++)
i:当前循环的变量
<c:foreach var="i" begin="" end="" >相当于<=
遍历list:
foreach(类型 变量: list)
<c:foreach var="i" items="" varStatus="a" >items属性中就相当于你的数据源
JS语法
JS的基本入门语法【按照JAVA语法】
-
-
- JS的目的:针对网页中的标签进行一个CRUD的操作
- JS的三种写法【CSS的三种写法】
- 行内JS:写在标签内的JS代码
- 前端页面中单引号、双引号都是字符串
- javascript:alert(数据)
- javascript:伪协议
- 特点:行内JS太麻烦,如果有相同效果的JS,不能实现代码覆写
- 行内JS:写在标签内的JS代码
-
页面内JS
-
-
-
-
- 页面内定义一个<script>标签
- 在<script>标签内写JS代码
- 页面内的JS代码的执行顺序:从上往下【重点】
- 找不到HTML标签
- 特点:在当前页面内的相同JS代码效果是可以重用
-
-
-
外部JS【多个页面重用】
-
-
-
-
- 定义一个外部的JS文件
- 将外部JS文件和当前页面关联
- <script type="text/javascript" src="js文件的路径"/>
- 特点:在不同的页面中,可以使用相同的JS代码
-
-
-
定义变量
-
-
-
- 声明变量的类型只有一个:var【弱类型】
- 强类型和弱类型的区别?
- 强类型:就是在变量声明的时候就已经知道变量的类型
- 弱类型:弱类型变量的类型是靠值决定
- 方法的定义
- function 方法名(参数列表){ JS代码 }
- 不是靠参数去区别
- 方法调用找的是最后一个
- function 方法名(参数列表){ JS代码 }
-
-
JS中对象
-
-
- 自定义对象
- 定义对象使用的是fucntion关键字
- 构造:new 方法名()
- 方法:方法名()
- 对象:方法名
- 临时给一个创建的对象添加方法
- new一个对象
- 使用创建的对象关联一个匿名函数
- 永久性的添加一个方法给对象
- 定义对象的时候使用this
- 关联关系需要在function中就已经定义好了
- 关联关系需要在function中就已经定义好了
- 定义对象的时候使用this
- 定义对象使用的是fucntion关键字
- 自定义对象
-
内置对象【本地对象】
-
-
-
- Array【数组/当作JAVA中的集合使用】
- 声明
- var 变量名=[元素,元素2];
- 将数组转换成字符串
- join()
- 默认是逗号
- 不要逗号,就自定义一个参数
- join()
- 将数组元素反转
- reverse
- 针对数组的添加、删除、修改
- 头
- shift删除
- unshift添加一个或多个
- 尾
- pop:删除
- push:添加
- 任意位置
- splice(下标,个数,添加元素【可选】)
- 头
- 声明
- Array【数组/当作JAVA中的集合使用】
-
-
global【全局】
- 编码、解码
- parseInt:将数据转换成整数【一开始就转换不了就NAN】
- eval:将字符串作为JS代码去执行
- encodeURI/decodeURI
- encodeURIComponent/decodeURIComponent【可以将符号转换】
Math【数学运算:随机数】
- ceil:向上取整,可以用于分页
- 随机数:取整(随机数*取值范围)+初始值
String
- 分割字符串
- 转换大小写
- toLowerCase
- toUpperCase截取字符串
- substr(下标,长度)
- substring(起始下标,结束下标)
- split
- 转换大小写
- 获取ASCII/将ASCII转换成字符
- charCodeAt:获取字母的ASCII
- fromCharCode:将ASCII转换成字符
- Boolean
- Number【数字类型】
- NAN:非数,自身不相等
- isNaN:是否是非数
- Infinaty:无穷
- isFinate:判断数据是否有限
- NAN:非数,自身不相等