保存在服务器端的动态网页的一种技术,必须借助应用服务器进行访问
jsp包括:html / css / js / java
jsp实际上是一个java文件,服务器加载页面前,会将jsp文件转换为.java文件,然后编译成.class文件运行,可以在Tomcat-work-Catalina-...目录中找到
若没有特殊标记,jsp标签就是html标签
<%@ 头部声明 %>
<% java 代码 %>
<%= java 对象名 %>用于在页面中输出值
<%! 定义函数和变量 %>建议在这里面定义,当然也可以在其他地方定义(java代码部分)
注意:要搞清楚 哪些在服务器端跑(java代码) 哪些在客户端跑(HTML代码)
将信息直接输出到页面中
out.write()
out.print() 一般用这个,这个是write()的封装版,更强大
a) 浏览器发送请求的方式:
1) 地址栏输入请求的内容
http://localhost:8080/day02/demo02.jsp?name1=value1&name2=value2...
2) 提交表单
form action , method
form control , name
3) 超链接
4) ajax 待书写。。。。
请求方式的区别 之 get / post
1) get在浏览器地址栏可以看见数据,post则不行
2) get请求是把数据放在请求头中的,post是放在请求体中的,get请求的大小上限为 2kb , post请求的大小默认是无上限
3) get传送的数据是原始未加密的数据,post传送的数据是经过加密的
接受请求: 无论表单提交方式 是 get / post
1) String request.getParameter( String name );
2) String[ ] request.getParameterValues( String name );
请求乱码的处理:
request.setCharacterEncoding("utf-8");
响应乱码的处理:
response.setCharacterEncoding("utf-8");
响应分为 响应头 和 响应体
响应头 中 包含 响应码 response code
200( OK ) 302(重定向) 304(未修改)
400 401 403 404
500 501 502 503
整个应用程序中只存放一份,所有用户 公用同一份的
一种 无状态的协议,即客户端每次发送请求,都会将自身独有的信息(cookie)发送给服务器,告诉服务器“我是谁”,在这之后客户端与服务器相互之间就不认识了(没有交互),也就是说,客户端发送一次请求,服务器响应之后,客户端显示完数据后,服务器关闭(网络断链)客户端页面依然存在,直到客户端发送下一次请求
一次会话的过程中,可以在服务器端保留变量
session 最大的特征是 可以跨页面存储变量
// 创建 session
session.setAttribute( String name , Object value );
// 使用 session
Object session.getAttribute( String name );
// 手动销毁 session
session.removeAttribute( String name );
session 的 生存周期:
1) session 在客户端持续一段时间没有发送请求后,会自动销毁 , 默认是30分钟
server.xml
2) 服务器关闭 / 重启
3) 客户端关闭
session 是针对每个客户端单独一份的 , 互相不干扰的
config
page
pageContext
exception
"jdbc:mysql://localhost:3306/day02?characterEncoding=utf8&useUnicode=true&useSSL=true&timeZone=PRC"
response.sendRedirect( String url )
把响应发送到客户端,响应头中 含有 响应码:302 , url
request.getRequestDispatcher( String url).forward(request,response);
是存储变量的地方
[注意]:数据存储在 客户端的浏览器上
用户 可以在浏览器上进行查看 和 修改 document.cookie
[注意]: 客户端再向服务器发送任意请求的时候,都会自动把浏览器上所存储的cookie 打包, 打包在请求头部 ,发送到服务器上去
cookie 是存在浏览器上的,每个 [域] domain 单独一份的
www.baidu.com
map.baidu.com
zhidao.baidu.com
image.baidu.com
image.baidu.com/fengjing
Cookie 的 属性:
name
value
domain 默认是存放在 服务器的 根目录下 "/"
maxAge 获取 / 设置 cookie 的最大生存时间, 时间到,在客户端自动销毁
服务器接受 cookie :
Cookie[ ] request.getCookies
服务器创建 cookie :
Cookie cookie = new Cookie( String name , String value );
服务器通过 响应 response.addCookie ( Cookie cookie ) , 把 新增/修改过的
cookie 发送回客户端,客户端收到响应后,自动从响应头中解析cookie
的内容,更新本地的cookie
服务器删除cookie
重新给该cookie 设置 过期时间,让其立刻过期即可
JSESSIONID ?????
SESSION 中存放的是 键值对, COOKIE 中 也是一样
SESSION 存放在 服务器上, COOKIE 存放在 客户端上
SESSION 可以单独删除, COOKIE 是 每一对键值对,都可以单独设置过期时间
SESSION 默认是 把 SESSIONID 存放在 COOKIE 中的,如果浏览器禁用 COOKIE , 会 导致 SESSION 无法使用
如果 禁用了 COOKIE 仍旧 希望使用 SESSION , 可以自己在请求中添加 JSESSIONID
servlet 提供了方法来帮我们实现该功能
String newURL = response.encodeURL ( String originalURL );
该方法判断浏览器是否禁用了 cookie, 如果禁用,则在url中添加jsessionid ,
实现 session 的功能