jsp笔记一
jsp的页面元素
脚本
- <% %> 局部变量,java语句
- <%! %> 全局变量,定义方法
- <%=输出表达式 %>
通常,修改web.xml、配置文件、java 需要重启tomcat服务
如果是修改 jsp\html\css\js,不需要重启
注释
- html注释
- java注释 // /.../
- jsp注释 <%-- --%>
jsp指令
<@page %> 定义页面的依赖属性,如脚本语言,error页面,缓存需求等
<@include %> 包含其他文件
<%taglib %> 引入标签库的定义,可以是自定义标签
page指定的属性
- language:jsp页面使用的脚本语言
- import: 导入类
- pageEncoding: jsp 文件自身编码
- contentType: 浏览器解析jsp的编码
jsp行为
JSP行为标签使用XML语法结构来控制servlet引擎。它能够动态插入一个文件,重用JavaBean组件,引导用户去另一个页面,为Java插件产生相关的HTML等等。
行为标签只有一种语法格式,它严格遵守XML标准:
<jsp:action_name attribute="value" />
语法 | 描述 |
---|---|
jsp:include | 用于当前页面中包含静态或动态资源 |
jsp:userBean | 寻找和初始化一个javaBean组件 |
jsp:setProperty | 设置JavaBean组件的值 |
jsp:getProperty | 将JavaBean组件的值插入到output中 |
jsp:forward | 从一个jsp文件向另一个文件传递一个包含用户请求的request对象 |
jsp:plugin | 用于在生成的HTML页面中包含Apple和JavaBean对象 |
jsp:element | 动态创建一个XML元素 |
jsp:attribute | 定义动态创建的XML元素的属性 |
jsp:body | 定义动态创建的XML元素的主体 |
jsp:text | 用于封装模板数据 |
jsp隐含对象
JSP支持九个自动定义的变量,江湖人称隐含对象。
对象 | 描述 |
---|---|
request | 请求对象 |
response | |
out | 向客户端输出内容 |
session | |
application | |
config | |
pageContext | |
page | |
Exception | Exception类的对象,代表发生错误的JSP页面的对应的异常对象 |
session对象
方法 | 返回值类型 | 说明 |
---|---|---|
setAttribute(String key,Object value) | void | 一键值对的形式保存对象值 |
getAttribute(String key) | Object | 通过键获取对象值 |
getID() | String | 获取sessionId |
invalidate() | void | 设置session对象失效 |
setMaxInactiveInter | void | 设置session的有效期 |
removeAttribute(String key) | void | 移除session中的属性 |
Cookie 与 Session的比较
- Session 是在服务端保存用户信息,Cookie是在客户端保存用户信息。
- Session 中保存的是对象,Cookie中保存的是字符串
- Session 对象随会话结束而失效,Cookie则可以长期保存在客户端
- Cookie 通常用于保存不重要的用户信息,重要的信息使用session保存
创建Cookie对象
Cookie cookieName=new Cookie(String key,String value);
写入Cookie
Response.addCookie(cookieName)
读取Cookie
Cookie[] cookies=request.getCookies();
getCookies() 返回一个Cookie对象组(JSON格式,类似于字典)
getName() -> 获取键(key)
getValue() -> 获取值(Value)
所以取值时需要遍历数组
在读取Cookie时,为了避免空指针异常,在循环Cookie数组时先对数组进行非空判断
关键代码
<%
Cookie[] cookies = request.getCookies();
String user=””;
if(cookies != null){
For(int i=0;i<cookies.length;i++ ){
If(cookies[i].getName.equals(“user”)){
User=cookies[i].getValue();
}
}
}
%>
方法 | 返回值类型 | 说明 |
---|---|---|
setValue(String value) | void | 创建Cookie后,为Cookie赋值 |
getName() | String | 获取Cookie的名称 |
getValue() | String | 获取Cookie的值 |
getMaxAge() | int | 获取Cookie的有效期,以秒为单位 |
setMaxAge(int expiry) | void | 设置Cookie..... |
- Tip
通常情况下expiry参数应为大于0的整数,表示Cookie的有效时间。
如果设置expiry参数为0,表示删除Cookie
设置expiry参数为-1或不设置,表示Cookie会在当前窗口关闭后失效
application 内置对象与全局作用域
application对象常用方法(setAttribute(),getAttribute)
page作用域与 pageContext 对象
page作用域的数据只能在本页面中访问
,在该作用域内可以使用pageContext对象的setAttribute()和
getAttribute()方法来访问该类型作用域数据
不同作用域的对比
name | Description |
---|---|
page作用域 | 只在当前页面有效,一旦离开当前页面,则该范围内创建的对象将无法访问 |
request作用域 | 在同一个请求范围内可以访问该范围内创建的对象,一旦请求失效,则创建的对象也失效 |
session作用域 | 在会话没有失效或者销毁前,都可以访问该范围内的对象 |
application作用域 | 在整个web应用服务没有停止前,都可以从application中进行数据的存取 |