jsp执行原理
浏览器发出请求,服务器找到jsp资源,将jsp资源翻译成java临时文件,java文件编译成.class文件,
最终执行class文件_jspService方法中的内容,jsp中所有的内容都是以_jspService方法中以响应流的形式来呈现的
注意:
服务器运行时不生成java文件,只有请求jsp时才生成。
无论错误都生成了java文件and class文件,
只有编译时错误则无法编译生成.class
html执行原理:
浏览器发出请求,服务器找到html资源,直接将找的的html资源响应回浏览器,浏览器直接解析html
jsp临时文件存放
H:\apache-tomcat-7.0.67\work\Catalina\localhost\_\org\apache\jsp
jsp字符编码设置及环境搭建
pageEncoding:
jsp页面本身的编码,生成servlet的编码
contentType="text/heml;charset=ISO-8859-1":
设置响应流的字符编码
<meta http-equiv="Context-Type" content="text/html;charset=ISO-8895-1">:
设置响应头信息的编码(服务器告诉浏览器以什么字符集打开)
设置模板jsp:
window>preference>web>jspFiles >>选择encoding为utf-8
jsp绝对路径
http://localhost:8080/项目名/绝对路径
String basepath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/"
在head下面加入<base href="<%=basePath%>">
则所有的相对路径都失效,所有的基础路径变成了basePath+什么什么的,(虽然basePath省略了,但是它还存在)
eclipse中的浏览器,base标签是不支持的
--------------------------------------------------------------------
在webapps目录下,相对路径与basepath相同,所以变化不大,实验的话,在webapps下面建立文件夹进行实验
模板添加路径
<%%>与<%!%>区别
<%%>声明的变量,在_JSPservice方法中,属于局部变量(在jspService 方法里面)
<%!%>声明的变量,为成员变量(在jspService方法外面)
<%-- --%>浏览器看不到的注释
<!-- -->浏览器能看到
<%= %>等价于out.print()
指令
1、page声明jsp页面的一些属性
contentType:页面类型,响应流字符集
language:可以嵌套的语言类型
session:default true ;默认可以使用session
isELIgnored:是否忽略el表达式,默认是false(不忽略el)
errarpage="页面路径" 如果当前页面错误了,跳转到指定页面,指定页面显示信息<%=exception.getMessage()%>
isErrorPage="false"默认是false,修改为true,与上面对应
2、include静态包含(统一生成一个java文件)
file:包含的那个文件(注意变量重名)
3、taglib导入标签库jstl标签库
<%@ taglib prefix="前缀名" uri="名称空间"%>
动作
<jsp:include/>各自生成java文件,然后合并
<jsp:useBean/>
<jsp:setProperty/>
<jsp:getProperty/>
<jsp:useBean id="ids" scope="page" class="com.xiandian.cloud.pojo.Tone"/>
<jsp:setProperty property="name" name="ids" value="ooooo"/>
<jsp:setProperty property="password" name="ids" value="wwww"/>
或者:<jsp:serProperty property="*" name="ids"/>自动赋值
<jsp:getProperty property="name" name="ids"/>
<jsp:getProperty property="password" name="ids"/>
id:唯一标识符
class:pojo路径名
scope:作用域
property:pojo中对应的属性
name:对应的bean的id
<jsp:forward page="xxxx"/>
<jsp:param/>使用forward传参数,用request.getParmeter("")获取对应的值;
四大域对象
pageContext当前页面域
request一个请求域
session一个会话域
application上下文环境域
pageContext
可以调用其他的内置对象
el表达式的隐藏对象,只有这个,没有什么request,response……
升域:pageContext.setAttribute("key","name",pageContext.APPLICATION_SCOPE);
为什么UUID不重复?为什么主键自增不用?
为了防止重复,可以用时间戳(高并发不可用)
再防止重复,可以用时间戳+随机数
uuid构成是时间+随机数+本机的机器码。所以一定不重复
主键自增是mysql特有的,不建议使用
table隔行辨色
添加thead tbody
<thead>
表头
</thead>
<tbody>
$("#tBody>tr")拿到所有的tr.addClass("xxx");
$("#tBody>tr:event")取奇数行
$("#tBody>tr:odd")取偶数行
ThreadLocal对象
在线程中存取值,类似于域对象的操作
set:存值
get:取值
remove:删除值
tomcat有线程池概念,注意值不用的时候remove了
对于超链接标签a
1、可以使用get方法提交数据,因为a比较单调,使用post的话属性值就不能提交
2、使用session对象建立会话,进行attribute赋值提交