jsp页面元素
a.脚本Scriptlet
i. <%
局部变量,java语句
%>
ii. <%!
全局变量,定义方法
%>
iii. <%= 输出表达式%>
b.指令
page指令
<%@ page ....%>
page:指定的属性
language:jsp页面使用的脚本语言
import : 导入类
pageEncoding: jsp文件自身编码 jsp->java
contentType: 浏览器解析jsp的编码
c.注释
HTML注释 <!-- --> 可以查看源码
java注释 // /* */
jsp注释 <%-- --%>
jsp九个内置对象
out: 向客户端输出
pageContext
request:请求对象, 存储客户端的请求信息
String getParameter(String name): 字段值-》value
String[] getParameterValues(String name) (checkbox)
setCharacterEcoding("编码"): 设置请求编码
getRequestDispatcher("b.jsp").forward(request, response); 请求转发的方式跳转页面 a->b
getServletContext(): 获取项目的ServletContext对象
eg:
注册
register.jsp, show.jsp
get提交方式: method = “get” 和地址栏请求、超链接
get与post请求区别:
a. get在在地址栏显示请求信息(地址栏容纳信息有限),post不显示
b. 文件上传使用post
统一请求的编码request
get出现乱码:
1.每个变量改变编码
2.修改server.xml URIEncoding = "utf-8"
post出现乱码:
request.setCharacterEncoding("utf-8");
response 响应对象
提供方法:
void addCookie (Cookie cookie); //服务器向客户端增加cookie对象
void sendRedirect (String location): throws IOException;页面跳转的一种方式(重定向)
void setContextType(String Type): 设置服务器响应编码
eg: 登录
重定向和请求转发的要求:
| 请求转发 | 重定向
|
地址栏是否改变
| 不变 | 变化 |
是否保留请求数据 | 保留 | 不保留 |
请求次数 | 1 | 2 |
跳转发生的位置 | 服务端 | 客户端第二次跳转 |
session(服务端)
会话: 一次开始到关闭
session机制
a.存储在服务端
b.session在同一个客户请求时共享
c.客户第一次请求时产生一个sessionId并复制给cookie的jsessionId发给客户端
实现jsessionId与sessionId的对应
session方法
String getId(): 获取sessionId
boolean isNew(): 判断是不是新用户
void invalidate(): 使session失效(退出、注销)
void setAttribute()
Object getAttribute()
void setMaxInactiveInterval(): 设置最大有效,非活动时间
int getMaxInactiveInterval(): 获取最大有效非活动时间
cookie(客户端,不是内置对象, new ):服务端产生,发送给客户端对象
JSESSIONID的cookie服务器会产生
相当与本地缓存
提高访问效率,安全性差
Cookie: key->value
javax.servlet.http.Cookie
public Cookie (String name, String value)
String getName()
String getValue()
void SetAge(int expiry); 最大有效期
服务端发送给客户端
response.add(Cookie cookie)
页面跳转(转发 重定向)
客户端获取Cookie:
request.getCookies();一次性获取全部Cookies
产生一个JSESSIONID的cookie
eg.使用Cookie自动记住用户名
cookie 和 session的区别
session | cookie | |
保存的位置 | 服务端 | 客户端 |
安全性 | 较安全 | 较不安全 |
保存的内容 | Object | String |
内容
application 全局对象
String getContextPath(): 虚拟路径
String getRealPath(String name): 绝对路径
config
page
exception
四种范围对象(小->大)
pageContext jsp页面容器 当前界面有效
request 请求对象 同一次请求有效(请求转发有效, 重定向无效)
session 会话对象 同一次会话有效
application 全局对象 当前项目全局有效 关闭服务 其他项目无效
多个项目共享、重启之后仍然有效:JNDI
以上四个对象共有的方法
Object getAttribute (String name): 根据属性名
void setAttibute(String name, Object obj) 设置属性值(新增 修改)
void removeAttribute (String name): 根据属性删除对象
尽量使用范围小的 , 范围越大 , 性能损耗越大